跳转到主要内容
PRODUCT DOCUMENTS

快速找到所需文档,高效完成接入与排障

浏览产品文档与友盟 Skill,展开目录并阅读正文。

[SWE10010 ]使用微信支付/没有PayReq这个类

使用UShare微信分享\登录功能情况下如何使用微信支付功能

问题描述

使用UShare微信分享\登录功能情况下如何同时使用微信支付功能?

为什么WXApiObject文件里没有PayReq这个类?

问题原因

微信原生SDK有包含微信支付和不包含微信支付两个版本,友盟UShare微信分享组件中不包含微信支付模块,所以UShare SDK里的WXApiObject文件里没有PayReq对象

解决方案

1、首先在微信开放平台下载带支付功能的SDK并添加至工程中,调用接口同样参照微信官方文档

微信支付2

2、必须集成友盟分享微信完整版

完整版

3、用微信官方包含支付功能的库libWeChatSDK.a及相关的头文件:WxApiObject.h、WxApi.h和WechatAuthSDK.h替换掉UShare组件中同名的库文件和头文件

其他UShare相关库文件仍然需要添加至工程中,linSocialOffcialWechat.a代表了微信完整版,libSocialWeChat.a代表了微信精简版(友盟微信完整版代码依赖精简版代码功能,但是不会出现只集成微信精简版“未验证应用“问题),这两个文件也必须要添加

微信支付

重要

用微信包含支付的库文件替换方式只能通过上述手动集成方式完成,因为自动集成方式这样替换会校验不通过,因此要想同时使用支付和分享功能,请您采用手动集成方式

使用微信完整版判断支付的流程如下:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler
{
    //step1 判断支付
    //支付会包含微信的appid和pay字段
    //例如:
    //https://xxx/wx60d36f0847db422c/pay/?returnKey=&ret=0
    NSString* webpageStr =  userActivity.webpageURL.absoluteString;
    if ([webpageStr containsString:@"wx60d36f0847db422c"] && [webpageStr containsString:@"pay"]) {
        BOOL isok =  [WXApi handleOpenUniversalLink:userActivity delegate:self];
        if (isok) {
            return YES;
        }
    }

    //step2 分享,授权回调
    if (![[UMSocialManager defaultManager] handleUniversalLink:userActivity options:nil]) {
        // 其他SDK的回调
    }
    return YES;
}