适用于商户APP内支付场景,商户调用此接口,服务端返回支付参数,据返回的参数唤醒微信、支付宝客户端,消费者完成支付。


接口说明

测试请求URL:https://test-api.huishouqian.com/api/acquiring

生产请求URL:https://api.huishouqian.com/api/acquiring

请求方式:POST

公共请求参数

变量 参数名 类型[长度限制] 必填 描述
method 方法名 string[1,32] POLYMERIZE_PROGRAM_CASHIER
version 版本 string[1,16] 接口版本:1.0
format 请求格式 string[1,16] 业务请求参数格式,支持:JSON
merchantNo 商户号 string[1,16] 商户在慧收钱的商户号,由慧收钱生成并下发
signType 加密类型 string[1,16] RSA2:签名机制查看说明
signContent 业务数据 string 业务请求参数
sign 签名数据 string[1,128] 签名数据

业务请求参数

量变 参数名 类型[长度限制] 必填 描述
subMerchantNo 门店编号 string[1,32] 商户在慧收钱创建生成的门店编号
transNo 商户订单号 string[1,64] 商户系统内部订单号,唯一不重复
payType 交易类型 string[1,16] ALI_APPLET:支付宝
WECHAT_APPLET:微信
returnUrl 后端通知地址 string[1,128] 当交易有结果时,慧收钱主动通知商户的地址
示例值:https://www.merchant.com/xxx
orderAmt 交易金额 string[1,16] 交易金额,单位为:分
示例值:1
goodsInfo 商品信息 string[1,128] 商品说明
示例值:iphone商品
requestDate 请求时间 string[1,14] 请求时间,与当前系统时间相差小于10分钟,格式[yyyyMMddHHmmss]
示例值:20190101140908
extend 附加字段 string[1,128] 附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用
示例值:自定义数据
memo 扩展信息 string[1,512] json格式,将memo参数域转json

Memo参数域

变量 参数名 类型[长度限制] 必填 描述
timeExpire 交易结束时间 string[1,14] 订单失效时间,格式[yyyyMMddHHmmss],
建议:最短失效时间间隔大于1分钟
示例值:20190101140908
paylimit 限制卡类型 string[1,128] 限制不能使用的支付类型
微信:no_credit–指定不能使用信用卡支付
支付宝:查看详情
spbillCreateIp 终端用户IP string[1,32] 消费者端IP,支持ipv4、ipv6格式
示例值:123.12.12.123
longitude 经度 string[1,32] 消费者交易所在地经度
latitude 纬度 string[1,32] 消费者交易所在地纬度

公共请求示例

{method=QUERY_TRADE_FILE, format=json, signType=RSA2, signContent=【参考业务请求示例】,sign=7ecbad9cb113bd54e6ee45f7fe76883a40428d548b7294ce8f7ba30f211881073820d3ec7a54d3406dcf7a4d3f87f0994c24db54bab430777425147378dbf01afe0491a1c287e5ce380454b0e228a5a20d541874c14addd4100199660e6c4a857fa080ceb4601a0ee21e3fab9d87016198f151a3b16f60a254c1e8b4cd42cdf7, version=1.0, merchantNo=8000000026}

业务请求示例

{
"extend":"自定义字段",
"goodsInfo":"测试",
"memo":"{\"latitude\":\"39.916527\",\"longitude\":\"116.397128\",\"paylimit\":\"balance\",\"spbillCreateIp\":\"172.22.11.2\",\"timeExpire\":\"\"}",
"orderAmt":"1",
"payType":"WECHAT_APPLET",
"requestDate":"20210916133716",
"returnUrl":"",
"transNo":"DD20210916133716294"
}

公共响应参数

变量 参数名 类型[长度限制] 必填 描述
success 响应状态 string[1,32] 服务端响应状态,如果为true,则可以调用result;如果为false,则调用errorCode来获取出错信息
errorCode 错误码 string[1,32] 响应码
errorMsg 错误描述 string[1,128] 响应描述
result 响应内容 string 业务响应参数
sign 签名数据 string[1,128] 响应验签数据

业务响应参数

变量 参数名 类型[长度限制] 必填 描述
transNo 商户订单号 string[1,64] 原样返回商户订单号
tradeNo 交易订单号 string[1,32] 慧收钱交易订单号
orderAmt 交易金额 string[1,16] 订单交易金额
orderStatus 交易状态 string[1,16] 详见交易状态码
finishedDate 完成时间 string[1,14] 交易完成时间,格式[yyyyMMddHHmmss]
示例值:20190101140908
respCode 错误码 string[1,32] 详见交易响应码
respMsg 错误信息 string[1,128] 详见交易响应码
qrCode 支付参数 string[1,1024] 返回唤醒支付的参数,唤醒方式微信,支付宝
参考示例:
小程序唤醒示例,原生唤醒示例

