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


微信开放平台


懒人直接上Git代码 https://github.com/gaowenhui0822/app-pay-demo

一.准备工作

  • 微信开放平台注册账号 
  • 在平台进行签约
  • 创建应用

二.配置工程


下载SDK

导入SDK引入头文件
还是最好创建文件夹(WeChatSDK),将文件放入文件夹后再导入工程
桥接文件里导入头文件
  1. #import "WXApi.h"  
  2. #import "WXApiObject.h"</span>  
#import "WXApi.h"
#import "WXApiObject.h"</span>

设置URL Types (TARGETS-->Info)


三.代码部分


1.在AppDelegate里向微信注册

在 didFinishLaunchingWithOptions 方法里 

  1. //向微信注册  
  2. WXApi.registerApp(WX_APPID, withDescription: "xxxx")  
//向微信注册
WXApi.registerApp(WX_APPID, withDescription: "xxxx")

2.发送预支付(Prepay)数据

预支付数据由后台返回,格式如下

  1. {  
  2.   "appid": "wxxxxxxxxxxx",  
  3.   "noncestr": "Hk8dsZoMOdTXGjkJ",  
  4.   "package": "Sign=WXPay",  
  5.   "partnerid": "01001010110",  
  6.   "prepayid": "wx2016050000000000000000000000",  
  7.   "sign": "B4879FFFA8B65522A04034E2D027A3B8",  
  8.   "timestamp": "1459394923",  
  9.   "success": true  
  10. }  
{
  "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 签名,详见签名生成算法

发送请求

  1. //MARK: 微信支付  
  2.     func wechatPay(model:WXPayModel)  
  3.     {  
  4.         let req = PayReq()  
  5.         req.partnerId = model.PartnerId  
  6.         req.prepayId = model.PrepayId  
  7.         req.nonceStr = model.NonceStr  
  8.         req.timeStamp = UInt32(model.TimeStamp!)!  
  9.         req.package = model.PackageValue  
  10.         req.sign = model.Sign  
  11.         WXApi.sendReq(req)  
  12.   
  13.     }  
//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方法

  1. //MARK:- WXApiDelegate 处理支付结果  
  2.     func onResp(resp: BaseResp!)  
  3.     {  
  4.         var strTitle = "支付结果"  
  5.         var strMsg = "what:\(resp.errCode)"  
  6.         if resp.isKindOfClass(PayResp)  
  7.         {  
  8.             print("retcode = \(resp.errCode), retstr = \(resp.errStr)")  
  9.             switch resp.errCode  
  10.             {  
  11.             case 0 :  
  12.                 NSNotificationCenter.defaultCenter().postNotificationName("WXPaySuccessNotification", object: nil)  
  13.             default:  
  14.                 strMsg = "支付失败,请您重新支付!"  
  15.             }  
  16.         }  
  17.     } 

微信开放平台


懒人直接上Git代码 https://github.com/gaowenhui0822/app-pay-demo

一.准备工作

  • 微信开放平台注册账号 
  • 在平台进行签约
  • 创建应用

二.配置工程


下载SDK

导入SDK引入头文件
还是最好创建文件夹(WeChatSDK),将文件放入文件夹后再导入工程
桥接文件里导入头文件
  1. #import "WXApi.h"  
  2. #import "WXApiObject.h"</span>  
#import "WXApi.h"
#import "WXApiObject.h"</span>

设置URL Types (TARGETS-->Info)


三.代码部分


1.在AppDelegate里向微信注册

在 didFinishLaunchingWithOptions 方法里 

  1. //向微信注册  
  2. WXApi.registerApp(WX_APPID, withDescription: "xxxx")  
//向微信注册
WXApi.registerApp(WX_APPID, withDescription: "xxxx")

2.发送预支付(Prepay)数据

预支付数据由后台返回,格式如下

  1. {  
  2.   "appid": "wxxxxxxxxxxx",  
  3.   "noncestr": "Hk8dsZoMOdTXGjkJ",  
  4.   "package": "Sign=WXPay",  
  5.   "partnerid": "01001010110",  
  6.   "prepayid": "wx2016050000000000000000000000",  
  7.   "sign": "B4879FFFA8B65522A04034E2D027A3B8",  
  8.   "timestamp": "1459394923",  
  9.   "success": true  
  10. }  
{
  "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 签名,详见签名生成算法

发送请求

  1. //MARK: 微信支付  
  2.     func wechatPay(model:WXPayModel)  
  3.     {  
  4.         let req = PayReq()  
  5.         req.partnerId = model.PartnerId  
  6.         req.prepayId = model.PrepayId  
  7.         req.nonceStr = model.NonceStr  
  8.         req.timeStamp = UInt32(model.TimeStamp!)!  
  9.         req.package = model.PackageValue  
  10.         req.sign = model.Sign  
  11.         WXApi.sendReq(req)  
  12.   
  13.     }  
//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方法

  1. //MARK:- WXApiDelegate 处理支付结果  
  2.     func onResp(resp: BaseResp!)  
  3.     {  
  4.         var strTitle = "支付结果"  
  5.         var strMsg = "what:\(resp.errCode)"  
  6.         if resp.isKindOfClass(PayResp)  
  7.         {  
  8.             print("retcode = \(resp.errCode), retstr = \(resp.errStr)")  
  9.             switch resp.errCode  
  10.             {  
  11.             case 0 :  
  12.                 NSNotificationCenter.defaultCenter().postNotificationName("WXPaySuccessNotification", object: nil)  
  13.             default:  
  14.                 strMsg = "支付失败,请您重新支付!"  
  15.             }  
  16.         }  
  17.     } 

猜你喜欢

转载自blog.csdn.net/gaowenhui2008/article/details/51966815