swift 移动支付之【微信支付】开发步骤
微信开放平台
懒人直接上Git代码 https://github.com/gaowenhui0822/app-pay-demo
一.准备工作
- 微信开放平台注册账号
- 在平台进行签约
- 创建应用
二.配置工程
下载SDK 微信支付SDK
导入SDK引入头文件 还是最好创建文件夹(WeChatSDK),将文件放入文件夹后再导入工程 桥接文件里导入头文件 [plain] view plain copy print ?
- #import "WXApi.h"
- #import "WXApiObject.h"
#import "WXApi.h"
#import "WXApiObject.h" 设置URL Types (TARGETS-->Info)
三.代码部分
1.在AppDelegate里向微信注册
在 didFinishLaunchingWithOptions 方法里
[plain] view plain copy print ?
- //向微信注册
- WXApi.registerApp(WX_APPID, withDescription: "xxxx")
//向微信注册
WXApi.registerApp(WX_APPID, withDescription: "xxxx") 2.发送预支付(Prepay)数据
预支付数据由后台返回,格式如下
[plain] view plain copy print ?
- {
- "appid": "wxxxxxxxxxxx",
- "noncestr": "Hk8dsZoMOdTXGjkJ",
- "package": "Sign=WXPay",
- "partnerid": "01001010110",
- "prepayid": "wx2016050000000000000000000000",
- "sign": "B4879FFFA8B65522A04034E2D027A3B8",
- "timestamp": "1459394923",
- "success": true
- }
{"appid": "wxxxxxxxxxxx","noncestr": "Hk8dsZoMOdTXGjkJ","package": "Sign=WXPay","partnerid": "01001010110","prepayid": "wx2016050000000000000000000000","sign": "B4879FFFA8B65522A04034E2D027A3B8","timestamp": "1459394923","success": true
}
| 字段名 | 变量名 | 类型 | 必填 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 应用ID | appid | String(32) | 是 | wx8888888888888888 | 微信开放平台审核通过的应用APPID |
| 商户号 | partnerid | String(32) | 是 | 1900000109 | 微信支付分配的商户号 |
| 预支付交易会话ID | prepayid | String(32) | 是 | WX1217752501201407033233368018 | 微信返回的支付交易会话ID |
| 扩展字段 | package | String(128) | 是 | Sign=WXPay | 暂填写固定值Sign=WXPay |
| 随机字符串 | noncestr | String(32) | 是 | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串,不长于32位。推荐随机数生成算法 |
| 时间戳 | timestamp | String(10) | 是 | 1412000000 | 时间戳,请见接口规则-参数规定 |
| 签名 | sign | String(32) | 是 | C380BEC2BFD727A4B6845133519F3AD6 | 签名,详见签名生成算法 |
发送请求
[plain] view plain copy print ?
- //MARK: 微信支付
- func wechatPay(model:WXPayModel)
- {
- let req = PayReq()
- req.partnerId = model.PartnerId
- req.prepayId = model.PrepayId
- req.nonceStr = model.NonceStr
- req.timeStamp = UInt32(model.TimeStamp!)!
- req.package = model.PackageValue
- req.sign = model.Sign
- WXApi.sendReq(req)
- }
//MARK: 微信支付func wechatPay(model:WXPayModel){let req = PayReq()req.partnerId = model.PartnerIdreq.prepayId = model.PrepayIdreq.nonceStr = model.NonceStrreq.timeStamp = UInt32(model.TimeStamp!)!req.package = model.PackageValuereq.sign = model.SignWXApi.sendReq(req)} 3.处理回调
App支付完成后返回App, 在Appdelegate中实现协议 WXApiDelegate 中的 onResp方法
- //MARK:- WXApiDelegate 处理支付结果
- func onResp(resp: BaseResp!)
- {
- var strTitle = "支付结果"
- var strMsg = "what:\(resp.errCode)"
- if resp.isKindOfClass(PayResp)
- {
- print("retcode = \(resp.errCode), retstr = \(resp.errStr)")
- switch resp.errCode
- {
- case 0 :
- NSNotificationCenter.defaultCenter().postNotificationName("WXPaySuccessNotification", object: nil)
- default:
- strMsg = "支付失败,请您重新支付!"
- }
- }
- }
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
