iOS接入
 调试说明
 该聚合SDK(将在联调时提供),聚合了微信、支付宝、连尚钱包等渠道支付功能。接入SDK前,请同时在本地的项目中接入支付宝、微信、连尚钱包SDK,并引入相应的库。
 1. 微信:1.8.7.1
 2. 支付宝:15.7.4
 3. 连尚钱包:3.9.38 
 接入说明
 以下项目开发环境以Xcode11.3.1,运行环境为IOS13为例,说明其开发中需要的操作。 
 1. 项目设置APPID
 商户在微信/支付宝开放平台申请开发APP应用后,微信开放平台会生成APP的唯一标识APPID。在Xcode中打开项目,设置项目属性中的URL Schemes为您的APPID。如图标红位置所示。 
 2. 注册APPID
  - 商户APP工程中引入聚合支付SDK、连尚钱包SDK、支付宝SDK和微信lib库和头文件; 
- 调用支付API前,微信和连尚钱包,需要先向微信和盛付通注册您的APPID,代码如下:
 |  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 | //微信
    [SDPAggregationPaySDK sdp_registerWXApp:@"wx90d9273885746504" universalLink:@"https://b.shengpay.com/"];
//连尚钱包
/*! @brief  获取连信相关信息 && 设置连尚钱包环境 && 钱包初始化
 * 需要在每次启动第三方应用程序时调用。
* @param lxEnvType 设置连信环境  lxEnvType 值为 dev debug debug2 release mock
* @param fetchInfoBlock 设置获取连信用户信息 block
* @param deviceInfoBlock 设置获取连信设备信息 block
* @param envType 连尚钱包 环境类型
* @param appID  必传   连信:ZX0001 , 掌信:ZX0002
* @param appSource 必传   连信:LX ,掌信:ZX
* @param unionid 非必传
* @param openId 非必传
*/
 [SDPAggregationPaySDK setLXInfoWithAppID:@"ZX0001"
                                     appSource:@"LX"
                                       unionid:@""
                                        openId:@""
                                     lxEnvType:@"debug"
                                 walletEnvType:SDPWalletSDKEnvRelease
                                 userInfoBlock:^NSDictionary * _Nullable{
        NSMutableDictionary *dic = [NSMutableDictionary dictionary];
        dic[@"uhid"] = [YNFriendsManager sharedManager].me.uid;
        dic[@"sessionId"] = [YNAccountManager sharedManager].sessionID;
        dic[@"lxToken"] = [[YNAccountManager sharedManager] encrptedUidWithTimeStamp];
        dic[@"phoneNumber"] = [YNFriendsManager sharedManager].me.phoneNumber;
        return dic;
    } deviceInfoBlock:^NSDictionary * _Nullable{
        [SDPWalletSDK_LX setFetchLXDeviceInfoBlock:^NSDictionary * _Nonnull{
        NSMutableDictionary *dic = [NSMutableDictionary dictionary];
        dic[@"deviceId"] = [[UIDevice currentDevice] uniqueDeviceIdentifier];
        dic[@"smId"] = [UserExtraInfo shareUserExtraInfo].sdid ?:@"";
        return dic;
    }];
 |  
 该接口,整合了连尚钱包中的以下接口,如果项目中已经调用该以下方法进行了初始化,以下接口无需调用。
 |  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13 |     //设置连信的环境
    [SDPWalletSDK_LX setLxEnvType:lxEnvType];
    //设置连信用户信息
    [SDPWalletSDK_LX setFetchLXUserInfoBlock:fetchInfoBlock];
    //设置连信设备信息
    [SDPWalletSDK_LX setFetchLXDeviceInfoBlock:deviceInfoBlock];
    //设置盛付通钱包环境
    [SDPWalletSDK_LX setWalletEnvType:(NSInteger)envType];
    //钱包初始化
    [SDPWalletSDK_LX setAppID:appID
                    appSource:appSource
                      unionid:unionid
                       openId:openId];
 |  
 
调起支付
 |  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 | /*! @brief  发起支付
 *
* @param paymentType 支付方式:微信/支付宝/连尚钱包
* @param payOrder 支付信息串(预收单接口中返回的"payInfo"值)
* @param appScheme 支付宝支付,需要传(应用注册scheme,在AliSDKDemo-Info.plist定义URL types)
* @param delegate SDPAggregationPayDelegate对象,用来接收微信/支付宝/连尚钱包触发的消息。
*/
//微信支付
 [[SDPAggregationPaySDK getInstance] sendPayOrderWithPaymentType:SDPPaymentType_WX
                                        payScenarioType:SDPWIFIPayScenarioType_GeneralPay
                                                 payOrder:payInfo
                                                appScheme:@""
                                                 delegate:self];
//支付宝支付
  [SDPAggregationPayManager  sendPayOrderWithPaymentType:SDPPaymentType_AliPay
                                                 payOrder:payInfo
                                                appScheme:@""
                                                 delegate:self];
//连尚钱包支付
 [[SDPAggregationPaySDK getInstance] sendPayOrderWithPaymentType:SDPPaymentType_WIFIPay
                                        payScenarioType:SDPWIFIPayScenarioType_GeneralPay
                                                       payOrder:payInfo
                                                      appScheme:@""
                                                       delegate:self];
 | 
 支付结果回调
 支付完成后,会返回到商户APP并回调sdp_parcelResultErrorCode:retmsg:函数,开发者需要在该函数中接收通知,判断返回错误码,如果支付成功/支付处理中,则去后台查询支付结果再展示用户实际支付结果。注意 一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准。代码示例如下:
 
|  | #pragma mark SDPAggregationPayDelegate
- (void)sdp_parcelResultErrorCode:(SDPResultErrorCode)resultErrorCode retmsg:(NSString *)retmsg {
    switch (resultErrorCode) {
        case SDPResultErrorCode_OK:
            //服务器端查询支付通知或查询API返回的结果再提示成功
            NSlog(@"retmsg = %@,retcode=%d",retmsg,resultErrorCode);
            break;
        default:
            break;
    }
}
 | 
 回调中errCode值列表:     | 名称 | 描述 | 解决方案 | 
    | 0 | 支付成功 | 展示成功页面 | 
  | -1 | 支付中 |  | 
  | -2 | 支付失败 | 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。 | 
  | -3 | 用户取消 | 无需处理。发生场景:用户不支付了,点击取消,返回APP。 | 
  
 APPDelegate中接入
 |  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16 | /*! @brief 处理微信通过Universal Link启动App时传递的数据
*
* 需要在 application:continueUserActivity:restorationHandler:中调用。
* @param userActivity 微信启动第三方应用时系统API传递过来的userActivity
* @return 成功返回YES,失败返回NO。
*/
[[SDPAggregationPaySDK getInstance] sdp_handleOpenUniversalLink:userActivity];
/*! @brief 处理旧版微信/支付宝app,通过URL启动App时传递的数据
*
* 需要在 application:openURL:sourceApplication:annotation:或者application:handleOpenURL:或者application:handleOpenURL: openURL:options:中调用。
* @param url 微信/支付宝app  返回的支付结果url
* @param delegate  SDPAggregationPayDelegate对象,用来接收微信/支付b包触发的消息。
* @return 成功返回YES,失败返回NO。
*/
[[SDPAggregationPaySDK getInstance] sdp_handlePaymentOpenURL:url delegate:self];  
 | 
 查看版本号
 |  | /*! @brief 获取微信/支付宝/连尚钱包当前包的版本号
* @paymentType 支付方式
* @return 返回对于支付方式的版本号
*/
+ (NSString *_Nullable)getVersionWithPaymentType:(SDPPaymentType)paymentType;
/*! @brief 获取该SDK的版本号
 */
 + (NSString *_Nullable)getAggregationPaySDKVersion;
 | 
 相关文档
 支付宝参考文档:通知参数说明
 微信参考文档:iOS接入指南 、 APP端开发步骤