Swift3.0接入微信支付:
? ? 一、去官網(wǎng)下載SDK;
? ? 二、配置URL TYPE
? ? ? ? 三、AppDelegate的一些配置
? ? ? ? ? ? 1、遵循WXApiDelegate的協(xié)議;
? ? ? ? ? ? 2、配置Key:WXApi.registerApp("***");
? ? ? ? ? ? 3、微信回掉:
? ? ? ? ? ? ? ? a、// iOS9.0以前調(diào)用此方法
? ? ????????????fun capplication(_application:UIApplication, handleOpen url:URL) ->Bool{
? ? ? ? ????????????if url.host=="pay"{
? ? ? ? ? ? ????????????returnWXApi.handleOpen(url, delegate:self)
? ? ? ????????????? }
? ? ? ? ????????????return true
? ? ????????????}
? ? ????????????// iOS9.0及9.0以后調(diào)用此方法
? ? ????????func????application(_application:UIApplication, open url:URL, sourceApplication:String?, annotation:Any) ->Bool{
? ? ? ? ????// 在此方法中做如下判斷,因?yàn)檫€有可能有其他的支付,如支付寶就是@"safepay"
? ? ? ????????? ifurl.host=="pay"{
? ? ? ? ? ? ????????returnWXApi.handleOpen(url, delegate:self)
? ? ? ????? ????}
? ? ? ? ????????return true
? ? ????}
????????????b、微信代理回掉
? ??????????????//微信支付回調(diào)用
? ????????? funconResp(_resp:BaseResp){
? ? ? ????????????? let response = respas!PayResp
? ? ? ? ????????????????switch response.errCode {
? ? ? ????????????? case0:
? ? ? ? ? ????????????? //支付完成
? ? ? ????????????? case-1:
? ? ? ? ? ? ????????????//支付失敗
? ? ? ? ????????case-2:
? ? ? ? ? ? ????????????//您已放棄支付
? ? ? ? ????????default:
? ? ? ? ? ?????????????//支付失敗
????????? ? ? ? }
? ? ????}
????? ? 四、WeChatPayManger的類(lèi)
? ? ? ? ? ? ? ? 我為微信支付自己封裝了一個(gè)類(lèi),統(tǒng)一管理支付這一塊邏輯
? ? ? ? ? ? ? ? a、單利(安全):static let shared = WeChatPayManger.init()
? ? ? ? ? ? ? ? b、寫(xiě)下如下方法、收到后臺(tái)返回的參數(shù),直接調(diào)用即可:func WXPayWithAppid(appid:String,noncestr:String,package:String,partnerid:String,prepayid:String,timestamp:String,sign:String){
? ? ? ? ????????let req = PayReq()
? ? ? ? ????????//由用戶(hù)微信號(hào)和AppID組成的唯一標(biāo)識(shí),用于校驗(yàn)微信用戶(hù)
? ? ? ? ????????req.openID = appid
? ? ? ? ????????// 商家id,在注冊(cè)的時(shí)候給的
? ? ? ????????? req.partnerId = partnerid
? ? ? ? ????????// 預(yù)支付訂單這個(gè)是后臺(tái)跟微信服務(wù)器交互后,微信服務(wù)器傳給你們服務(wù)器的,你們服務(wù)器再傳給你
? ? ? ? ????????req.prepayId? = prepayid
? ? ? ? ????????// 根據(jù)財(cái)付通文檔填寫(xiě)的數(shù)據(jù)和簽名
? ? ? ? ????????req.package? = package
? ? ? ?????????// 隨機(jī)編碼,為了防止重復(fù)的,在后臺(tái)生成
? ? ? ? ????????req.nonceStr? = noncestr
????????? ? ? ? // 這個(gè)是時(shí)間戳,也是在后臺(tái)生成的,為了驗(yàn)證支付的
? ? ? ????????? req.timeStamp =UInt32(timestamp)!
? ????????? ? ? print(UInt32(timestamp)!)
? ? ????????? ? // 這個(gè)簽名也是后臺(tái)做的
? ? ? ????????? req.sign = sign
? ? ????????? ? //發(fā)送請(qǐng)求到微信,等待微信返回onResp
? ? ????????? ? WXApi .send(req)
????? ? }