最新版本支付寶與微信支付集成與使用

自己在兩個(gè)項(xiàng)目中接入了移動(dòng)端支付寶和微信支付塔嬉,也對(duì)支付代碼進(jìn)行了簡(jiǎn)單的封裝。在項(xiàng)目集成與調(diào)試的時(shí)候遇到了一些問(wèn)題细诸,自己也一直想找時(shí)間進(jìn)行整理,方便以后在項(xiàng)目中集成與使用糟需。支付寶SDK微信SDK都進(jìn)行了相應(yīng)的更新,我項(xiàng)目中使用的還是老版本的SDK,下面開(kāi)始介紹最新版本的SDK集成與使用。

一糊探、支付寶

1> 快速接入

在接入前钾埂,首先要對(duì)流程要有相應(yīng)的了解河闰,主要有以下三個(gè)步驟(具體詳情科平,請(qǐng)點(diǎn)擊上面鏈接查看):

  • 創(chuàng)建應(yīng)用并獲取APPID
  • 配置應(yīng)用


    1.png
  • 集成和開(kāi)發(fā)


    81fdbf664f654970835e5426b55959f6.jpg

2> SDK下載

3> 集成SDK

[1]、將下面兩個(gè)文件拖入到工程
AlipaySDK.bundle
AlipaySDK.framework

屏幕快照 2018-01-04 上午11.18.23.png

添加官方demo中依賴(lài)文件到工程姜性,如下圖所示:
屏幕快照 2018-01-04 上午11.45.26.png

[2]瞪慧、 添加依賴(lài)庫(kù)

libc++.tbd
libz.tbd
SystemConfiguration.framework
CoreTelephony.framework
QuartzCore.framework
CoreText.framework
CoreGraphics.framework
UIKit.framework
Foundation.framework
CFNetwork.framework
CoreMotion.framework
AlipaySDK.famework

注意

如果是Xcode 7.0之后的版本,需要添加libc++.tbd部念、libz.tbd弃酌;
如果是Xcode 7.0之前的版本,需要添加libc++.dylib儡炼、libz.dylib

屏幕快照 2018-01-04 上午11.17.28.png

[3]妓湘、配置info.plist,添加支付回調(diào)URL scheme,可以自己定義一個(gè)名字乌询,如下圖:
屏幕快照 2018-01-04 下午3.19.54.png

好了榜贴,到這里,SDK庫(kù)文件和系統(tǒng)依賴(lài)庫(kù)都已經(jīng)導(dǎo)入到工程妹田,command+R運(yùn)行一下唬党,你會(huì)發(fā)現(xiàn)報(bào)錯(cuò),就是oppssl/asn1.h not found鬼佣,在我最開(kāi)始集成支付寶的時(shí)候驶拱,這個(gè)問(wèn)題折騰了我好久,網(wǎng)上和官方都能找到解決方法晶衷,雖然每次都解決了蓝纲,但是都嘗試了好久。

報(bào)錯(cuò)解決
1晌纫、oppssl/asn1.h not found

屏幕快照 2018-01-04 上午11.48.22.png

Build Settings下搜索Header Search Paths中添加$(SRCROOT)/項(xiàng)目名稱(chēng),我寫(xiě)的WBPayManagerDemo中的openssl文件夾在AliSDK_V15.5.0文件下驻龟,所以這里需要修改
方式一:手動(dòng)添加路徑
$(SRCROOT)/WBPayManagerDemo/AliSDK_V15.5.0
屏幕快照 2018-01-04 下午12.01.02.png

方式二:將AliSDK_V15.5.0文件夾拖入到Header Search Paths
Untitled.gif

二、微信

1> 接入指南

微信SDK集成主要有以下三個(gè)步驟:

  • 向微信注冊(cè)你的應(yīng)用程序id
    請(qǐng)到 開(kāi)發(fā)者應(yīng)用登記頁(yè)面 進(jìn)行登記缸匪,登記并選擇移動(dòng)應(yīng)用進(jìn)行設(shè)置后翁狐,將獲得AppID,可立即用于開(kāi)發(fā)凌蔬。但應(yīng)用登記完成后還需要提交審核露懒,只有審核通過(guò)的應(yīng)用才能正式發(fā)布使用。

  • 下載微信終端SDK文件
    SDK文件包括 libWeChatSDK.a砂心,WXApi.h懈词,WXApiObject.h 三個(gè)。
    如選用手動(dòng)集成辩诞,請(qǐng)前往“資源下載頁(yè)”下載最新SDK包

  • 搭建開(kāi)發(fā)環(huán)境

