PHP微信公众号JSAPI网页支付(下)

上一篇<a id="cb_post_title_url" class="postTitle2" href="http://www.cnblogs.com/hld123/p/6626323.html">PHP微信公众号JSAPI网页支付(上)</a>中讲到了公众号平台的相关设置以及支付的大致流程。

这一篇重点讲支付后,异步接受回调通知,以及处理后同步通知微信服务器。

首先梳理下整个jsapi支付的流程

1.网页授权获取用户openid

2.使用统一下单支付接口,生成JSAPI页面调用的支付参数并签名。

3.使用JSAPI调起支付

4.支付后回调(包括接受异步通知以及做出同步处理)

下面讲一些实际中踩到的坑,注意啦

1.官方demo中的一些需要修改的地方

1)打开lib文件夹下的WxPay.Api.PHP文件,在537行有一段curl网络请求配置代码:

 

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验

替换成

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);//非严格校验

 

另外说明下:

在46-49行有一段代码:


//异步通知url未设置,则使用配置文件中的url
if(!$inputObj->IsNotify_urlSet()){
$inputObj->SetNotify_url(WxPayConfig::NOTIFY_URL);//异步通知url

对应的做法是在WxPay.Config.php 中加上这个配置,根据实际回调地址填写
例如:const NOTIFY_URL="http://paysdk.weixin.qq.com/example/notify.php";

 

2)打开lib文件夹下的WxPay.Notify.php文件,第79行的代码:
if($needSign == true &&
$this->GetReturn_code($return_code) == "SUCCESS")
{
$this->SetSign();
}

替换成

if($needSign == true &&
$this->GetReturn_code() == "SUCCESS")
{
$this->SetSign();
}

 

3)打开lib文件夹下的WxPay.JsApi.php文件,在99行有一段curl网络请求配置代码:


curl_setopt($ch, CURLOPT_TIMEOUT, $this->curl_timeout);

替换成

curl_setopt($ch, CURLOPT_TIMEOUT, 30);  //此处可根据实际情况填写,单位(秒)

 

2.支付回调验证链接,必须是没有权限验证的

如果你填写的回调链接,还需要登录注册验证的,就不要尝试了,必须要可以无障碍访问的链接,而且也不要有一连串的参数传递。
最好就是简单粗暴的[http://serverName/xxx.php]

比如在根目录下,类似于index.php,重新写了一个专门的供支付回调的入口文件payment.php,

和它对应的Application/目录下的模块(WexinApi)、控制器(WeixinPay)及方法(notify)

如图:payment.php

PHP微信公众号JSAPI网页支付(下)

现在访问[http://serverName/payment.php],就会直接进入到[http://serverName/payment.php/WexinApi/WeixinPay/notify],
这样回调验证链接可以写[http://serverName/payment.php],也可以写[http://serverName/payment.php/WexinApi/WeixinPay/notify]。

 

 

支付完成,就会进入到之前写好的链接对应的方法

说明:下面那个$data截图不完整,应该是$data=json_decode(json_encode(simplexml_load_string($xml,‘SimpleXMLElement‘,LIBXML_NOCDATA)),true);

PHP微信公众号JSAPI网页支付(下)

 

为了安全起见,对返回过来的签名,要重新验证:

 

PHP微信公众号JSAPI网页支付(下)

参考文章:http://blog.csdn.net/sinat_35861727/article/details/72783988

 

PHP微信公众号JSAPI网页支付(下)

上一篇:SpringAop总结


下一篇:ApiBoot - ApiBoot Http Converter 使用文档