集成友盟分享和微信支付的冲突问题

最近由于项目紧张需求 ,需要在项目里集成微信支付的功能(附上微信支付集成文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5)。轻车熟路,一通操作猛如虎,最后build崩了。发现pod进来的分享sdk和支付的冲突。 pod 'UMengUShare/Social/WeChat'进来后发现微信开放平台需要的头文件都在,这样我们按照文档很轻松的就可以集成了微信的分享功能。 

再来集成支付功能,我们需要向微信发送一个结构体等待微信大佬的响应。

#ifndef BUILD_WITHOUT_PAY

/*! @brief 第三方向微信终端发起支付的消息结构体

*

*  第三方向微信终端发起支付的消息结构体,微信终端处理后会向第三方返回处理结果

* @see PayResp

*/

@interface PayReq : BaseReq

/** 商家向财付通申请的商家id */

@property (nonatomic, retain) NSString *partnerId;

/** 预支付订单 */

@property (nonatomic, retain) NSString *prepayId;

/** 随机串,防重发 */

@property (nonatomic, retain) NSString *nonceStr;

/** 时间戳,防重发 */

@property (nonatomic, assign) UInt32 timeStamp;

/** 商家根据财付通文档填写的数据和签名 */

@property (nonatomic, retain) NSString *package;

/** 商家根据微信开放平台文档对数据做的签名 */

@property (nonatomic, retain) NSString *sign;

@end

但是在刚刚我们pod进去的.h文件中 我们却没找到这个类。这个时候我在官方文档微信支付中看到,它pod是'WechatOpenSDK' 这个库其实 和我们导入的‘UMengUShare/Social/WeChat’这个库很类似 里面暴露出来的头文件基本都是一模一样。只是'WechatOpenSDK'这个库中的WXApiObject这个类中多了一个第三方向微信终端发起支付的消息结构体,在这个类中声明了个 @interface PayReq : BaseReq(见上)来唤起微信的支付功能。

集成友盟分享和微信支付的冲突问题_第1张图片
WechatOpenSDK


集成友盟分享和微信支付的冲突问题_第2张图片
UMengUShare/Social/WeChat

可以看到两个明显冲突。我们需要微信支付,那么只能把下面中相同的文件删除。放心,并不会报红点。然后在拿到后台数据后

-(void)payBtnClickk{
    PayReq* req             = [[PayReq alloc] init];
    req.openID              = @"wx7c258ef701ff50aa";//由用户微信号和AppID组成的唯一标识,发送请求时第三方程序必须填写,用于校验微信用户是否换号登录*/ appid = wxfba5a9c20a82864d;
    req.partnerId           = @"1514135121";//商家向财付通申请的商家id
    req.prepayId            = @"wx15165256383220c9340c25ce2638806399";//预支付订单
    req.nonceStr            = @"c6abcde734935526d8242dc6b597988f";//随机串,防重发
    NSString * timeStr = @"1537001576";
    req.timeStamp           = [timeStr intValue];//时间戳,防重发
    req.package             = @"Sign=WXPay";//商家根据财付通文档填写的数据和签名
    req.sign                = @"1C2D7C340B3CF0AAEF13B4D302CEDE06" ;//商家根据微信开放平台文档对数据做的签名
    if (![WXApi isWXAppInstalled] || ![WXApi isWXAppSupportApi]) {//判断用户是否安装微信
       
        //  [self alert:@"提示信息" msg:@"未安装微信客户端"];
       
        return ;
    }else {
        [WXApi sendReq:req];//发送请求到微信,等待微信返回onResp
       
    }
}

就能成功走起微信支付了。关于appkey的设置的问题 ,我只设置了分享的key也是可以的。

/* 设置友盟appkey */

    [UMConfigure initWithAppkey:@"设置友盟appkey " channel:@"App Store"];

支付设置key

/*! @brief WXApi的成员函数,向微信终端程序注册第三方应用。
 *
 * 需要在每次启动第三方应用程序时调用。第一次调用后,会在微信的可用应用列表中出现。
 * iOS7及以上系统需要调起一次微信才会出现在微信的可用应用列表中。
 * @attention 请保证在主线程中调用此函数
 * @param appid 微信开发者ID
 * @param isEnableMTA 是否支持MTA数据上报
 * @return 成功返回YES,失败返回NO。
 */
+(BOOL) registerApp:(NSString *)appid enableMTA:(BOOL)isEnableMTA; 两者都写上,问题也不大。注意支付设置的key放在友盟分享的后面。问题不大

你可能感兴趣的:(集成友盟分享和微信支付的冲突问题)