thinkphp微信支付回调是什么意思
3个回答
2016-12-14 · 知道合伙人互联网行家
关注
展开全部
用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; //返回数据
}
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; //返回数据
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
支付回调就是 支付后微信系统发送结果的地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询