对接ICBC聚合支付问题-被扫支付

文章讲述了在集成ICBC聚合支付时,遇到微信扫码支付返回`支付中`且需要密码验证的问题,介绍了如何通过扫码机器直接扫描付款码并调用接口避免密码输入的过程,以及提供的示例代码.
摘要由CSDN通过智能技术生成

需求:

增加支付多样性,项目接入ICBC聚合支付。

问题:

在实现二维码被扫支付过程中,当qr_code(被扫二维码)传入后,返回结果是支付中,且查询支付状态一直是支付中。

 解决:微信风控原因,微信付款码界面退出后,或通过一维码数字信息支付时,必须输入密码才能完成支付。

扫码机器直接扫出二维码信息,或者在微信付款码界面手动输入付款数字,后输入密码支付。

由于我之前一直用的postman调用接口,qr_code(被扫付款码)一直是通过草料二维码官网把二维码信息解码出来,再去调用接口,导致微信必须退出付款码界面,一直未弹出输入密码界面。困扰许久。如果用扫码机器直接扫描付款码,调用接口。则不需要输入密码。

被扫支付对接代码:

import cn.hutool.core.lang.UUID;
import com.icbc.api.DefaultIcbcClient;
import com.icbc.api.IcbcApiException;
import com.icbc.api.IcbcConstants;
import com.icbc.api.request.QrcodePayRequestV2;
import com.icbc.api.response.QrcodePayResponseV2;


public class QrcodePayTest {
    //1、网关公钥
    protected static final String APIGW_PUBLIC_KEY = "";

    //2、appid
    protected static final String APP_ID = "";

    //3、密钥对认证方式,公钥在API平台登记,此处为私钥
    protected static final String MY_PRIVATE_KEY = "";
    public static void main(String[] args) throws Exception {


        //签名类型为RSA2时,需传入appid,私钥和网关公钥,签名类型使用定值IcbcConstants.SIGN_TYPE_RSA2,其他参数使用缺省值
        DefaultIcbcClient client = new DefaultIcbcClient(APP_ID, IcbcConstants.SIGN_TYPE_RSA2, MY_PRIVATE_KEY, APIGW_PUBLIC_KEY);

        QrcodePayRequestV2 request = new QrcodePayRequestV2();

        //4、根据测试环境和生产环境替换相应ip和端口
        request.setServiceUrl("https://gw.open.icbc.com.cn/api/mybank/pay/qrcode/scanned/pay/V5");

        //5、请对照接口文档用bizContent.setxxx()方法对业务上送数据进行赋值
        QrcodePayRequestV2.QrcodePayRequestV2Biz bizContent = new QrcodePayRequestV2.QrcodePayRequestV2Biz();
        //被扫付款码
        bizContent.setQrCode("");
        //商户编号
        bizContent.setMerId("");
        //订单号
        bizContent.setOutTradeNo(UUID.fastUUID().toString().substring(0,35));
        //订单金额
        bizContent.setOrderAmt("1");
        bizContent.setTradeDate("20230515");
        bizContent.setTradeTime("091001");
        request.setBizContent(bizContent);

        QrcodePayResponseV2 response;
        try {
            response = client.execute(request, UUID.fastUUID().toString());//msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
            if (response.isSuccess()) {
                //6、业务成功处理,请根据接口文档用response.getxxx()获取同步返回的业务数据
                System.out.println("ReturnCode:"+response.getReturnCode());
                System.out.println("response:" + response);
            } else {
                //失败
                System.out.println("ReturnCode:"+response.getReturnCode());
                System.out.println("ReturnMsg:"+response.getReturnMsg());
            }
        } catch (IcbcApiException e) {
            e.printStackTrace();
        }
    }


}

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值