公共响应示例

{
"success":true,
"result":"【业务响应示例】",
"errorCode":null,
"errorMsg":null,
"sign":"88faca1f2511cc194367ffd96aa78a4cdf25a8284b0cd74b75e331b37c642b26aaeb46f2e4be38080eeb2b78575abd715d58fd30bbf59e167d64d0b714487f9462381e499a48524b1704694f256fa8f6e917d33cd413e365872ef2c7eede37ab4b23f67dcf6f34ec0daf65a34502123f792a646bea6447c126a612087825b17b91e585f74e56220328b198982e62a734387cd8556927e6881878b821969b6e784a20771cf55fad70a4368b8650c0ece0a7903678e1ad6134f6c711329a3e3e456c28ffbfc607fa6bf1f969a4d38b35ca3bf9ad81f71b2d2ad816502d579c0c4fc1f1fccec74a861c4679c5217be0176bf1eebcb57aea381f922fcf920aa471198be972f0c4f9fab10f7885b9c09eda977351b40e9058247ec30da55dd4c0be4a9de7d996e186e9f9ff2693f564f0eaddca9d7ff9f3b813d0c70bdba75b2a1bf9bd4ddf28ff66c45d6ce31e188d8606c82078d842008a9a1b4c1b64b7b2d3632087e46bbc4322181a9832cecd852682fdb72d336b32512bde94e81ba322fe9d2d"
}

业务响应示例

{
"extend":"自定义字段",
"merchantNo":"814000473149",
"orderAmt":"1",
"orderStatus":"INIT",
"payType":"WECHAT_APPLET",
"qrCode":"{\"path\":\"pages/orderInfo/orderInfo\",\"payType\":\"WECHAT_APPLET\",\"miniProgramType\":\"WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_PREVIEW\",\"tradeNo\":\"DYNAMIC2109161337200003650175170\",\"appId\":\"wx09ad161ff5ab0343\",\"ghAppId\":\"gh_cc42edba6b00\"}",
"respCode":"100213",
"respMsg":"订单未支付",
"tradeNo":"DYNAMIC2109161337200003650175170",
"transNo":"DD20210916133716294"
}

小程序唤醒示例

安卓APP微信支付唤醒方式
private void jumpWeiXinMiniProgramPay(OrderBean wxOrderBean, String tradeNo) {
        String appId = Constants.APP_ID; // 填移动应用(App)的 AppId,非小程序的 AppID
        IWXAPI api = WXAPIFactory.createWXAPI(this, appId);
        WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
        req.userName = wxOrderBean.getGhAppId(); // 填小程序原始id
        LogUtil.d("PATH", "+++path:"+wxOrderBean.getPath());
        req.path = wxOrderBean.getPath() + "?tradeNo=" + tradeNo;              //路径以及参数
        if ("WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE".equals(wxOrderBean.getMiniProgramType())) {  //正式版
            req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;
        } else if ("WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_PREVIEW".equals(wxOrderBean.getMiniProgramType())) { //体验版
            req.miniprogramType = WXLaunchMiniProgram.Req.MINIPROGRAM_TYPE_PREVIEW;
        } else {                                                                                             //测试版
            req.miniprogramType = WXLaunchMiniProgram.Req.MINIPROGRAM_TYPE_TEST;
        }
        api.sendReq(req);
    }

安卓APP支付宝支付唤醒方式
private void jumpAilMiniProgramPay(OrderBean orderBean, String tradeNo) {
        StringBuilder stringBuilder  = new StringBuilder("alipays://platformapi/startapp?appId=")
                .append(orderBean.getAppId())
                .append("&page=")
                .append(orderBean.getPath())
                .append("?tradeNo=")
                .append(tradeNo);
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(stringBuilder.toString()));
        startActivityForResult(intent, 1001);
    }

IOS APP支付宝支付唤醒方式
/**
 打开支付宝小程序

 @param params 打开参数
 */
