iOS开发——微信支付业务流程说明(附官方文档接口)
来源:互联网 发布:二级c语言什么时候考 编辑:程序博客网 时间:2024/06/06 18:08
iOS 微信支付详解(业务流程和具体代码)
前言
微信支付在目前的移动开发中也是相当常用的技术,地位、意义的也就没什么必要再多说了。其实就微信支付这个开发技术点并不是很难的技术要点,中文文档也说的蛮清楚的。现在我就将代码和文档结合起来对该技术进行整理、归纳。
场景介绍
适用于商户在移动端APP中集成微信支付功能。
商户APP调用微信提供的SDK调用微信支付模块,商户APP会跳转到微信中完成支付,支付完后跳回到商户APP内,最后展示支付结果。
交互细节:
- 步骤1:用户进入商户APP,选择商品下单、确认购买,进入支付环节。商户服务后台生成支付订单,签名后将数据传输到APP端。
- 步骤2:用户点击后发起支付操作,进入到微信界面,调起微信支付,出现确认支付界面。
- 步骤3:用户确认收款方和金额,点击立即支付后出现输入密码界面,可选择零钱或银行卡支付。
- 步骤4:输入正确密码后,支付完成,用户端微信出现支付详情页面。
- 步骤5:回跳到商户APP中,商户APP根据支付结果个性化展示订单处理结果。
业务流程
商户系统和微信支付系统主要交互说明:
- 步骤1:用户在商户APP中选择商品,提交订单,选择微信支付。
- 步骤2:商户后台收到用户支付单,调用微信支付统一下单接口。参见【统一下单API】。
- 步骤3:统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。参与签名的字段名为appId,partnerId,prepayId,nonceStr,timeStamp,package。注意:package的值格式为Sign=WXPay
- 步骤4:商户APP调起微信支付。api参见本章节【app端开发步骤说明】
- 步骤5:商户后台接收支付通知。api参见【支付结果通知API】
- 步骤6:商户后台查询支付结果。,
api参见【查询订单API】

API详细说明
IOS:https://open.weixin.qq.com/zh_CN/htmledition/res/dev/document/sdk/ios/index.html
APP端开发步骤说明
- 1、项目设置APPID
商户在微信开放平台申请开发APP应用后,微信开放平台会生成APP的唯一标识APPID。在Xcode中打开项目,设置项目属性中的URL Schemes为您的APPID。
- 2、注册APPID
商户APP工程中引入微信lib库和头文件,调用API前,需要先向微信注册您的APPID,代码如下:
[WXApi registerApp:@"wxd930ea5d5a258f4f" withDescription:@"demo 2.0"];
- 3、调起支付
商户服务器生成支付订单,先调用【统一下单API】生成预付单,获取到prepay_id后将参数再次签名传输给APP发起支付。以下是调起微信支付的关键代码:
PayReq *request = [[[PayReq alloc] init] autorelease];request.partnerId = @"10000100";request.prepayId= @"1101000000140415649af9fc314aa427";request.package = @"Sign=WXPay";request.nonceStr= @"a462b76e7436e98e0ed6e13c64b4fd1c";request.timeStamp= @"1397527777";request.sign= @"582282D72DD2B03AD892830965F428CB16E7A256";[WXApi sendReq:request];
注意:该sign生成字段名列表见调起支付API
- 4、支付结果回调
照微信SDK Sample,在类实现onResp函数,支付完成后,微信APP会返回到商户APP并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码,如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意 一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准。代码示例如下:
-(void)onResp:(BaseResp*)resp{ if ([respisKindOfClass:[PayRespclass]]){ PayResp*response=(PayResp*)resp; switch(response.errCode){ caseWXSuccess: //服务器端查询支付通知或查询API返回的结果再提示成功 NSlog(@"支付成功"); break; default: NSlog(@"支付失败,retcode=%d",resp.errCode); break; } } }
微信支付链接:https://pay.weixin.qq.com/wiki/doc/api/index.html
- iOS开发——微信支付业务流程说明(附官方文档接口)
- 微信APP支付接口业务流程
- 发起一个微信支付请求接口— wx.chooseWXPay() – 微信JS开发文档
- 微信支付接口文档
- iOS开发——微信支付
- Android App支付系列(一):微信支付接入详细指南(附官方支付demo)
- Android App支付系列(一):微信支付接入详细指南(附官方支付demo)
- Android App支付系列(一):微信支付接入详细指南(附官方支付demo)
- Android App支付系列(一):微信支付接入详细指南(附官方支付demo)
- Android App支付系列(一):微信支付接入详细指南(附官方支付demo)
- Android 微信支付集成重点(已经看过官方开发文档)
- 微信支付接口-银行官方通道
- 微信支付接口开发(前言)
- 微信支付接口开发——如何获取openid
- 微信红包接口---你不知道的坑爹官方支付文档
- 微信支付接口开发
- 微信支付服务商开发能力说明文档范本-微信服务商开发能力说明文档下载
- 微信JS-SDK说明文档之JS接口开发
- Leetcode #5 Longest Palindromic Substring
- 389. Find the Difference
- JAVA基础6.50——对象转型
- java动态代理
- DFS深度优先搜索(1)--poj3984(基本模板题)
- iOS开发——微信支付业务流程说明(附官方文档接口)
- JAVA基础6.51——多态的概述(1)
- 最近做了一个怪物手册的功能
- 易语言 取自定义数据类型的大小
- JVM性能调优
- 点滴记录——Ubuntu 14.04中安装Sublime Text 3并使用SublimeClang插件
- 如何最快速实现倒计时功能和限时抢购功能
- CCF 201604-5 网络连接 广搜
- iOS 调用相机,获取相册,截取头像