支付宝沙箱调试错误,请回到请求来源地,重新发起请求。错误代码 invalid-signature 错误原因: 验签出错 hutool JSONObject

调试错误,请回到请求来源地,重新发起请求。

错误代码 invalid-signature 错误原因: 验签出错

我这里的错误的确就是表单里面的value应该是出现了不应该出现的换行符,

 然后产生这个换行符的步骤是在 hutool那个JSONObject那里

将这个参数设置回0,就是格式化后的json字符串就不会存在换行符,

然后输出的value验签参数就不会换行了,也就不存在特殊符号了

 然后继续用手机模拟支付就可以了

try {
            /**
             * 第一步 获得初始化的AlipayClient
             */
            AlipayClient alipayClient = new DefaultAlipayClient(alipayProperties.getGatewayUrl(), alipayProperties.getAppId(), alipayProperties.getMerchantPrivateKey(), "json", alipayProperties.getCharset(), alipayProperties.getAlipayPublicKey(), alipayProperties.getSignType());
            /**
             * 第二步,开始构建 请求参数对象  AlipayTradePrecreateRequest
             * 详细的 请求参数请参考支付宝页面
             * https://opendocs.alipay.com/open/02ivbs?scene=21
             */

            AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();

            request.setNotifyUrl("");
            request.setReturnUrl("");

            JSONObject jsonObject = new JSONObject();

            String outTradeNo =  LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSS"))+UUID.randomUUID().toString().replaceAll("-","");
            //订单号 商户订单号。由商家自定义,64个字符以内,仅支持字母、数字、下划线且需保证在商户端不重复。
            jsonObject.set("out_trade_no",outTradeNo );
            //订单总金额,单位为元,精确到小数点后两位,取值范围为 [0.01,100000000]。金额不能为0。
            jsonObject.set("total_amount","0.01");
            //商品名
            jsonObject.set("subject", "叩丁狼H5手机支付测试");
            //销售产品码,商家和支付宝签约的产品码。手机网站支付为:QUICK_WAP_WAY
            jsonObject.set("product_code", "QUICK_WAP_PAY");
            /**
             * 这里格式化返回的json字符串注意 identFactor参数一定是0,不然
             * 到时候格式化到html就会出现 \n等特殊符号,导致验签失败
             */
            request.setBizContent(jsonObject.toJSONString(0));
            log.info("支付宝H5请求参数:[{}]", request);

            AlipayTradeWapPayResponse response = alipayClient.pageExecute(request);
            log.info("支付宝H5返回结果:[{}]", response);
            if (response.isSuccess()) {
                log.info("支付宝H5支付调用成功!返回信息:[{}]", response.getBody());
            } else {
                log.info("支付宝H5支付调用失败!错误信息:[{} {}]", response.getMsg(), response.getSubCode());
            }
            return Result.ok(response);
        } catch (AlipayApiException e) {
            log.error("支付宝APP支付异常信息,参数:{}", e.getErrMsg(), e);
            return null;

zhangky

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值