关于微信支付成功回调参数后,怎么给微信返回值

支付宝支付与微信支付服务端回调notify_url数据的区别
这两天优化了一下支付宝支付和微信支付订单回调的问题,之前我们的订单都是用手动回调给服务器,现在改成支付宝和微信原生的异步回调,结果并没有像我们想象的那么简单,支付宝是很顺利的解决回调,用一般的方式接收即可,但是微信接收时用普通的接收方式是不行的必须用另一种方式,如下且看:
&支付宝和微信的回调地址
notifyUrl = RequestUrl.BASE_URL+&order/order_payment&+&?order_code=&+orderC
& 服务器端是开发,因此此处以PHP为例:
& 支付宝接收回调的方法
* sCreater
* function:订单支付完成后回写(支付宝支付回调)
* @return json
public function actionOrder_payment(){
$getData = $this-&_requestD
parent::write_log('order/order_payment',$getData);
if (empty($getData['order_code'])){
$data = array(
'error_code' =& 1,
'error_msg' =& '参数错误',
'data' =& ''
parent::json_encode($data);
if (!empty($getData['trade_status']) || $getData['trade_status'] =='TRADE_SUCCESS') {
LinshiOrderMaster::confirmPayment($getData['order_code'],$getData['price'],'2',$getData['trade_no']);
$data = array(
'error_code' =& 0,
'error_msg' =& '支付成功',
'data' =& ''
parent::json_encode($data);
& 支付宝服务器返回的数据
&_id&: ObjectId(&55ec4550c6fdc2f03d8b48c5&),
&name&: &order/order_payment&,
&server_url&: &http://api.xxx.**/v1.5.4/order/order_payment&,
&accept_data&: {
&order_code&: &64&,
&discount&: &0.00&,
&payment_type&: &1&,
&subject&: &陈*梅&,
&trade_no&: &9256&,
&buyer_email&: &*********@qq.com&,
&gmt_create&: & 18:29:13&,
&notify_type&: &trade_status_sync&,
&quantity&: &1&,
&out_trade_no&: &257&,
&seller_id&: &1245&,
&notify_time&: & 21:53:20&,
&body&: &课程支付&,
&trade_status&: &WAIT_BUYER_PAY&,
&is_total_fee_adjust&: &Y&,
&total_fee&: &0.01&,
&seller_email&: &xxxpay@xxx.biz&,
&price&: &0.01&,
&buyer_id&: &5312&,
&notify_id&: &4e270bbaa6f2eac2c39e3q&,
&use_coupon&: &N&,
&sign_type&: &RSA&,
&sign&: &******4GyXJaugFZqoiRQ4DE5VOn/EQjohiCulI5jRuogGiFb7ncZv/FjgZVD00QrnDGxYT8+XUAKThAQ01kCEHJJMLKHMxix9NXdeh8thXcDRBX/MJOnc4C/J8tk+U1D4VwkL1c [...]&
&header&: [
&time&: &21:53:20&
& 微信接收回调方法
* sCreater: miki
* function:订单支付完成后回写数据库(微信支付回调)
* @return json
public function actionOrder_wx_payment(){
= $GLOBALS[&HTTP_RAW_POST_DATA&];
$getData = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
parent::write_log('order/order_wx_payment',$getData);
if (empty($getData['order_code'])){
$data = array(
'error_code' =& 1,
'error_msg' =& '参数错误',
'data' =& ''
parent::json_encode($data);
if (!empty($getData['result_code']) || $getData['result_code'] =='SUCCESS') {
LinshiOrderMaster::confirmPayment($getData['order_code'],$getData['total_fee']/100,'1',$getData['transaction_id']);
$data = array(
'error_code' =& 0,
'error_msg' =& '支付成功',
'data' =& ''
parent::json_encode($data);
& 微信接口返回的数据
&_id&: ObjectId(&55ed2bcdc6fdc2c83d8b4e79&),
&name&: &order/order_payment&,
&server_url&: &http://api.xxx.***/v1.5.4/order/order_payment&,
&accept_data&: {
&appid&: &wx8be381be5d594578&,
&bank_type&: &COMM_DEBIT&,
&cash_fee&: &1&,
&fee_type&: &CNY&,
&is_subscribe&: &N&,
&mch_id&: &&,
&nonce_str&: &9a3d46f63dfd8b0153ece4&,
&openid&: &*********YfgoQPliYWg&,
&order_code&: &58&,
&out_trade_no&: &5d79099fcdf499f12b4a&,
&result_code&: &SUCCESS&,
&return_code&: &SUCCESS&,
&sign&: &D2AD1EE0FAC2A94E0CE4&,
&time_end&: &37&,
&total_fee&: &1&,
&trade_type&: &APP&,
&transaction_id&: &9912&
&header&: [
&time&: &14:16:45&
& 1、回调地址之所以加了order_code=&+orderCode,主要是便于更新订单的状态,并且支付宝和微信都会自动将我们带的参数插入到原生数据一起返回给我们的服务端;
& 2、支付宝回调的方法只是普通的post接收即可;
& 3、微信回调的方法用的关键代码在 &$postStr &= $GLOBALS[&HTTP_RAW_POST_DATA&];
& (1)支付成功通知的内容可以使用 & $_GET 获取订单信息
& (2)接收微信后台发送过来的消息,该消息数据结构为XML,不是php默认的数据类型
& & $postStr = $GLOBALS[&HTTP_RAW_POST_DATA&];
& (3)使用simplexml_load_string() 函数将接收到的XML消息数据载入对象$postStr中。 &$getData = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);&
&总结:支付宝支付和微信支付回调的区别就在于他们回调的数据方式不一样,所以app服务端接收数据的方式也不一样,切记,写此博文方便大家不再走弯路,与君共享! 另外如果有方面的还请大家一起分享,一起进步。
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'输入关键字或相关内容进行搜索
调用plus.payment.request,直接就返回了成功的回调函数。然后再弹出微信支付界面。同样的代码,在ios里面没有问题,在Android的里面就出问题。云端打包也没问题,但是项目到eclipse里面本地打包就出这个问题。
楼主,能分享一下你的java代码吗??我最近也在做这个
要回复问题请先或
关注: 2 人微信支付,支付成功,收不到回调,没有回调,回调没反应的问题解决_vike_新浪博客
微信支付,支付成功,收不到回调,没有回调,回调没反应的问题解决
原创文章,转载注明出处,尊重作者,谢谢!联系邮箱,微信:codelovercc
首先排除接口上面的问题,能正常微信支付,并且成功,notify_url也填写正确.域名解析也正确.
那为什么还收不到回调?​
如果你的网站做了重定向或者URL重写.
重定向的解决:notify_url填写重定向后的URL.因为微信服务器收到301重定向是不会处理的.这里我也要吐槽一下了,微信没有遵守HTTP协议,挖着坑给我们跳,有些人一跳就是一个星期爬不起来,微信你负责么?我帮朋友看了一天,一开始我就是怀疑是这个问题,结果一直找自己代码的问题,微信你造么?!!!
下图链接为/pay/PayNotify.aspx
重定向后为/pay/PayNotify&
那么,notify_url就填写/pay/PayNotify​这个URL.
​​URL重写的解决:同上,notify_url填写重写后的URL.
重写前URL为/pay/PayNotify​.aspx重写后URL为/pay/Pay_Notify
那么notify_url就填写​/pay/Pay_Notify
博客等级:
博客积分:0
博客访问:5,451
关注人气:0
荣誉徽章:Android微信支付快速集成案例及有效解决返回值-1,android-1-android100学习网
Android微信支付快速集成案例及有效解决返回值-1,android-1
Android微信支付快速集成案例及有效解决返回值-1,android-1
商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID。由于需要保证支付安全,...
Android微信支付快速集成案例及有效解决返回值-1,android-1
商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID。由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。本文讲解Android微信支付快速集成案例及有效解决返回值-1。
下面我们参考微信官方APP端开发步骤说明,一步一步集成微信支付功能:
1、商户APP工程中引入微信JAR包,该包可以从官方微信支付demo中获得。
2、编写调起微信支付的代码
官方提供的代码如下:
final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);
请将官方提供的上面这段代码改为如下代码:
final IWXAPI msgApi = WXAPIFactory.createWXAPI(this,"wxd930ea5d5a258f4f", false);
3、支付结果回调
“参照微信SDK Sample,在net.sourceforge.simcpux.wxapi包路径中实现WXPayEntryActivity类(包名或类名不一致会造成无法回调)”,比如我的包名为.cwvs.fruit:
这里提供WXPayEntryActivity参考代码(请结合官方支付demo使用):
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{
private IWXAPI
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pay_result);
api = WXAPIFactory.createWXAPI(this, Constant.WEIXIN_APPID);
api.handleIntent(getIntent(), this);
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
api.handleIntent(intent, this);
public void onReq(BaseReq req) {
public void onResp(BaseResp resp) {
int code = resp.errC
switch (code){
case 0://支付成功后的界面
ToastUtils.showToast(getApplicationContext(), "签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、您的微信账号异常等。");
case -2://用户取消支付后的界面
//微信支付后续操作,失败,成功,取消
4、在配置文件中配置这个回调的activity
至此,微信支付Android端集成已经完成。
需要注意的是,如果errorCode总是为 -1,请尝试通过下面方法解决:
1、用提交的签名的keystore文件打包
2、清理微信的缓存
3、请根据上文的注意点,修改官方提供的代码。
版权声明:本文为博主原创文章,未经博主允许不得转载。
/Androidjc/1050412.true/Androidjc/1050412.htmlTechArticleAndroid微信支付快速集成案例及有效解决返回值-1,android-1 商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID。由...

我要回帖

更多关于 微信支付成功回调处理 的文章

 

随机推荐