支付宝小程序对接错误

相关场景

一、获取授权令牌

1、错误描述:“sub_msg”:“授权码code无效”

原因:每个authorization_code 只能查询一次令牌,不管查询接口正确与否,下一次查询都需要更换新的授权码
解决:更换新的授权码

2、错误描述:{“code”:“40004”,“msg”:“Business Failed”,“sub_code”:“AUTH_CODE_NOT_EXIST”,“sub_msg”:“auth_code不存在”}

原因:接口调用错误
解决:参照后面的【获取授权令牌】,使用正确方式请求

3、错误描述:“sub_msg”:"验签出错,建议检查签名字符串或私钥与应用公钥是否匹配

原因:很大原因是公钥用错,ALIPAY_PUBLIC_KEY 是 支付宝公钥!!不是 应用公钥!!应用公钥是自己用 支付宝开放平台开发助手生成的 支付宝公钥是上传后自己生成的
解决:程序中要用支付宝公钥!!


二、版本发布

原因:发布版本不对,正式版,体验版 版本有误
解决:先预览,再上传版本,不然上传的都是旧的版本
在这里插入图片描述


下面对比获取授权令牌(用授权码换取授权令牌 access_token)公钥方式和证书方式

1、公钥方式(ALIPAY_PUBLIC_KEY 是 支付宝公钥!!不是 应用公钥!!应用公钥是自己用 支付宝开放平台开发助手生成的 支付宝公钥是上传后自己生成的)

public static void main(String[] args) throws AlipayApiException {
    AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",APP_ID,APP_PRIVATE_KEY,"json","GBK",ALIPAY_PUBLIC_KEY,"RSA2");
    AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
    request.setGrantType("authorization_code");//固定
    request.setCode("授权码");//授权码
    AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
    if(response.isSuccess()){
            System.out.println("调用成功");
    } else {
            System.out.println("调用失败");
    }
}

2、证书方式

public static void main(String[] args) throws AlipayApiException {
        CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
        certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
        certAlipayRequest.setAppId(APP_ID);
        certAlipayRequest.setPrivateKey(APP_PRIVATE_KEY);
        certAlipayRequest.setFormat("json");
        certAlipayRequest.setCharset("utf-8");
        certAlipayRequest.setSignType("RSA2");
        certAlipayRequest.setCertPath("F://appCertPublicKey.crt");
        certAlipayRequest.setAlipayPublicCertPath("F://alipayCertPublicKey_RSA2.crt");
        certAlipayRequest.setRootCertPath("F://alipayRootCert.crt");
        AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
        AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
        request.setGrantType("authorization_code");
        request.setCode("授权码");
        AlipaySystemOauthTokenResponse response = alipayClient.certificateExecute(request);
        if(response.isSuccess()){
            System.out.println("调用成功");
        } else {
            System.out.println("调用失败");
        }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cy谭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值