iOS微信支付步骤以及出现的问题总结

一、下面我先说一下大概的流程:

1.首先你得搞清楚几个参数的意义。这些参数除了第二篇文章的调起微信支付的参数外,还有统一下单里面必须要填的参数。"必填"->"是",这些参数也要准备好。上传的参数的地址:https://api.mch.weixin.qq.com/pay/unifiedorder 。(微信的统一下单的地址)

2.app端通过上传一些微信的公共的“统一下单”要填的参数,返回一些数据,得到支付的参数。微信统一下单要填写的参数

3.通过得到的参数,调起微信支付,完成支付。

4.由于传递参数的 时候是xml格式,因此我们需要用NSXMLParser解析。

5.在上传参数(统一下单里面的参数)的过程中,我们可以用微信自带的在线签名验证工具。验证工具 。通过NSLog打印出日志,然后对比,把要app端要上传的参数,填写到验证工具里面。

注意:一个参数 的字母都不要少,参数的内容里面的字母,大小写都不要错。

6.需要做两次签名,第一次签名是上传request请求时,拼接的字符串,创建一次sign;第二次签名是请求统一下单之后,主要是用返回的一个prepay_id的一个字符串,根据appid、noncestr、package、partnerid、prepayid、timestamp这些字符串的内容,重新创建一次sign,第二次的sign是为了调起微信支付用的。

校验工具配置参数如下:


校验工具

二、我先总结微信支付过程中,出现的问题:

1.打印日志结果是:


分析:由于是上传到统一下单的接口的参数,缺少参数。这个时候需要打开微信的统一下单的界面,检查自己上传的参数缺少哪一个。

2.打印日志结果:



错误信息

这个的错误原因就是签名错误,整理错误的信息 如下:

1>sign签名是否大写。

2>拼接的字符串是否按照ASCII码,从小到大排列。(建议用代码实现排序,不要手动排序,不然很容易出错的)

3>上传的参数格式"key=value&",这其中的key与value是否有错误(我就是因为一个参数的key少写了几个字母),包括是否少写了字母,写错了字母。

4>是否拼接了商户自定义的密钥,也就是在微信商户平台里面自定义的密钥。并且判断是否与自己定义的密钥是否相同。


密钥


三、微信支付demo示例:

1>这个demo是在前期的文章二中,继续添加文件。

2>工程的目录如下图介绍:



工程的目录

3>加密工具:

WXUtil.h  文件


WXUtil.h

WXUtil.m文件


WXUtil.m

4>XMLParseManager.h 文件


XMLParseManager.h

XMLParseManager.m 文件


XMLParseManager.m

4>工程代码:

上传参数,返回字符串的代码:


代码演示

参数上传成功之后会出现以下日志:


日志打印

调起微信支付的代码:

展开阅读全文

没有更多推荐了,返回首页