微信支付Java如何判断回调

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信支付Java如何判断回调相关的知识,希望对你有一定的参考价值。

参考技术A 微信支付Java判断回调方法:
微信支付完成支付调用的时候,在传入的参数中有一个是执行支付完成之后结果回调的参数,这个回调函数就是微信调用这个接口来将支付成功的结果。

thinkphp微信支付回调是啥意思

微信支付回调就是说用户通过微信支付完毕时的返回值去判断支付结果。
通过返回的结果,去修改数据库(完成你想实现的功能)
例:用户支付成功->通过回调判断->数据库操作(为会员充值积分)
用户支付失败(或取消支付)->通过回调判断->跳转到支付失败页
参考技术A 用thinkphp框架开发了套旅游网站CMS管理系统,叫二代旅游CMS(
http://www.erdaicms.com
复制代码
),前几天对接了微信扫码付款,对接支付的过程倒是很顺利,就是从微信支付官方下载PHP的DEMO,然后把文件按照thinkphp的要求引入进来就行了,如图:

把这几个文件,重命名后,放到这个目录下,然后,在项目中,就可以引入了:

vendor('Weixin.Api');//引入
vendor('Weixin.Notify');//引入
vendor('Weixin.NativePay');//引入
$notify = new \NativePay();
$input = new \WxPayUnifiedOrder(); //调用统一下单类
$input->SetBody($order['goods_name']);
$input->SetAttach($order['goods_name']);
$input->SetOut_trade_no($order['no']);
$input->SetTotal_fee($total_fee*100);
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 7200));
//$input->SetGoods_tag("test");
$ss=S('config');
$input->SetNotify_url("".$ss['web_url']."/weixin_notify.php");
$input->SetTrade_type("NATIVE");
$input->SetProduct_id($order['goods_id']);
$result = $notify->GetPayUrl($input);
$url2 = $result["code_url"]; //这个url2就是微信支付返回的二维码地址,用phpqrcode生成下二维码就行了

上面的很简单,现在重点说下我遇到的坑,就是支付完成后的微信回调,折腾了很久,总是获取不到回调参数,没办法更改订单状态,,这中间的苦逼过程就不啰嗦了,直接贴上成功的代码:

微信官方的回调DEMO很简单,就这两行实际执行代码
vendor('Weixin.Notify'); //引入微信第三方类库,自己加的
$notify = new \PayNotifyCallBack(); //这个是微信原版
$notify->Handle(false); //这是微信原版,开始握手

下面是重点部分:

$is_success = $notify->IsSuccess(); //IsSuccess函数是自己加的,后面会贴上了
$bdata = $is_success['data']; //获取微信回调数据

if($is_success['code'] == 1)
//验证成功

$total_fee=$bdata['total_fee']/100;//支付金额
$trade_no=$bdata['transaction_id'];//微信订单号
$out_trade_no=$bdata['out_trade_no'];//系统订单号
$openid=$bdata['openid'];//用户在商户appid下的唯一标识

//这里执行自己的逻辑,比如更改订单状态为已付款,或者发送付款成功通知等



改造后的NotifyProcess函数
//重写回调处理函数
public function NotifyProcess($data, &$msg)

// Log::DEBUG('call back:' . json_encode($data));
$notfiyOutput = array();

if(!array_key_exists('transaction_id', $data))
$msg = '输入参数不正确';
$this->para['code'] = 0;
$this->para['data'] = '';
return false;

//查询订单,判断订单真实性
if(!$this->Queryorder($data['transaction_id']))
$msg = '订单查询失败';
$this->para['code'] = 0;
$this->para['data'] = '';
return false;


$this->para['code'] = 1;
$this->para['data'] = $data;
return true;


/**
* 自定义方法 检测微信端是否回调成功方法
* @return multitype:number string
*/
public function IsSuccess()
return $this->para; //返回数据
本回答被提问者采纳
参考技术B 支付回调就是 支付后微信系统发送结果的地址

以上是关于微信支付Java如何判断回调的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp微信支付回调是啥意思

java微信支付v3系列——5.微信支付成功回调

微信支付成功后,微信回调值是空的,怎么解决

微信小程序支付成功后没有回调函数返回。

java 微信支付v3 —8.微信支付之退款成功回调

微信支付成功后,asp如何接收回调xml信息