微信扫码i支付~官方DEMO的坑

返回目录php

以前写过关于微信支付那些坑的文章(《微信JSApi支付~集成到MVC环境后的最后一个坑(网上没有这种解决方案)》,《微信JSApi支付~坑和如何填坑》),下面说一下微信官方提供的"扫码支付",一配置,一运行,生成了一个二维码,手机一扫,出现了"获取商户订单信息超时或商户返回httpcode非200",在百度上一问,都是说签名错误,固然个人签名必定没错,因此,还要本身找问题,通过了一翻测试与日志,终于找到了一个点,那就是关于字典类型的对象的判断上,判断一个没不在的键,而后使用这个键,而后就是失败,连异常都不报,晕!html

下面是关于扫码支持用到的文件数据库

简单说一下这几个文件的功能api

NativePayPage.aspx:扫码支付发起页面微信

NativeNotifyPage.aspx:由微信服务端进行回调的页面,这个在公众平台进行设置(微信支持->开发设置->权限目录;微信支持->开发设置->支付回调)异步

ResultNotifyPage.aspx:处理微信订单信息,在WxPayConfig类里进行配置post

最后,咱们将官方的DEMO里的BUG注释一下, 支付就能够成功了测试

文件:WxPayData类的FromXml方法,把对应的代码注释便可,由于这时,m_values字典里根本没有return_code键,因此不能处理成功.微信支付

对于知识的研究,咱们有时确实要多加后日志,请不要太相信大公司写的公开API,它们可能也有BUG!url

后记扫码支付的两种模式

模式1开发流程:
一、生成二维码(https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4),给买家扫码
二、回调到上图设置的回调的URL当中,获得必要的参数,调用统一下单API,生成参数,提交到微信接口,并把这些参数保存到数据库(最重要的是 商户订单号,此订单号再微信支付成功异步回调中,会返回这个订单号,也就是说,订单号是此条数据的惟一标识)
三、步骤2中统一下单会返回一个 code_url(二维码链接),生成二维码,给买家扫码
四、买家打开微信扫码,支付完成。
五、微信进入回调的url (该回调的URL在下单的API的参数中)
六、在回调的接口中获取微信传过来的参数。根据商户订单号--修改数据库的数据。 推送到APP成功的状态

模式2开发流程:
一、调用统一下单API,生成参数,提交到微信接口,并把这些参数保存到数据库(最重要的是商户订单号,此订单号再微信支付成功异步回调中,会返回这个订单号,也就是说,订单号是此条数据的惟一标识)
二、步骤2中统一下单会返回一个 code_url(二维码链接),生成二维码,给买家扫码
三、买家打开微信扫码,支付完成。
四、微信进入回调的url (该回调的URL在下单的API的参数中)
五、在回调的接口中获取微信传过来的参数。根据商户订单号--修改数据库的数据。 推送到APP成功的状态

 返回目录