.net接入微信二维码支付(模式二)

最近写项目,用到了微信支付,再次写篇博客记录一下。

先说一下大致流程:
1,商户平台先生成订单,然后调用统一下单API,将一些订单的参数传过去。
2,微信系统会生成订单,然后将交易链接返回给商户平台,商户平台将交易链接生成二维码,展示给用户。
3,用户付款阶段。(此时是用户付款阶段,因为微信支付成功之后只会向用户刚开始定义的回调路径返回结果,但是商户前台系统无法及时获取订单状态,所以可以使用长连接调用微信的查询订单API,如果用户支付成功,关闭二维码,告知用户付款成功。)
4,如果用户支付成功,微信会向用商户平台自己定义的回调路径发送一次请求,把支付结果返回给商户平台,
用户可以再这个回调页面对自己的订单做一些处理。但是这个页面一定要按照微信文档中的参数,返回给微信结果,如果不返回,或者返回错误,微信就会一直调用。
5,商户系统的长连接检测到微信订单已经支付成功,返回给商户系统前台,告知用户支付成功。

在这里插入图片描述

demo测试:
首先先去下载官网提供的sdk(https://pay.weixin.qq.com/wiki/doc/api/download/WxPayAPI_CS.zip)
下载完成之后打开demo。
首先找到lib文件夹下的DemoConfig文件。这个文件中是一些基本参数的设置
基本信息设置
支付结果回调的路径
这些参数配置完成之后还要在修改WxPayApi文件中sign_type参数的值,修改成WxPayData.SIGN_TYPE_MD5(默认是WxPayData.SIGN_TYPE_HMAC_SHA256,这个我不确定是否要修改,我自己写的时候用默认的会报sign出错。修改成MD5之后就可以了)
在这里插入图片描述
在这里插入图片描述
Data.cs文件中生成sign的方法也需要修改
在这里插入图片描述

以上修改完成之后demo应该就可以跑通了。

打开example文件夹下的NativePayPage页面,就会生成二维码了。
在这里插入图片描述
二维码url的生成是在NativePay.cs文件中。

这个方法就是先创建一个model,填入一些业务参数,之后会调用统一下单接口(接口文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1)
添加业务参数的时候要注意,total_fee这个参数是总金额以分为单位,int类型,1就是1分。
业务级别的参数类型,一定要严格按照接口文档上的类型,如果不对,生成的sign会出错,就生成不了二维码。
在这里插入图片描述
UnifiedOrder方法里面会自己添加系统级别的参数,如APPID之类的参数,添加完成之后会有一个步骤生成sign
在这里插入图片描述
在这里插入图片描述
sign的官方解释(https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=4_3)

sign生成之后会去调用统一下单接口,会返回xml字符串,result.FromXml()会把返回值序列化成微信提供的一个对象。
在这里插入图片描述
如果接口调用成功会返回一个url,然后调用方法把url转成二维码就行了。
sdk里面微信用的生成二维码方式是ThoughtWorks.QRCode,直接nuget包下载就行了。
如果不想用后台生成,也可以用js生成,QRCode.js
在这里插入图片描述
待更新。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值