微信APP支付 C#

来源:互联网 发布:tplink访客网络限速 编辑:程序博客网 时间:2024/04/30 12:29

微信APP支付服务端开发总结(走过的坑,一定要留下痕迹)

更多相关代码在文章结尾

一、配置文件,将appid、mch_id、 key、notify_url、trade_type写在配置文件中或者写在一个专门的类中

二、解析微信服务端返回的数据建议用XDocument 

三、API调用

1、统一下单接口处理,这个接口中主要获得prepay_id,并传给客户端,这个接口中有两次签名,可以封装下

其中需要注意的地方 total_fee 的单位是分,也就是没有小数,否则会返回invalid total_fee  .(这个可以服务端处理也可以客户端处理,将传过来的参数值变换成单位为的数额即可)

还有要注意的是签名的Key需要按ASCII码值从小到大排序,这个最好写一个统一的方法生成xml.

2、回调函数,一般微信均会成功回调,我做的项目中因为有拦截,所以没有调取成功,因此在app回调时一直返回签名错误,调试发现transaction_id为空也就是在回调到时候没有返回。

这个接口中主要实现支付成功后的逻辑,要保证安全性,所以要做签名验证、和查询订单来确保程序正常执行了。

3、APP回调接口,主要是支付成功后,app调取这个接口进行主动查询,看是否真的成功,这个接口中需要注意的就是逻辑的处理了,如果查询订单成功,并且财务表查询已经支付,那就返回客户端支付成功;若是查询订单是成功的但是财务表查到的是没有支付,那么就要进行相应的逻辑处理,或者让客户联系客服。建议进行与回调函数中相同的处理

4、支付的整个代码中一定要及时的记录相应的日志,以便于查找相应的错误。

四、相关代码






2 0