ios微信支付 内部服务器错误,iOS微信支付步骤以及出现的问题总结(三)

这一篇文章主要是介绍配置各种参数的一个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是为了调起微信支付用的。

校验工具配置参数如下:

1aade8e6495b

校验工具

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

1.打印日志结果是:

1aade8e6495b

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

2.打印日志结果:

1aade8e6495b

错误信息

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

1>sign签名是否大写。

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

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

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

1aade8e6495b

密钥

三、微信支付demo示例:

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

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

1aade8e6495b

工程的目录

3>加密工具:

WXUtil.h  文件

1aade8e6495b

WXUtil.h

WXUtil.m文件

1aade8e6495b

WXUtil.m

4>XMLParseManager.h 文件

1aade8e6495b

XMLParseManager.h

XMLParseManager.m 文件

1aade8e6495b

XMLParseManager.m

4>工程代码:

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

1aade8e6495b

代码演示

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

1aade8e6495b

日志打印

调起微信支付的代码:

1aade8e6495b

代码演示

做了将近一个月的微信支付终于大功告成了,非常感谢我的好盆友-LucioLee,要是他不帮我,我也是不能这么快就搞定,最后一步,才是微信支付的最困难的一步,非常感谢他对我的帮助。如果还有什么问题没有解决,就给我留言,有时间我会解释的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值