集成友盟分享和微信支付的沖突問題

最近由于項目緊張需求 ,需要在項目里集成微信支付的功能(附上微信支付集成文檔:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5)。輕車熟路,一通操作猛如虎,最后build崩了。發(fā)現(xiàn)pod進(jìn)來的分享sdk和支付的沖突。 pod 'UMengUShare/Social/WeChat'進(jìn)來后發(fā)現(xiàn)微信開放平臺需要的頭文件都在,這樣我們按照文檔很輕松的就可以集成了微信的分享功能。?

再來集成支付功能,我們需要向微信發(fā)送一個結(jié)構(gòu)體等待微信大佬的響應(yīng)。

#ifndef BUILD_WITHOUT_PAY

/*! @brief 第三方向微信終端發(fā)起支付的消息結(jié)構(gòu)體

*

*? 第三方向微信終端發(fā)起支付的消息結(jié)構(gòu)體,微信終端處理后會向第三方返回處理結(jié)果

* @see PayResp

*/

@interface PayReq : BaseReq

/** 商家向財付通申請的商家id */

@property (nonatomic, retain) NSString *partnerId;

/** 預(yù)支付訂單 */

@property (nonatomic, retain) NSString *prepayId;

/** 隨機(jī)串,防重發(fā) */

@property (nonatomic, retain) NSString *nonceStr;

/** 時間戳,防重發(fā) */

@property (nonatomic, assign) UInt32 timeStamp;

/** 商家根據(jù)財付通文檔填寫的數(shù)據(jù)和簽名 */

@property (nonatomic, retain) NSString *package;

/** 商家根據(jù)微信開放平臺文檔對數(shù)據(jù)做的簽名 */

@property (nonatomic, retain) NSString *sign;

@end

但是在剛剛我們pod進(jìn)去的.h文件中 我們卻沒找到這個類。這個時候我在官方文檔微信支付中看到,它pod是'WechatOpenSDK' 這個庫其實(shí) 和我們導(dǎo)入的‘UMengUShare/Social/WeChat’這個庫很類似 里面暴露出來的頭文件基本都是一模一樣。只是'WechatOpenSDK'這個庫中的WXApiObject這個類中多了一個第三方向微信終端發(fā)起支付的消息結(jié)構(gòu)體,在這個類中聲明了個 @interface PayReq : BaseReq(見上)來喚起微信的支付功能。

WechatOpenSDK


UMengUShare/Social/WeChat

可以看到兩個明顯沖突。我們需要微信支付,那么只能把下面中相同的文件刪除。放心,并不會報紅點(diǎn)。然后在拿到后臺數(shù)據(jù)后

-(void)payBtnClickk{
??? PayReq* req???????????? = [[PayReq alloc] init];
??? req.openID????????????? = @"wx7c258ef701ff50aa";//由用戶微信號和AppID組成的唯一標(biāo)識,發(fā)送請求時第三方程序必須填寫,用于校驗微信用戶是否換號登錄*/ appid = wxfba5a9c20a82864d;
??? req.partnerId?????????? = @"1514135121";//商家向財付通申請的商家id
??? req.prepayId??????????? = @"wx15165256383220c9340c25ce2638806399";//預(yù)支付訂單
??? req.nonceStr??????????? = @"c6abcde734935526d8242dc6b597988f";//隨機(jī)串,防重發(fā)
??? NSString * timeStr = @"1537001576";
??? req.timeStamp?????????? = [timeStr intValue];//時間戳,防重發(fā)
??? req.package???????????? = @"Sign=WXPay";//商家根據(jù)財付通文檔填寫的數(shù)據(jù)和簽名
??? req.sign??????????????? = @"1C2D7C340B3CF0AAEF13B4D302CEDE06" ;//商家根據(jù)微信開放平臺文檔對數(shù)據(jù)做的簽名
??? if (![WXApi isWXAppInstalled] || ![WXApi isWXAppSupportApi]) {//判斷用戶是否安裝微信
???????
??????? //? [self alert:@"提示信息" msg:@"未安裝微信客戶端"];
???????
??????? return ;
??? }else {
??????? [WXApi sendReq:req];//發(fā)送請求到微信,等待微信返回onResp
???????
??? }
}

就能成功走起微信支付了。關(guān)于appkey的設(shè)置的問題 ,我只設(shè)置了分享的key也是可以的。

/* 設(shè)置友盟appkey */

? ? [UMConfigure initWithAppkey:@"設(shè)置友盟appkey " channel:@"App Store"];

支付設(shè)置key

/*! @brief WXApi的成員函數(shù),向微信終端程序注冊第三方應(yīng)用。
?*
?* 需要在每次啟動第三方應(yīng)用程序時調(diào)用。第一次調(diào)用后,會在微信的可用應(yīng)用列表中出現(xiàn)。
?* iOS7及以上系統(tǒng)需要調(diào)起一次微信才會出現(xiàn)在微信的可用應(yīng)用列表中。
?* @attention 請保證在主線程中調(diào)用此函數(shù)
?* @param appid 微信開發(fā)者ID
?* @param isEnableMTA 是否支持MTA數(shù)據(jù)上報
?* @return 成功返回YES,失敗返回NO。
?*/
+(BOOL) registerApp:(NSString *)appid enableMTA:(BOOL)isEnableMTA; 兩者都寫上,問題也不大。注意支付設(shè)置的key放在友盟分享的后面。問題不大

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容