导入微信支付SDK
1、在podfile中写pod 'WechatOpenSDK'
2、cd到podfile文件所在文件夹
3、pod install
4、pod search WechatOpenSDK。如果出现以下界面
恭喜,微信SDK已经导入成功
如果出现以下错误
解决办法:终端输入:rm ~/Library/Caches/CocoaPods/search_index.json
执行完成后在输入pod search WechatOpenSDK。
配置微信支付
1、在工程的配置文件下TARGETS - info - URL Types ,点击添加按钮,出现以下界面。其中identifier随便输入,Schemes输入微信支付的APPID,其他两个不用管。
2、打开infoPlist文件添加 LSApplicationQueriesSchemes并设置其类型为array,再添加两个数组元素。如下图
使用
1、创建桥接文件
2、在桥接文件写
#import "WXApi.h"
#import "WechatAuthSDK.h"
3、在AppDelegate的didFinishLaunchingWithOptions方法里注册微信支付:
WXApi.registerApp(WXAPPID)
让AppDelegate遵循WXApiDelegate协议在AppDelegate中添加两个代理方法
func application(_ application: UIApplication, handleOpen url: URL) -> Bool {
return WXApi.handleOpen(url, delegate: self)
}
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
return WXApi.handleOpen(url, delegate: self)
}
实现微信的两个方法。
func onReq(_ req: BaseReq!) {
//收到一个来自微信的请求,第三方应用程序处理完后调用sendResp向微信发送结果
//一般不用管
}
func onResp(_ resp: BaseResp!) {
if resp.isKind(of: PayResp.self) {
switch resp.errCode {//支付结果
case 0://0代表支付成功
NSLog("支付成功")
NotificationCenter.default.post(Notification.init(name: Notification.Name(rawValue: "WXPaySuccess")))//发消息告诉观察者已经支付成功
break;
default:
break;
}
}else if BaseResp.isKind(of: SendAuthResp.self){//一般不用管
}
}
4、最后当然是在需要支付的界面添加观察者并发起支付请求啦。示例如下(至于每个参数的值是多少,后台会提供啦,不用考虑那么多,骚年!)
WXApi.registerApp(WXAPPID)
let payRequest = PayReq()//创建支付请求
payRequest.prepayId = ""
payRequest.partnerId = ""
payRequest.package = ""
payRequest.nonceStr = ""
payRequest.timeStamp = UInt32(("如果这里是字符串,就需要转为Int32类型" as NSString).intValue)
payRequest.sign = WXPayData.sign
WXApi.send(payRequest)//给微信发起请求
完工