支付宝当面付,报验签失败code:40002,msg:Invalid Arguments解决方案

本文主要是介绍支付宝当面付,报验签失败code:40002,msg:Invalid Arguments解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这几天在调试支付宝相应的接口,支付宝的加密使用了证书,调用网站支付时可以正常跳转支付页面,调试当面付接口时发现报了

{“alipay_trade_precreate_response”:{“code”:“40002”,“msg”:“Invalid Arguments”,“sub_code”:“isv.invalid-signature”,“sub_msg”:“验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配,网关生成的验签字符串为:alipay_root_cert_sn=6bc29aa3b4d406c43483ffea81e08d22&alipay_sdk=alipay-sdk-java-4.8.10.ALL&app_id=2016101200665312&biz_content={“body”:“好的商品”,“out_trade_no”:“20191017105011111112011ddd”,“product_code”:“FACE_TO_FACE_PAYMENT”,“subject”:“2222”,“timeout_express”:“10m”,“total_amount”:“58888”}&charset=utf-8&format=json&method=alipay.trade.precreate&sign_type=RSA2&timestamp=2019-10-18 17:49:24&version=1.0”},“sign”:“G+qYsFyUb4+n5e65lZjOFX7Bje6rXc7ykpsN3BK+bnoz/ATT1+7/aiBNznSo72zAmn+722uT9fZ8zjDxaBlgBfHD2rPpNtJVLq4sfUWgJt+Tsq328f7FsESVBEJMQ9MTkxbMpVndmZQDkL2yNH1Ke+4Lrpbv6oocMeWrnSiwaPMmhGZ1JOjFghVX9rNKZN1Qf1ZMGFlMu4wKzfRDqu1H8ipEW3IquJYNaiQuy6PNbsfplT84tsoOsfSF3xAsAlg853FPnig6aaYI35/hyYsm00GwPNdLraEwyMR+P5sbPGamyBIohJhTQFU2lGWTY8R9+SdWh2csvo6eXDohMS8pkg==”}

这个错误。

我们看看官方对这个错误的解释
在这里插入图片描述
然后看看我写的两个接口

/*** 通过跳转支付页面支付的方法* @param alipay* @return* @throws AlipayApiException*/public static String aliPayBypage(Alipay alipay) throws AlipayApiException {Logger logger = LoggerFactory.getLogger(AlipayUtil.class);logger.info("开始请求支付页面");//构造client,设置公共请求参数DefaultAlipayClient alipayClient = new DefaultAlipayClient(AlipayUtil.setCertAlipayRequest());//发送API请求AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();//页面跳转同步通知页面路径request.setReturnUrl(StringUtils.trimToNull(Configure.getString("return_url")));// 服务器异步通知页面路径request.setNotifyUrl(StringUtils.trimToNull(Configure.getString("notify_url")));//封装参数request.setBizContent(JSON.toJSONString(alipay));//3、请求支付宝进行付款,并获取支付结果String form = "";try {form = alipayClient.pageExecute(request).getBody();}catch (AlipayApiException e){e.printStackTrace();}//返回付款信息logger.info(form);return form;}/*** 获取支付二维码* @param alipay* @return* @throws AlipayApiException*/public static String aliPayByQrCode(Alipay alipay) throws AlipayApiException {Logger logger = LoggerFactory.getLogger(AlipayUtil.class);logger.info("开始请求支付二维码参数");//构造client,设置公共请求参数AlipayClient alipayClient = new DefaultAlipayClient(AlipayUtil.setCertAlipayRequest());//发送API请求AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();//创建API对应的request类//封装参数alipay.setProduct_code("FACE_TO_FACE_PAYMENT");request.setBizContent(JSON.toJSONString(alipay));//3、请求支付宝进行付款,并获取支付结果String form = "";//certificateExecutetry {form = alipayClient.execute(request).getBody();}catch (AlipayApiException e){e.printStackTrace();}//返回付款信息logger.info(form);return form;}

可以看到两个接口只有API请求的接口使用不同,其他的完全一样,所以上面的问题都可以排除,我也百度了这个问题发现没有跟我一样的情况,最后问了开放平台的技术支持
在这里插入图片描述
最后得知密钥的当面付接口调用 alipayClient.execute()
证书的当面付接口调用 alipayClient.certificateExecute()

而我的代码参考的官方文档写的,官方文档现在默认使用密钥方式下单,还未区分密钥和证书的方法
在这里插入图片描述所以把当面付接口换成alipayClient.certificateExecute() 可以正确拿到支付二维码。

这篇关于支付宝当面付,报验签失败code:40002,msg:Invalid Arguments解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/197499

相关文章

关于Nginx跨域问题及解决方案(CORS)

《关于Nginx跨域问题及解决方案(CORS)》文章主要介绍了跨域资源共享(CORS)机制及其在现代Web开发中的重要性,通过Nginx,可以简单地解决跨域问题,适合新手学习和应用,文章详细讲解了CO... 目录一、概述二、什么是 CORS?三、常见的跨域场景四、Nginx 如何解决 CORS 问题?五、基

MySQL安装时initializing database失败的问题解决

《MySQL安装时initializingdatabase失败的问题解决》本文主要介绍了MySQL安装时initializingdatabase失败的问题解决,文中通过图文介绍的非常详细,对大家的学... 目录问题页面:解决方法:问题页面:解决方法:1.勾选红框中的选项:2.将下图红框中全部改为英

Nginx启动失败:端口80被占用问题的解决方案

《Nginx启动失败:端口80被占用问题的解决方案》在Linux服务器上部署Nginx时,可能会遇到Nginx启动失败的情况,尤其是错误提示bind()to0.0.0.0:80failed,这种问题通... 目录引言问题描述问题分析解决方案1. 检查占用端口 80 的进程使用 netstat 命令使用 ss

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

pip install jupyterlab失败的原因问题及探索

《pipinstalljupyterlab失败的原因问题及探索》在学习Yolo模型时,尝试安装JupyterLab但遇到错误,错误提示缺少Rust和Cargo编译环境,因为pywinpty包需要它... 目录背景问题解决方案总结背景最近在学习Yolo模型,然后其中要下载jupyter(有点LSVmu像一个

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

Java下载文件中文文件名乱码的解决方案(文件名包含很多%)

《Java下载文件中文文件名乱码的解决方案(文件名包含很多%)》Java下载文件时,文件名中文乱码问题通常是由于编码不正确导致的,使用`URLEncoder.encode(filepath,UTF-8... 目录Java下载文件中文文件名乱码问题一般情况下,大家都是这样为了解决这个问题最终解决总结Java下

Idea实现接口的方法上无法添加@Override注解的解决方案

《Idea实现接口的方法上无法添加@Override注解的解决方案》文章介绍了在IDEA中实现接口方法时无法添加@Override注解的问题及其解决方法,主要步骤包括更改项目结构中的Languagel... 目录Idea实现接China编程口的方法上无法添加@javascriptOverride注解错误原因解决方

MYSQL事务死锁问题排查及解决方案

《MYSQL事务死锁问题排查及解决方案》:本文主要介绍Java服务报错日志的情况,并通过一系列排查和优化措施,最终发现并解决了服务假死的问题,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录问题现象推测 1 - 客户端无错误重试配置推测 2 - 客户端超时时间过短推测 3 - mysql 版本问