美文网首页学习iOS菜鸟到大神iOS应用 支付
iOS微信支付步骤以及出现的问题总结(三)

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

作者: 阳光的大男孩儿 | 来源:发表于2016-03-19 14:33 被阅读9104次

这一篇文章主要是介绍配置各种参数的一个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.h

WXUtil.m文件

WXUtil.m

4>XMLParseManager.h 文件

XMLParseManager.h

XMLParseManager.m 文件

XMLParseManager.m

4>工程代码:

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

代码演示

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

日志打印

调起微信支付的代码:

代码演示

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

相关文章

网友评论

  • 西风颂:亲,显示支付验证签名失败是怎么回事呢?怎么验证呢?
  • 土豆人:请问你添加的key字段是啥?
    阳光的大男孩儿: @土豆人 微信文档里面有
  • 土豆人:请问:你图片里面的xmlParser 和 WECHAT_KEY 能否详细解释下是什么意思吗?以及在哪里有定义?
  • ethan_cun:楼主 我在客户端发起支付 弹出“APPID未关联PaySignKey” , 然后我去商户平台API安全里面设置密钥 但还是出现这个错误 ; 是不是因为还在审核?
  • 玫瑰花瓣的信笺:调起微信支付的代码: 这个代码图中 key字段指的是什么?还有那个宏又是什么意思?
  • LennonLin:请问一下微信无论支付成功还是失败返回当前页面,然后在闪过一个黑屏,请问知道什么原因吗
    玫瑰花瓣的信笺:我这边是取消的时候,窗口抖动一下,返回自己的APP,不知道是不是正常效果
  • zero000:有demo吗?
  • 9d461a3948ed:请问如何可以做到支付成功后直接跳转回原应用,而不是点击右上角导航栏回到之前的app呢
    土豆人:请问:你图片里面的xmlParser 和 WECHAT_KEY 能否详细解释下是什么意思吗?以及在哪里有定义?
    zero000:我遇到了同样的问题,想请教下你是怎么解决的
  • DovYoung:你好,我们是将获取prepayid和生成sign的步骤放在服务端完成,感觉将appsecret放在客户端不是很好,还有,想请问一下那个客户端怎么监听支付结果,你有做吗?
    阳光的大男孩儿: @DovYoung 监听没做
    阳光的大男孩儿: @DovYoung 回调结果
  • 无厌_:你好,请问最后一步的参数都是要我们自己申请到的嘛, 后台处理好参数一起传过来可以嘛
    阳光的大男孩儿: @无厌_ 让后台去做参数
  • maretell:大神! 我现在支付成功了 但是回调 我怎么去刷新订单状态啊
    阳光的大男孩儿:@maretell 支付成功之后,按说应该有一个block回调,你在回掉的过程中刷新界面。
  • maretell:你好 !想请教下 他日志给我返回的 是您没有app支付权限 是怎么回事
    阳光的大男孩儿:@maretell 你去官网自己去看,公众号那个没有用,仅仅是移动端客户端。
    maretell:@依然那么爱你forever 经理给我appid什么的了。公众号和app的申请那些appid什么的是一样的吗
    阳光的大男孩儿:@maretell 是因为你没有获得支付权限,需要申请,去官网。
  • KouKuma:赞赞赞 ~\(≧▽≦)/~
  • 北暖37:有没有遇到过接入微信支付,提示该商户支付权限已被取消这样的,
    阳光的大男孩儿:@慕糖123 有可能是商户权限问题。
  • 790410d0b9a0:兄弟 写的很详细 帮助很大 3Q !已关注
    阳光的大男孩儿:@给你微笑灬 不客气 ~~哈哈哈~
  • 263d13fa604d: 已经看了很多遍 但是在客户端的签名也成功了 调起微信支付的参数也检查很多遍了 就是跳转过去是一个确定按钮;我也找很多人看过了 都没发现什么问题;如果我直接调用官方demo里面的商户号返回json订单也没有任何问题; 希望博主能联系下,看看是什么问题 谢谢!
    阳光的大男孩儿:@xx紫紫xx 我去,你不要吓我,肯定是有问题,你检验过你的参数吗?在微信里面。
  • 随心忧:微信支付不能打开微信这是怎么回事啊
    随心忧:谢了,已经解决了
    阳光的大男孩儿:@随心忧 打不开,就是没有 权限,需要去官网申请“移动支付”权限。
  • 大草原之夜:下载的微信支付事例提示:微信接口返回xml数据签名错误
  • 阳光的大男孩儿:肯定是配置参数,出问题了,那个地方仔细检查,我当时错了一个大写字母,都问题多多。
  • 伊禾媛:写的很好...不过我的问题还是存在,起调微信后只有一个确定按钮...试了很多方式,,没能解决
    神经病姐姐的日常:亲,我想要自定义微信支付金额,请问怎么传值啊QVQ
    阳光的大男孩儿:@我也曾是少年 参数问题,参数问题,参数问题,仔细看博客
    秦小二:@伊禾媛 我也遇到了这个问题,请问你解决了吗?
  • johnmuu:想请教,微信支付成功后onResp没被调用到是怎么回事?
    支付成功了,但需要对支付的结果进行回传,这里没回调出来...
    阳光的大男孩儿:@johnmuu 哈哈哈 原来如此
    johnmuu:@依然那么爱你forever 解决了,之前工程的人没弄好协议,所以没有回调。 :smile:
    阳光的大男孩儿:@johnmuu 我记得在log中有对应的输出。你在看看,按着我上面的代码敲一下。多试试。
  • a80b1f965ae4:马克~
    SmallHer:借楼,我想问下为什么打ipa包之后支付就失败:sob:

本文标题:iOS微信支付步骤以及出现的问题总结(三)

本文链接:https://www.haomeiwen.com/subject/ollclttx.html