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

发布时间:2019-01-25   来源:文档文库   
字号:
精品文档 你我共享
最近在做一个关于微信支付的功能,涉及到了微信支付接口,原以为此接口也像支付宝一样,简单易用,当从官网上下载了Demo之后,才发现原来一个为客户展示的Demo也可以做到让一个技术如此的抓狂,在百度上搜索了很多相关的资料,都没有找到有效的解决办法。没办法,只能靠自己了,经过千山万水,艰难跋涉,终于调试通过了,废话不多说了,下面把调试的思路和附带的代码贴出来,也算是为大家提供一些参考吧! 本人下载的是V3Demo代码,压缩包文件名为【WxpayAPI_php_v3.zip,解压之后得到图2的文件夹。具体每个文件夹的里的文件不用多说,Demo里面配有相关文档介绍,即使没有,百度上面也可以搜索得到。

1Demo压缩包名称


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

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、支付页面链接网址

AAAAAA
精品文档 你我共享

5jsapi文件部分代码



6、获取用户Openid函数

AAAAAA
精品文档 你我共享

7、修改STATE后的代码


8json解码

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

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



10jsapi.php页面中触发的jsApiCall事件
AAAAAA
精品文档 你我共享

功能做到此处,基本也就完成了本人的需求,至此下次也再没有过多研究。此多说几句,此次的项目我申请了3个支付接口:支付宝、财付通和微信支付,本人的感觉,无论是客服的态度,技术的对工作的用心程度来看,支付宝都比财付通、微信支付要好得多,对于我们技术来说,三个接口的文档的感觉,支付宝的Demo简单易懂;财付通虽然有许些复杂,但是也还能达到“傻瓜型”式的目的;而微信方式的Demo我不得不吐槽,真心的坑爹,不知道写代码的这些技术是不是学习了“中国式”技术文档精髓,本着不绕晕誓不罢休的精神来编写的。不知道这是不是反应出腾讯对技术方面的重视态度问题,个人意见和感觉,仅供参考!沁园春·雪
北国风光, 千里冰封, 万里雪飘。 望长城内外, 惟余莽莽; 大河上下, 顿失滔滔。
山舞银蛇, 原驰蜡象, 欲与天公试比高。
须晴日, 看红装素裹, 分外妖娆。 江山如此多娇, 引无数英雄竞折腰。 惜秦皇汉武, 略输文采; 唐宗宋祖, 稍逊风骚。
AAAAAA
精品文档 你我共享
一代天骄, 成吉思汗, 只识弯弓射大雕。
俱往矣, 数风流人物, 还看今朝。


AAAAAA

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

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

文档为doc格式