美文网首页
集成友盟分享和微信支付的冲突问题

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

作者: 码农_会写诗 | 来源:发表于2018-09-18 11:37 被阅读0次

    最近由于项目紧张需求 ,需要在项目里集成微信支付的功能(附上微信支付集成文档: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(见上)来唤起微信的支付功能。

    WechatOpenSDK 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放在友盟分享的后面。问题不大

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/tigynftx.html