app中添加多个微信、支付宝收款账户

背景

最近在对接微信支付宝支付的时候出现了一个需求,由于我们公司在各地区都有代理商(分公司),所有的代理商都由我们平台来管理,使用一套APP。但是不同的代理商运营需要打款到相应的代理商账户来实现分账。


目标

按以往的认知一个APP的收款不管是微信还是支付宝,都是只打到一个账户里面去,现在需要实现不管对于微信支付还是支付宝支付都需要有多个支付账户,实现接口分账。


实现

首先不同的代理商都需要在微信和支付宝上各自申请账号,提交各自材料信息等:
1. 公司营业执照副本
2. 开户行信息
3. 法人身份证

整个申请流程支付宝的流程是很简单的,但是微信就相对复杂

这里值得注意的是微信部分:

在申请微信时,有一个地方需要勾选开通支付的平台:公众号、网页、APP。我这里选择了APP,主要是为APP提供支付能力,后面需要选择APP是否已上线,选择已上线并填写了APP的详情页地址,提交,结果审核失败,原因是新申请的代理商公司没有此APP的版权(版权是总公司所有的)。
解决方法是写一个由总公司加盖公章的说明,作为附件一起提交,即可通过。

等待审核通过以后,并创建应用,每个创建的应用都使用原来的包名或bundleid。

下一步:后台对不同区域的代理商进行判断,支付宝没啥要说的,客户端不需要改动,由后台配置即可

下面主要说明iOS APP客户端微信的配置:

首先在入口类配置回调的代理:
由于此时我们有多个微信的APPID,在支付后跳转回来的时候需要判断是不是由我们的APPID调转回来,并牵涉到支付成功后微信的回调能否成功。所以此处宏了一个数组,把所有的APPID放进去
#define WX_PAY_APP_KEY @[@"wx************",@"wx***************"];

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    NSLog(@"application openURL1, url:%@", url.absoluteString);
    if ([url.host isEqualToString:@"safepay"]) {
        // 支付跳转支付宝钱包进行支付,处理支付结果
        [[PaymentAction shareInstanse] processOrderWithPaymentResult:url];
    }
    if ([WX_PAY_APP_KEY containsObject:url.scheme])
    {
        return  [WXApi handleOpenURL:url delegate:(id<WXApiDelegate>)[PaymentAction shareInstanse]];
    }
    return YES;
}

下面配置URL Type:所有的APPID都写进去

到这里基本算是完工了。下面是我调用微信支付的代码:

- (void)callWXpaySDKInterface
{
    NSLog(@"[PaymentAction] callWXpaySDKInterface");
    //解析结果
    NSData * data = [self.orderStr dataUsingEncoding:NSUTF8StringEncoding];
    NSError *error;
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];

    NSString *appid = dic[@"appid"];
    NSString *partnerid = dic[@"partnerid"];
    NSString *prepayid = dic[@"prepayid"];
    NSString *package = @"Sign=WXPay";
    NSString *noncestr = dic[@"noncestr"];
    NSString *timestamp = dic[@"timestamp"];
    NSString *sign = dic[@"sign"];
    [WXApi registerApp:appid];

    if(![WXApi isWXAppInstalled]) {
        [self paymentDidCompleted:NO message:@"未安装微信"];
        //failBlock(WXERROR_NOTINSTALL);
        return ;
    }
    if (![WXApi isWXAppSupportApi]) {
        [self paymentDidCompleted:NO message:@"微信不支持"];
        //failBlock(WXERROR_UNSUPPORT);
        return ;
    }

    //发起微信支付
    PayReq* req   = [[PayReq alloc] init];
    //微信分配的商户号
    req.partnerId = partnerid;
    //微信返回的支付交易会话ID
    req.prepayId  = prepayid;
    // 随机字符串,不长于32位
    req.nonceStr  = noncestr;
    // 时间戳
    req.timeStamp = timestamp.intValue;
    //暂填写固定值Sign=WXPay
    req.package   = package;
    //签名
    req.sign      = sign;
    [WXApi sendReq:req];

    //日志输出
    //NSLog(@"appid=%@\npartid=%@\nprepayid=%@\nnoncestr=%@\ntimestamp=%ld\npackage=%@\nsign=%@",appid,req.partnerId,req.prepayId,req.nonceStr,(long)req.timeStamp,req.package,req.sign );
}

相关推荐

微信扫一扫,分享到朋友圈

app中添加多个微信、支付宝收款账户
返回顶部

显示

忘记密码?

显示

显示

获取验证码

Close