- (void)openALiMiniProgramWithZfbId:(NSString *)zfbId path:(NSString *)path params:(NSDictionary *)params
{
    NSString *paramsString = nil;
    if (params.count>0) {
        paramsString = [NSString serializeToUrlByDicString:params];
    }
    path = [NSString stringWithFormat:@"alipays://platformapi/startapp?appId=%@&page=%@",zfbId,path];
    if (paramsString.length>0) {
        path = [NSString stringWithFormat:@"%@?%@",path,[paramsString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]];
    }
    NSLog(@"alipath = %@",path);
    NSURL *url = [NSURL URLWithString:path];
    if (@available(iOS 10.0, *)) {
        [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {

        }];
    } else {
        // Fallback on earlier versions
        [[UIApplication sharedApplication] openURL:url];
    }
}

IOS APP微信支付唤醒方式
/**
 打开微信小程序

 @param params 打开参数
 */
- (void)openWXMiniProgramWithWxId:(NSString *)wxId path:(NSString *)path miniProgramType:(NSString *)miniProgramType Params:(NSDictionary *)params
{
    if ([WXApi isWXAppInstalled]) {
        NSString *paramsString = nil;
        if (params.count>0) {
            paramsString = [NSString serializeToUrlByDicString:params];
        }
        if (paramsString.length>0) {
            path = [NSString stringWithFormat:@"%@?%@",path,paramsString];
        }
        NSLog(@"path = %@",path);
        WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
        launchMiniProgramReq.userName = wxId;
        launchMiniProgramReq.path = path;
        if ([miniProgramType isEqualToString:@"WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE"]) {
            launchMiniProgramReq.miniProgramType = WXMiniProgramTypeRelease;
        }else
        {
            launchMiniProgramReq.miniProgramType = WXMiniProgramTypePreview;//体验版
        }

        [WXApi sendReq:launchMiniProgramReq completion:^(BOOL success) {

        }];
    }else
    {
        [[ToastView getInstance] displayToastWithMessage:@"请先安装微信App"];
    }
}

原生唤醒示例

安卓APP支付宝支付唤醒方式
https://opendocs.alipay.com/open/204/105296

安卓APP微信支付唤醒方式
https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_5_2.shtml

IOS APP支付宝支付唤醒方式
https://opendocs.alipay.com/open/204/105295

IOS 安卓APP微信支付唤醒方式
https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_5_2.shtml

交易状态码

状态码 描述
INIT 初始化
PROCESSING 处理中
SUCCESS 成功
FAIL 失败

交易响应码

响应码 描述 解决方案
100004 不支持该支付通道的交易
100019 无可用渠道
100200 订单已支付成功,请勿重复支付
100203 交易失败
100204 订单已过期,请使用新的订单号发起交易
100205 订单已存在
100206 订单不存在
100207 交易已取消
100208 订单已失败
100209 交易失败,黑名单用户
100210 交易失败,非白名单用户
100211 交易记录不存在
100212 交易失败,风险受限
100500 余额不足
100501 交易金额超限
100502 交易金额低于限额
100503 交易金额不正确
100505 单日交易金额超限
100506 单笔交易金额超限
100507 单月交易金额超限
100600 短信验证码错误
100601 短信验证码失效
100602 请确认是否发送短信,当前交易必须通过短信验证
200002 非法的交易
200003 订单号已存在,请勿重复提交
200004 订单不存在
200005 原订单金额校验不通过
200010 批次号已存在
200011 订单数量超过单批次处理量
200012 请求太过频繁,请稍后再试
200015 不支持此支付类型
200017 订单关闭成功
200018 订单关闭失败,请重试!
200107 分账参数校验异常
200108 交易主体从属关系异常
200109 业务订单不存在
200110 业务订单状态异常
200111 支付金额超限
200112 业务订单已失效
200113 该业务订单不支持部分支付
200114 业务订单已关闭
200115 非法交易
200116 存在成功/处理中订单,请勿重复提交
200117 订单已经分账不能发起退款/撤销
200118 订单金额不等于交易金额+营销金额
200119 订单金额+交易金额不能都为0
200120 营销账户信息不能为空
200201 商户状态异常,无法进行交易
200203 商户与子商户关系不对应,无法进行交易
200204 门店信息不存在,无法进行交易
200205 终端商户信息不存在,无法进行交易
200206 请求ip白名单未配置
200207 账户状态异常
200209 门店信息不存在
200210 设备信息不存在
200302 产品渠道不能为空
300401 交易非法,订单已完成
300701 商户限额校验不通过
作者:xiaochen  创建时间:2023-05-15 11:12
最后编辑:admin  更新时间:2024-09-19 18:06