thinkphp微信支付回调是啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 支付回调就是 支付后微信系统发送结果的地址

thinkphp 微信支付 thinkphp 微信企业付款

前面已经跑通了微信支付的流程,接下来吧微信支付和微信企业付款接入到thinkphp中,版本是3.2

把微信支付类、企业付款类整合到一起放到第三方类库,这里我把微信支付帮助类和企业付款类放到同一个文件了:

把Payment整个文件夹放到\ThinkPHP\Library\Vendor文件夹下面,打开WxPay.pub.config.php,配置四个参数即可,然后把微信提供的证书放到caccert文件夹;这样就完成了支付和

企业付款的所有代码配置!

待续。。。

 


 

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

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

微信支付成功后回调没有数据解决方案

调用支付jsapi缺少参数是啥意思

thinkphp框架对接支付宝即时到账接口回调的代码

微信第二层支付是啥

请问调用微信刷卡支付API 返回支付权限检查失败 是啥情况?