懒人直接上Git代码 https://github.com/gaowenhui0822/app-pay-demo
一.准备工作
- 微信开放平台注册账号
- 在平台进行签约
- 创建应用
二.配置工程
下载SDK
导入SDK引入头文件
三.代码部分
1.在AppDelegate里向微信注册
在didFinishLaunchingWithOptions 方法里
- //向微信注册
- WXApi.registerApp(WX_APPID,withDescription:"xxxx")
2.发送预支付(Prepay)数据
预支付数据由后台返回,格式如下
- {
- "appid":"wxxxxxxxxxxx",
- "noncestr":"Hk8dsZoMOdTXGjkJ",
- "package":"Sign=WXPay",
- "partnerid":"01001010110",
- "prepayid":"wx2016050000000000000000000000",
- "sign":"B4879FFFA8B65522A04034E2D027A3B8",
- "timestamp":"1459394923",
- "success":true
- }
字段名 | 变量名 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|---|
应用ID | appid | String(32) | 是 | wx8888888888888888 | 微信开放平台审核通过的应用APPID |
商户号 | partnerid | 1900000109 | 微信支付分配的商户号 | ||
预支付交易会话ID | prepayid | WX1217752501201407033233368018 | 微信返回的支付交易会话ID | ||
扩展字段 | package | String(128) | Sign=WXPay | 暂填写固定值Sign=WXPay | |
随机字符串 | noncestr | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串,不长于32位。推荐随机数生成算法 | ||
时间戳 | timestamp | String(10) | 1412000000 | 时间戳,请见接口规则-参数规定 | |
签名 | sign | C380BEC2BFD727A4B6845133519F3AD6 | 签名,详见签名生成算法 |
发送请求
- //MARK:微信支付
- funcwechatPay(model:WXPayModel)
- {
- letreq=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)
- }
3.处理回调
App支付完成后返回App,在Appdelegate中实现协议 WXApiDelegate 中的 onResp方法
- //MARK:-WXApiDelegate处理支付结果
- funconResp(resp:BaseResp!)
- {
- varstrTitle="支付结果"
- varstrMsg="what:\(resp.errCode)"
- ifresp.isKindOfClass(PayResp)
- {
- print("retcode=\(resp.errCode),retstr=\(resp.errStr)")
- switchresp.errCode
- {
- case0:
- NSNotificationCenter.defaultCenter().postNotificationName("WXPaySuccessNotification",object:nil)
- default:
- strMsg="支付失败,请您重新支付!"
- }
- }
- }