关于坑爹的支付接口V3
    最近在做一个关于支付的功能,涉及到了支付接口,原以为此接口也像支付宝一样,简单易用,当从上下载了Demo之后,才发现原来一个为客户展示的Demo也可以做到让一个技术如此的抓狂,在百度上搜索了很多相关的资料,都没有到有效的解决办法。没办法,只能靠自己了,经过千山万水,艰难跋涉,终于调试通过了,废话不多说了,下面把调试的思路和附带的代码贴出来,也算是为大家提供一些参考吧!
冬瓜炖排骨汤的做法    本人下载的是V3的Demo代码,压缩包文件名为【WxpayAPI_php_v3.zip】,解压之后得到图2的文件夹。具体每个文件夹的里的文件不用多说,Demo里面配有相关文档介绍,即使没有,百度上面也可以搜索得到。
图1、Demo压缩包名称
图2、Demo解压之后的文件夹
    按照Demo中提供的流程进行对应的参数配置(这里不进行重述)。下面进行Demo调试,噩梦也就开始了。把Demo上传到自己服务器上,原封不动的进行它们自己的案例测试,没有任何问题,但是把参数修改为本商户参数之后,进行测试,就一直调试不通,不
能显示支付的页面,进行检查,把对应的下列代码进行修改,就可以进入到支付页面设置。修改1中是把SSL效验关闭,因为我的服务器使用的是虚拟空间,不能进行SSL安装,所以只能采取此类办法,如果能按照SSL的VPS或是主机的,还是建议按照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文件中是获取不到任何的GET和POST参数的。而我们要传递的自定义参数可以在此函数中进行添加。在OAuth2.0授权机制网址中存在了一个state参数,赋值为STATE,我们可以把STATE改为我们想要的参数,看修改后的为图7,我传递的是out_trade_no(交易号)参数。利用json你还知道哪些植物传播种子的方法进行传递,到jsapi文件中可以利用json_decode进行解码,以此就可以对你传递的参数进行控制了。
上高速需要核酸检测报告吗图4、支付页面链接网址
图5、jsapi文件部分代码
图6、获取用户Openid函数
图7、修改STATE后的代码
营业办理执照图8、json解码
    解决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,进行页面的跳转即可。
图9、notify.php回调函数中自定义代码添加
图10、jsapi.php页面中触发的jsApiCall事件
    功能做到此处,基本也就完成了本人的需求,至此下次也再没有过多研究。在此多说几句,此次的项目我申请了3个支付接口:支付宝、财付通和支付,本人的感觉,无论是客服的态度,技术的对工作的用心程度来看,支付宝都比财付通、支付要好得多,对
于我们技术来说,三个接口的文档的感觉,支付宝的Demo简单易懂;财付通虽然有许些复杂,但是也还能达到“傻瓜型”式的目的;而方式的Demo我不得不吐槽,真心的坑爹,不知道写代码的这些技术是不是学习了“中国式”技术文档精髓,本着不绕晕誓不罢休的精神来编写的。不知道这是不是反应出腾讯对技术方面的重视态度问题,个人意见和感觉,仅供参考!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。