iOS 微信支付详解

最近公司需要开发支付功能,经过这两天的工作成功集成了app微信支付、支付宝支付。本文主要讲述微信支付的流程和在集成过程中遇到的坑,和大家分享,共同进步。

一、首先了解一下微信支付的流程


微信支付流程

图中展示了整个微信支付的流程:

1.用户使用iOS客户端,选择商品下单。

2.iOS客户端将用户的商品数据传给商户服务器,请求生成支付订单。

3.商户后台调用统一下单API向微信的服务器发送请求,微信服务器生成预付单,并生成一个prepay_id返回给商户后台。

4.商户后台将这个prepay_id返回给商户客户端。

5.用户点击确认支付,这时候商户客户端调用SDK打开微信客户端,进行微信支付。

6.微信客户端向微信服务器发起支付请求并返回支付结果(他们之间交互用的就是prepay_id这个参数,微信的服务器要验证微信客户端传过去的参数是否跟第三步中生成的那个id一致)。

7.用户输入支付密码后,微信客户端提交支付授权,跟微信服务器交互,完成支付

8.微信服务器给微信客户端发送支付结果提示,并异步给商户服务器发送支付结果通知。

9.商户客户端通过支付结果回调接口查询支付结果,并向后台检查支付结果是否正确,后台返回支付结果。

10.商户客户端显示支付结果,完成订单,发货。

调用微信支付前,需要下单、签名等操作,以便获取微信支付所必要的参数。为了提高安全性,下单、签名操作一般是在后台完成。

总结起来在iOS客户端的所关注的支付流程分为三步

1.用户点击支付按钮,生成商品订单发给我们的服务器,

2.服务器返回支付必须的参数,iOS客户端去调用微信app

3.处理支付结果,展示给用户。

相信大家肯定都在手机app上使用过微信或者支付宝支付过,可以动手去试验一下。

二、微信支付的集成

1.要想集成微信支付首先需要商户向微信开放平台申请开发APP应用,微信开放平台会生成APP的唯一标识APPID。然后利用这个APPID向微信sdk注册支付。

2.下载微信支付SDK和demo:下载SDK和demo

3.把下载的支付SDK拖到项目工程中,然后添加项目支付SDK依赖的库,TARGETS-->Build Phases -->Link Binary With Libraries


添加过程


需要添加的库

4.设置iOS客户端的URL,identifier为weixin URL schemes设置为申请到的APPID

添加URL schemes

5.在Info.plist中设置app访问白名单和支持HTTP协议


设置白名单


设置工程支持HTTP

6.在appdelegate中注册微信支付

导入头文件#import"WXApi.h",


注册SDK

7.在需要支付的类的方法中发起支付请求


支付方法

为了提高安全性,下单、签名操作一般是在后台完成。所以上面用到的参数中处理APPID是固定的,其他参数最后都由后台返回给我们直接使用。

8.处理支付结果,最好在回调用请求我们的服务器然后根据这个请求判断支付是否成功。

不管支付成功与否,都是走下面的方法,当我们发送一个sendReq后,就会收到一个来自微信的处理结果。


支付回调


errcode

9.大功告成。

三、在支付过程中可能会遇到的问题

1.在集成过程中如果遇到这样的错误


错误截图

可以修改为配置


解决方案

2.点击支付按钮不能打开微信app,原因是参数大多是错误的,在调用微信app时SDK会判断,不通过则不能打开app。

3.打开app之后只有一个白色的确定的按钮,点击它会返回iOS客户端,

引起这个问题的主要原因就是调用微信app时,参数设置的不正确,而且多半是因为签名的问题,就是参数中的sign值的问题,在后台向微信后台请求账单的时候有过一次签名,而客户端吊起支付的签名和那个签名是不同的,多半是后台直接把那个签名发送给客户端,并没有进行二次签名,可以和后台协商,再签一次,因为两次签名的规则都一样,所以就没必要再让客户端写一遍签名规则了.

错误示例

4.如果项目中集成了友盟和shareSDK分享,那就不用再导入SDK了,因为分享的SDK中已经包括了微信的SDK,如果再次导入会出现很多意想不到的问题。

5.如果支付完成之后不能返回iOS客户端,多半是URL schemes的设置问题。

6.在支付的回调中最好不要直接以回调的errcode来判断支付成功与否,应该请求我们的服务器看时候支付成功,然后展示支付结果给用户。

7.微信支付的金额是以分为单位。

8.微信官方提供的调用微信app所需参数配置的链接,http://wxpay.weixin.qq.com/pub_v2/app/app_pay.php,用于调试支付接口的参数设置;这里所获取到的参数可以全部由我们的后台提供。示例:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容