支付宝支付下单返回错误信息:"code":"40003","sub_msg":"验签出错, 未配置对应签名算法的公钥或者证书"

一、问题描述


最近在开发支付宝扫码支付,也就是当面付,代码写完之后,请求支付宝接口,一直返回错误信息:

{"msg":"Insufficient Conditions","code":"40003","sub_msg":"验签出错, 未配置对应签名算法的公钥或者证书","sub_code":"isv.missing-signature-config"}}

二、解决方法


在网上找了一番,基本上都是说: https://docs.open.alipay.com/200/106122


开放平台未配置商户公钥导致。请登录开放平台,上传公钥。可问题是公钥私钥都没错,APP支付都能用,为什么这里不能用。。。困惑。。使用的是官方的DEMO进行测试,也不行,最后在官方的教程中,搞定了:https://docs.open.alipay.com/194/105170/

	AlipayClient alipayClient = new DefaultAlipayClient(gateway,app_id,private_key(开发者私钥),"json","utf-8",alipay_public_key(支付宝公钥),sign_type(签名方式));
        String subject = "fendo 支付宝扫码支付测试";
        String totalAmount = "0.01";
        String storeId = "123";
        AlipayTradePrecreateModel model = new AlipayTradePrecreateModel();
        model.setSubject(subject);
        model.setTotalAmount(totalAmount);
        model.setStoreId(storeId);
        model.setTimeoutExpress("5m");
        model.setOutTradeNo(WeixinPayUtil.getRandomString(12));
        AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
        request.setBizModel(model);
        request.setNotifyUrl("https://xxxx/pay/alipay/notify_url");
        log.info(" 扫描请求参数: " + JSON.toJSONString(request));
        AlipayTradePrecreateResponse responses  = alipayClient.execute(request);
        ServletOutputStream servletOutputStream = null;
        servletOutputStream = response.getOutputStream();
        JSONObject jsonObject = JSONObject.parseObject(responses.getBody());
        log.info(" 扫描响应参数: " + jsonObject);
        String qr_code = jsonObject.getJSONObject("alipay_trade_precreate_response").getString("qr_code");
        //调用生成二维码的方法
        QRCodeUtil.encode(qr_code, servletOutputStream);


注意:

1.要使用当面付需要申请签约,然后才能使用。

2.当面付使用的秘钥是你创建的应用里的秘钥,而并不是mapi/wap网关的秘钥。

3.千万不要把其中的秘钥搞错了,有几个秘钥,一个是商户私钥公钥,也就是自己生成的秘钥,然后把秘钥上传到支付会得到一个支付宝公钥。

4.有时候报签名这类错误,如果原来能用,用在别的功能上就不能用了,比如说APP支付能用,用在扫码支付上却报错,基本上可以确定是代码的原因,上面的错误就是代码的原因。。

5.当面付中的auth_code是,打开支付宝付钱,条形码下会对应有一串数字,注意这传数字,不要轻易泄露出去,不然,别人可以通过条形码支付的方法,把你的钱转走。


参考:

https://openclub.alipay.com/read.php?tid=1568&fid=46

https://openclub.alipay.com/read.php?tid=2326&fid=46

https://openclub.alipay.com/read.php?tid=2333&fid=69

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011781521/article/details/79956387
文章标签: 支付宝 支付 JAVA
个人分类: 支付开发
上一篇Spring RestTemplate整理
下一篇Jackson String转List
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