2> 項(xiàng)目集成

  • 1坎弯、通過(guò)CocoaPods集成
    pod 'WechatOpenSDK'
    注意
  • 命令行下執(zhí)行pod search WechatOpenSDK,如顯示的WechatOpenSDK版本不是最新的,則先執(zhí)行pod repo update操作更新本地repo的內(nèi)容
  • 對(duì)于之前SDK放在主工程目錄下,切換成CocoaPods的形式抠忘,執(zhí)行pod install 之后撩炊,出現(xiàn)
    Use the $(inherited) flag, or
    Remove the build settings from the target.
    解決方法是 把工程target中的build Setting里面PODS_ROOT的值替換成$(inherited)Other Linker Flags中 -all_load 替換成$(inherited)
    image

    image

    2、手動(dòng)集成
    [1]崎脉、SDK下載
  • 官方下載地址
  • WeChatSDK_V1.7.8(現(xiàn)在項(xiàng)目使用的版本拧咳,通過(guò)ShareSDK導(dǎo)入)
  • WechatSDK1.8.2
    [2]、導(dǎo)入工程
    將WechatSDK1.8.2文件夾(libWeChatSDK.a囚灼、WechatAuthSDK.h骆膝、WXApi.hWXApiObject.h)拖入到工程灶体。
    屏幕快照 2018-01-04 下午2.42.39.png

    [3]阅签、添加依賴(lài)庫(kù)
SystemConfiguration.framework
libz.tbd 
libsqlite3.0.tbd
libc++.tbd 
Security.framework
CoreTelephony.framework
CFNetwork.framework

注意
Xcode 7.0之前
libz.tbd 對(duì)應(yīng)的是libz.dylib
libsqlite3.0.tbd對(duì)應(yīng)的是libsqlite3.0.dylib
libc++.tbd對(duì)應(yīng)的是libc++.dylib
[4]、配置工程

  • 在你的工程文件中選擇Build Setting蝎抽,在"Other Linker Flags"中加入"-Objc -all_load"愉择,在Search Paths中添加 libWeChatSDK.a ,WXApi.h织中,WXApiObject.h锥涕,文件所在位置(如下圖所示)。


    屏幕快照 2018-01-04 下午3.00.25.png
  • 在info.plist添加key為LSApplicationQueriesSchemes狭吼,Type為數(shù)組類(lèi)型层坠,添加一個(gè)item為weixin,如下圖所示:
    屏幕快照 2018-01-04 下午3.04.56.png
  • 在Xcode中刁笙,選擇你的工程設(shè)置項(xiàng)破花,選中“TARGETS”一欄,在“info”標(biāo)簽欄的“URL type“添加“URL scheme”為你所注冊(cè)的應(yīng)用程序id


    屏幕快照 2018-01-04 下午3.13.56.png

三疲吸、支付封裝

封裝主要是新建了一個(gè)工具類(lèi)座每,通過(guò)封裝工具,可以將支付寶Block回調(diào)和微信的代理回調(diào)集中在一個(gè)回調(diào)里摘悴,支付只需調(diào)用一行代碼就OK峭梳,我現(xiàn)在的項(xiàng)目都是用的這個(gè)支付工具類(lèi),下面介紹下核心代碼和使用注意事項(xiàng)吧蹂喻。
[1]注意URL Types的配置
WBPayManager.h的頭文件中葱椭,定義了兩個(gè)URL identifier,所以配置的時(shí)候口四,需要保證info里的identifier和頭文件定義的一致孵运。

//此處必須保證在Info.plist 中的 URL Types 的 Identifier 對(duì)應(yīng)一致
UIKIT_EXTERN NSString * const ALIPAY_URLIDENTIFIER;/**  支付寶URL NAME  */
UIKIT_EXTERN NSString * const WECHAT_URLIDENTIFIER;/**  微信URL NAME  */
屏幕快照 2018-01-04 下午3.59.03.png

