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

简介:

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

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

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

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

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

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

最后,我们将官方的DEMO里的BUG注释一下, 支付就可以成功了

文件:WxPayData类的FromXml方法,把对应的代码注释即可,因为这时,m_values字典里根本没有return_code键,所以不能处理成功.

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

后记扫码支付的两种模式

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

模式2开发流程:
1、调用统一下单API,生成参数,提交到微信接口,并把这些参数保存到数据库(最重要的是商户订单号,此订单号再微信支付成功异步回调中,会返回这个订单号,也就是说,订单号是此条数据的唯一标识)
2、步骤2中统一下单会返回一个 code_url(二维码连接),生成二维码,给买家扫码
3、买家打开微信扫码,支付完成。
4、微信进入回调的url (该回调的URL在下单的API的参数中)
5、在回调的接口中获取微信传过来的参数。根据商户订单号--修改数据库的数据。 推送到APP成功的状态
本文转自博客园张占岭(仓储大叔)的博客,原文链接: 微信扫码i支付~官方DEMO的坑 ,如需转载请自行联系原博主。
目录
相关文章
|
11天前
|
安全 API Windows
支付系统13------支付系统的资料在技术库里的在线支付当中,怎样获取微信平台证书那?怎样获取微信平台证书那?第一步打开我们的微信支付平台的文档中心
支付系统13------支付系统的资料在技术库里的在线支付当中,怎样获取微信平台证书那?怎样获取微信平台证书那?第一步打开我们的微信支付平台的文档中心
|
11天前
|
JavaScript
支付系统---微信支付23-数据绑定和事件,使用Vue调试要添加扩展,F12与console平级就出现了Vue,在支付资料,微信支付,04资料,工具里
支付系统---微信支付23-数据绑定和事件,使用Vue调试要添加扩展,F12与console平级就出现了Vue,在支付资料,微信支付,04资料,工具里
|
11天前
|
API
支付系统----微信支付24--APlv3介绍,首先我们要引入支付参数,包含商户号,APPID、API秘钥,数字证书,用代码加载到应用程序当中,之后加载商户私钥,商户需要用私钥进行验签,微信平台接收商
支付系统----微信支付24--APlv3介绍,首先我们要引入支付参数,包含商户号,APPID、API秘钥,数字证书,用代码加载到应用程序当中,之后加载商户私钥,商户需要用私钥进行验签,微信平台接收商
|
11天前
|
前端开发
支付系统--微信支付21--搭建前端环境,payment-demo-front这个项目文件夹是前端显示文件,payment-demo是后端项目,支付页面常见三个页面:购买课程,我的订单,下载账单
支付系统--微信支付21--搭建前端环境,payment-demo-front这个项目文件夹是前端显示文件,payment-demo是后端项目,支付页面常见三个页面:购买课程,我的订单,下载账单
支付系统35-----支付成功异步通知----数据锁,微信那边是有一个服务器集群的,不单单是有一个通知发送过来,有可能有两台更多台的服务器发送过来,把锁加到我们处理通知里面,在对业务数据进行状态检查和
支付系统35-----支付成功异步通知----数据锁,微信那边是有一个服务器集群的,不单单是有一个通知发送过来,有可能有两台更多台的服务器发送过来,把锁加到我们处理通知里面,在对业务数据进行状态检查和
|
1月前
|
PHP 移动开发 安全
PHP应用如何对接微信公众号JSAPI支付
本文介绍了微信支付的多种方式,包括JSAPI支付、APP支付、Native支付、付款码支付和H5支付。
28 8
|
19天前
|
JSON 缓存 小程序
技术笔记:uniapp微信小程序支付
技术笔记:uniapp微信小程序支付
|
2月前
|
前端开发 JavaScript Go
Go 实战|使用 Wails 构建轻量级的桌面应用:仿微信登录界面 Demo
Wails 框架提供了一种简洁而强大的方式,让开发者能够利用 Go 的性能优势和 Web 前端的灵活性,从而能够使用更高效、更轻量级的方法来构建跨平台的桌面应用。本文探讨 Wails 框架的使用,从搭建环境到开发,再到最终的构建打包。
113 1
Go 实战|使用 Wails 构建轻量级的桌面应用:仿微信登录界面 Demo
|
2月前
微信和支付宝支付的金额不能超过两位小数,可以把后台超过两位小数的支付字符串修正为两位小数
微信和支付宝支付的金额不能超过两位小数,可以把后台超过两位小数的支付字符串修正为两位小数
25 0
|
10月前
|
小程序 Android开发 iOS开发
微信小程序-虚拟支付:适用场景 / iPhone调试用支付成功,Android调用失败,提示“小程序支付能力已被限制” / “errMsg“.“requestPayment:fail banned”
微信小程序-虚拟支付:适用场景 / iPhone调试用支付成功,Android调用失败,提示“小程序支付能力已被限制” / “errMsg“.“requestPayment:fail banned”
342 0