您的位置:首页 > 移动开发 > Swift

swift 移动支付之【微信支付】开发步骤

2016-07-20 11:37 489 查看
微信开放平台

懒人直接上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
}


参数说明

字段名变量名类型必填示例值描述
应用IDappidString(32)wx8888888888888888微信开放平台审核通过的应用APPID
商户号partneridString(32)1900000109微信支付分配的商户号
预支付交易会话IDprepayidString(32)WX1217752501201407033233368018微信返回的支付交易会话ID
扩展字段packageString(128)Sign=WXPay暂填写固定值Sign=WXPay
随机字符串noncestrString(32)5K8264ILTKCH16CQ2502SI8ZNMTM67VS随机字符串,不长于32位。推荐随机数生成算法
时间戳timestampString(10)1412000000时间戳,请见接口规则-参数规定
签名signString(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 = "支付失败,请您重新支付!"  
            }  
        }  
    } 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  swift