这一篇文章主要是介绍配置各种参数的一个demo,并且与服务器接通,实现支付功能。想要参考更多的微信支付细节需要参考前一篇文章。iOS微信支付步骤以及出现的问题总结(二)
我会把大部分的代码,通过图片的形式,表现出来,只是没有demo,因为涉及到一些敏感参数。
一、下面我先说一下大概的流程:
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.m文件
4>XMLParseManager.h 文件
XMLParseManager.m 文件
4>工程代码:
上传参数,返回字符串的代码:
参数上传成功之后会出现以下日志:
调起微信支付的代码:
做了将近一个月的微信支付终于大功告成了,非常感谢我的好盆友-LucioLee,要是他不帮我,我也是不能这么快就搞定,最后一步,才是微信支付的最困难的一步,非常感谢他对我的帮助。如果还有什么问题没有解决,就给我留言,有时间我会解释的。