关闭
公众号二维码

# 四、上报接口对接

# 上报接口场景说明

交易上报付款码上报 接口集成二选一,具体集成根据商户适合场景。

交易上报: 针对非刷脸支付交易,接口根据商户号(子商户号)和生成的商户订单号作为请求上报。

付款码上报: 针对微信付款码支付交易,而无法获取到商户号和订单号的可以通过此接口做交易上报。

# 接入步骤

1、确保网络符合微信刷脸支付sdk依赖的网络环境,若涉及代理可参考代理设置
2、APP版本:交易上报接口需1.12及以上版本;付款码上报接口需2.11及以上版本
3、推荐使用付款码上报接口,若无法获取付款码,可使用交易上报接口
4、具体接口使用详见接口介绍和实践指引
5、调用上报成功后请联系[微信]进行验收

注:调用上报接口,请确保SDK是正常初始化成功的;接口调用时序需在非刷脸交易成功后调用上报接口

# 1. 付款码上报接口

# 付款码上报(reportPaycode)

接口作用: 设备获取到微信付款码,而无法获取到商户号和订单号的可以通过此接口做交易上报

支持版本: 2.11及以上

//付款码上报
public void reportPaycode(final Map info, final IWxPayfaceCallback callback);

# 请求参数

参数 必填 类型 说明
auth_code string 微信支付18位付款码

# 接口返回

参数 必填 类型 说明
return_code string 错误码。公共定义见 公共错误码
err_code Integer 可为空,二级错误码,公共定义见 二级错误码
return_msg string(128) 对错误码的描述

# 实践指引

//上报付款码
Map<String, String> m1 = new HashMap<String, String>();
m1.put("auth_code", "填您的微信支付18位付款码");
WxPayFace.getInstance().reportPaycode(m1, new WxpayfaceCallback(){
            @Override
            public void response(Map info) throws RemoteException {
                if (info == null) {
                    new RuntimeException("调用返回为空").printStackTrace();
                    return ;
                }
                String code = (String) info.get("return_code");
                Integer errcode = (Integer) info.get("err_code");
                String msg = (String) info.get("return_msg");
                Log.d(TAG, "response info :: " + code + " | " + msg);
                if (code == null || !code.equals("SUCCESS")) {
                    new RuntimeException("调用返回非成功信息: " + msg).printStackTrace();
                    return ;
                }
                Log.d(TAG, "调用返回成功");
                /*
                 在这里处理您自己的业务逻辑
                 */
            }
});

# 2. 订单上报接口

# 订单上报接口(reportOrder)

接口作用: 设备产生的非刷脸支付交易,都必须调用此接口上报交易信息, 建议每笔非刷脸支付交易发生后,都调用该接口。

支持版本: 1.12及以上

# 接口函数

//订单上报接口。
public void reportOrder(final Map info, final IWxPayfaceCallback callback);

# 请求参数

参数 必填 类型 说明
mch_id string 商户号。(若是服务商模式, 则填服务商商户号)
sub_mch_id string 子商户号。(服务商模式填写, 其它不填)
out_trade_no string 商户订单号。

# 返回参数

参数 必填 类型 说明
return_code string 错误码。公共定义见 公共错误码
err_code Integer 可为空,二级错误码,公共定义见 二级错误码
return_msg string(128) 对错误码的描述

# 实践指引

    public void reportOrder() {
        Map<String, Object> m1 = new HashMap<String, Object>();
        m1.put("mch_id", "填您的商户号"); // 商户号
//        m1.put("sub_mch_id", "填您的子商户号"); // 子商户号(非服务商模式不填)
        m1.put("out_trade_no", "填您的商户订单号");  // 填写商户订单号
        WxPayFace.getInstance().reportOrder(m1, new IWxPayfaceCallback() {
            @Override
            public void response(Map info) throws RemoteException {
                if (info == null) {
                    new RuntimeException("调用返回为空").printStackTrace();
                    return ;
                }
                String code = (String) info.get("return_code");
                Integer errcode = (Integer) info.get("err_code");
                String msg = (String) info.get("return_msg");
                Log.d(TAG, "response info :: " + code + " | " + msg);
                if (code == null || !code.equals("SUCCESS")) {
                    new RuntimeException("调用返回非成功信息: " + msg).printStackTrace();
                    return ;
                }
                Log.d(TAG, "调用返回成功");


                /*
                 在这里处理您自己的业务逻辑
                 */
            }
        });
    }

# 常见上报不成功问题

Q1: 同一个程序逻辑,有些设备可以上报成功,有些设备却不行?
A1: 和设备没有关系,主要是设备自身是否能连同外网,是否有内网防火墙拦截,iot长连接是否初始化成功等,商户调度的只是简单的人脸SDK接口,理论上刷脸通的话,上报接口就是通的

Q2: 上报接口,重复上报了会有问题吗?或者没交易成功的上报了会怎么样?
A2:重复上报和没交易成功上报只会影响统计,实际商户侧上报的数量会远大于微信侧核实的上报数量

Q3: 非刷脸支付的mch_id和sub_mch_id和扫脸支付的是同一个么?上报时是否可以直接使用扫脸支付的这两个参数?
A3:是同一个,使用刷脸的mch_id和sub_mch_id即可

Q4: 付款码交易上报接口是否只能针对微信付款码?
A4: 需使用设备获取到微信付款码

上次更新: 12/9/2022, 2:54:48 PM