導(dǎo)入微信支付SDK
1孤荣、在podfile中寫pod 'WechatOpenSDK'
2迄埃、cd到podfile文件所在文件夾
3挠乳、pod install
4重挑、pod search WechatOpenSDK。如果出現(xiàn)以下界面
恭喜帽馋,微信SDK已經(jīng)導(dǎo)入成功
如果出現(xiàn)以下錯誤
解決辦法:終端輸入:rm ~/Library/Caches/CocoaPods/search_index.json
執(zhí)行完成后在輸入pod search WechatOpenSDK搅方。
配置微信支付
1、在工程的配置文件下TARGETS - info - URL Types 茬斧,點(diǎn)擊添加按鈕腰懂,出現(xiàn)以下界面梗逮。其中identifier隨便輸入,Schemes輸入微信支付的APPID项秉,其他兩個不用管。
2慷彤、打開infoPlist文件添加 LSApplicationQueriesSchemes并設(shè)置其類型為array娄蔼,再添加兩個數(shù)組元素。如下圖
使用
1底哗、創(chuàng)建橋接文件
2岁诉、在橋接文件寫
#import "WXApi.h"
#import "WechatAuthSDK.h"
3、在AppDelegate的didFinishLaunchingWithOptions方法里注冊微信支付:
WXApi.registerApp(WXAPPID)
讓AppDelegate遵循WXApiDelegate協(xié)議在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)
}
實(shí)現(xiàn)微信的兩個方法跋选。
func onReq(_ req: BaseReq!) {
//收到一個來自微信的請求涕癣,第三方應(yīng)用程序處理完后調(diào)用sendResp向微信發(fā)送結(jié)果
//一般不用管
}
func onResp(_ resp: BaseResp!) {
if resp.isKind(of: PayResp.self) {
switch resp.errCode {//支付結(jié)果
case 0://0代表支付成功
NSLog("支付成功")
NotificationCenter.default.post(Notification.init(name: Notification.Name(rawValue: "WXPaySuccess")))//發(fā)消息告訴觀察者已經(jīng)支付成功
break;
default:
break;
}
}else if BaseResp.isKind(of: SendAuthResp.self){//一般不用管
}
}
4、最后當(dāng)然是在需要支付的界面添加觀察者并發(fā)起支付請求啦前标。示例如下(至于每個參數(shù)的值是多少坠韩,后臺會提供啦,不用考慮那么多炼列,騷年V桓椤)
WXApi.registerApp(WXAPPID)
let payRequest = PayReq()//創(chuàng)建支付請求
payRequest.prepayId = ""
payRequest.partnerId = ""
payRequest.package = ""
payRequest.nonceStr = ""
payRequest.timeStamp = UInt32(("如果這里是字符串,就需要轉(zhuǎn)為Int32類型" as NSString).intValue)
payRequest.sign = WXPayData.sign
WXApi.send(payRequest)//給微信發(fā)起請求
完工