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

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

浏览量:7269 时间: 来源:lfendo

一、问题描述


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

{"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

小程序

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