[2]、處理支付回調(diào)

/**  < 微信需要在程序加載完成注冊(cè) >  */
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    [[WBPayManager shareManager] wb_registerApp];
    return YES;
}

/**
 *
 *  最老的版本蔓彩,最好也寫(xiě)上
 */
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return [[WBPayManager shareManager] wb_handleUrl:url];
}

// NOTE: 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
    return [[WBPayManager shareManager] wb_handleUrl:url];
}

/**  *  iOS 9.0 之前 會(huì)調(diào)用  */
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [[WBPayManager shareManager] wb_handleUrl:url];
}

[3]治笨、發(fā)起支付

  • 支付寶
//直接傳入后臺(tái)返回的訂單信息支付串
[[WBPayManager shareManager] wb_payWithOrderInfo:orderInfo payCallBack:^(WBPayStatusCode errorCode, NSString *errorStr) {
    //支付結(jié)果回調(diào)
}]
  • 微信
//構(gòu)建PayReq對(duì)象驳概,后臺(tái)返回
PayReq * req = [PayReq new];
req.partnerId = orderModel.wechatpay_data.partnerid;
req.prepayId= orderModel.wechatpay_data.prepayid;
req.package = orderModel.wechatpay_data.package;
req.nonceStr= orderModel.wechatpay_data.noncestr;
req.timeStamp= (UInt32)[orderModel.wechatpay_data.timestamp integerValue];
req.sign= orderModel.wechatpay_data.sign;
[[WBPayManager shareManager] wb_payWithOrderInfo:req payCallBack:^(WBPayStatusCode errorCode, NSString *errorStr) {
    //支付結(jié)果回調(diào)
}]

具體詳情,請(qǐng)戳GitHub:WBPayManagerDemo

結(jié)語(yǔ)

終于整理完成了旷赖,通過(guò)這次整理顺又,希望以后在項(xiàng)目集成少遇到一些坑吧,微信的支付文檔感覺(jué)確實(shí)有點(diǎn)老了杠愧,SDK在更新,文檔卻沒(méi)有更新逞壁,不過(guò)也沒(méi)有關(guān)系流济。最新版本的SDK在自己的項(xiàng)目中也沒(méi)有使用,項(xiàng)目中還是用的老版本的SDK腌闯,我也將老版本SDK的下載鏈接也放在文章中绳瘟。如有不對(duì)的地方,歡迎指正姿骏,希望這篇文章能對(duì)你有所幫助糖声。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市分瘦,隨后出現(xiàn)的幾起案子蘸泻,更是在濱河造成了極大的恐慌,老刑警劉巖嘲玫,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悦施,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡去团,警方通過(guò)查閱死者的電腦和手機(jī)抡诞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)土陪,“玉大人昼汗,你說(shuō)我怎么就攤上這事」砣福” “怎么了顷窒?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)源哩。 經(jīng)常有香客問(wèn)我蹋肮,道長(zhǎng),這世上最難降的妖魔是什么璧疗? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任坯辩,我火速辦了婚禮,結(jié)果婚禮上崩侠,老公的妹妹穿的比我還像新娘漆魔。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布改抡。 她就那樣靜靜地躺著矢炼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪阿纤。 梳的紋絲不亂的頭發(fā)上句灌,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音欠拾,去河邊找鬼胰锌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛藐窄,可吹牛的內(nèi)容都是我干的资昧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼荆忍,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼格带!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起刹枉,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤叽唱,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后微宝,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體尔觉,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年芥吟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了侦铜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡钟鸵,死狀恐怖钉稍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情棺耍,我是刑警寧澤贡未,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站蒙袍,受9級(jí)特大地震影響俊卤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜害幅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一消恍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧以现,春花似錦狠怨、人聲如沸约啊。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)恰矩。三九已至,卻和暖如春憎蛤,著一層夾襖步出監(jiān)牢的瞬間外傅,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工俩檬, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留萎胰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓豆胸,卻偏偏與公主長(zhǎng)得像奥洼,于是被迫代替她去往敵國(guó)和親巷疼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子晚胡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容