thinkphp微信支付回调是什么意思

 我来答
斛翮n
2018-04-10
知道答主
回答量:15
采纳率:83%
帮助的人:4.4万
展开全部
微信支付回调就是说用户通过微信支付完毕时的返回值去判断支付结果。
通过返回的结果,去修改数据库(完成你想实现的功能)
例:用户支付成功->通过回调判断->数据库操作(为会员充值积分)
用户支付失败(或取消支付)->通过回调判断->跳转到支付失败页
龙氏风采
2016-12-14 · 知道合伙人互联网行家
龙氏风采
知道合伙人互联网行家
采纳数:5849 获赞数:12817
从事互联网运营推广,5年以上互联网运营推广经验,丰富的实战经

向TA提问 私信TA
展开全部
用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; //返回数据
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
as3089qw
2016-12-22
知道答主
回答量:65
采纳率:0%
帮助的人:15.5万
展开全部
支付回调就是 支付后微信系统发送结果的地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式