关于坑爹的微信支付接口V3

发布时间:2018-06-30 02:57:33   来源:文档文库   
字号:

最近在做一个关于微信支付的功能,涉及到了微信支付接口,原以为此接口也像支付宝一样,简单易用,当从官网上下载了Demo之后,才发现原来一个为客户展示的Demo也可以做到让一个技术如此的抓狂,在百度上搜索了很多相关的资料,都没有找到有效的解决办法。没办法,只能靠自己了,经过千山万水,艰难跋涉,终于调试通过了,废话不多说了,下面把调试的思路和附带的代码贴出来,也算是为大家提供一些参考吧!

本人下载的是V3Demo代码,压缩包文件名为【WxpayAPI_php_v3.zip,解压之后得到2的文件夹。具体每个文件夹的里的文件不用多说,Demo里面配有相关文档介绍,即使没有,百度上面也可以搜索得到

1Demo压缩包名称

2Demo解压之后的文件夹

按照Demo中提供的流程进行对应的参数配置(这里不进行重述)下面进行Demo调试,噩梦也就开始了Demo上传到自己服务器上,原封不动的进行它们自己的案例测试,没有任何问题,但是把参数修改为本商户参数之后,进行测试,就一直调试不通,不能显示支付的页面,进行检查,把对应的下列代码进行修改,就可以进入到支付页面设置。修改1中是把SSL效验关闭,因为我的服务器使用的是虚拟空间,不能进行SSL安装,所以只能采取此类办法,如果能按照SSLVPS或是主机的,还是建议按照SSL比较好。问题2中是没有进行回调网址的默认设置,但是回调函数中又有这样的逻辑需要调用回调默认值,所以写出来比较好本人打不开支付页面的原因应该是SSL安全验证书没有的问题导致的,当停用就可以了。

3修改默认数据

以下开始就是我碰到的几个最头疼的问题:

问题1不知道怎样传递自定义参数,比如商户自己的out_trade_no(交易号)、totale_fee(付款价格)等

问题2回调函数是如何运作的,在哪个位置进行自定义代码的添加(比如像自己的数据库进行数据插入、修改和删除)

下面是我的解决办法,我不排除有更好的办法,但是鉴于本人技术能力有限,也只能做到此程度,供大家参考借鉴。

解决1因为调用支付页面的url网址不能调价任何GET参数(添加之后就打不开支付页面),所以只能有POST方式支付页面调用的是文件夹example->jsapi.php文件根据流程,可以看出它一开始就创建了JsApiPay()类的工具对象$tools,然后进行用户$openId的调用,通过对GetOpenid()进行微信OAuth2.0授权机制来进行用户Openid的调用,相当于每次此函数都调用了两次才能得到Openid,要是不了解授权机制操作流程的可以看一下微信相关的技术文档,讲的还是比较清楚了。因为调用jsapi窗口文件时,就直接跳转到授权机制网页,而且还是两次,所以在jsapi文件中是获取不到任何的GETPOST参数的。而我们要传递的自定义参数可以在此函数中进行添加。在OAuth2.0授权机制网址中存在了一个state参数,赋值为STATE,我们可以把STATE改为我们想要的参数,看修改后的为图7,我传递的是out_trade_no(交易号)参数利用json进行传递,jsapi文件中可以利用json_decode进行解码,以此就可以对你传递的参数进行控制了。

4支付页面链接网址

5jsapi文件部分代码

6获取用户Openid函数

7、修改STATE后的代码

8json解码

解决2当问题1解决完成之后,其实问题2就比较好处理了。付款完成之后,会调用设置好的notify.php可以通过demo设置的log日志来进行观察,实际是调用了notify.php文件中的NotifyProcess($data, &$msg)Queryorder($transaction_id)函数,本人是通过Queryorder($transaction_id)函数中当返回“SUCCESS时,进行自定义代码处理自定义代码的处理上存在一个问题,就是Queryorder($transaction_id)函数不能修改任何形参,这样就堵死了你的任何数据传递到此函数中,后来看到Demo写的LOG日志类,发现采用static静态方式是一个不错的选择,这样无论你需要到什么数据和对象,都可以在自己的静态类中进行定义和调用当回调页面中收到“SUCCESS”回复之后,jsapi.php页面中就会触发事件,按照图10,进行页面的跳转即可

9notify.php回调函数中自定义代码添加

10jsapi.php页面中触发的jsApiCall事件

功能做到此处,基本也就完成了本人的需求,至此下次也再没有过多研究。在此多说几句,此次的项目我申请了3支付接口:支付宝、财付通和微信支付,本人的感觉,无论是客服的态度,技术的对工作的用心程度来看,支付宝都比财付通、微信支付要好得多,对于我们技术来说,三个接口的文档的感觉,支付宝的Demo简单易懂;财付通虽然有许些复杂,但是也还能达到“傻瓜型”式的目的;而微信方式的Demo我不得不吐槽,真心的坑爹,不知道写代码的这些技术是不是学习了“中国式”技术文档精髓,本着不绕晕誓不罢休的精神来编写的。不知道这是不是反应出腾讯对技术方面的重视态度问题,个人意见和感觉,仅供参考!

本文来源:https://www.2haoxitong.net/k/doc/478b3a3bb14e852459fb574d.html

《关于坑爹的微信支付接口V3.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式