swift 移动支付之【微信支付】开发步骤
2016-07-20 11:37
489 查看
微信开放平台
懒人直接上Git代码 https://github.com/gaowenhui0822/app-pay-demo
在平台进行签约
创建应用
微信支付SDK
导入SDK引入头文件
还是最好创建文件夹(WeChatSDK),将文件放入文件夹后再导入工程
桥接文件里导入头文件
[plain]
view plain
copy
print?
#import "WXApi.h"
#import "WXApiObject.h"</span>
设置URL Types (TARGETS-->Info)
[plain]
view plain
copy
print?
//向微信注册
WXApi.registerApp(WX_APPID, withDescription: "xxxx")
[plain]
view plain
copy
print?
{
"appid": "wxxxxxxxxxxx",
"noncestr": "Hk8dsZoMOdTXGjkJ",
"package": "Sign=WXPay",
"partnerid": "01001010110",
"prepayid": "wx2016050000000000000000000000",
"sign": "B4879FFFA8B65522A04034E2D027A3B8",
"timestamp": "1459394923",
"success": true
}
参数说明
发送请求
[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)
}
在Appdelegate中实现协议 WXApiDelegate 中的 onResp方法
[plain]
view plain
copy
print?
//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 = "支付失败,请您重新支付!"
}
}
}
懒人直接上Git代码 https://github.com/gaowenhui0822/app-pay-demo
一.准备工作
微信开放平台注册账号在平台进行签约
创建应用
二.配置工程
下载SDK微信支付SDK
导入SDK引入头文件
还是最好创建文件夹(WeChatSDK),将文件放入文件夹后再导入工程
桥接文件里导入头文件
[plain]
view plain
copy
print?
#import "WXApi.h"
#import "WXApiObject.h"</span>
#import "WXApi.h" #import "WXApiObject.h"</span>
设置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.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方法
[plain]
view plain
copy
print?
//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 = "支付失败,请您重新支付!"
}
}
}
相关文章推荐
- Apple Swift学习教程
- 介绍 Fedora 上的 Swift
- Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
- Swift自定义iOS中的TabBarController并为其添加动画
- Swift编程中的泛型解析
- Swift中定义二维数组的方法及遍历方法示例
- Swift实现Selection Sort选择排序算法的实例讲解
- 简单分析Swift语言的一些基本特征
- 使用 Swift 语言编写 Android 应用入门
- 理解二叉堆数据结构及Swift的堆排序算法实现示例
- Swift与C语言指针结合使用实例
- Swift心得笔记之控制流
- 用Swift构建一个简单的iOS邮件应用的方法
- 苹果公司推出的新编程语言Swift简介和入门教程
- Swift实现iOS应用中短信验证码倒计时功能的实例分享
- 使用Swift代码实现iOS手势解锁、指纹解锁实例详解
- 探讨Swift数组和字典
- Swift中的指针操作和使用详细介绍
- 详解Swift中的数据类型类型转换