当前位置:   article > 正文

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

调试错误,请回到请求来源地,重新发起请求。 错误代码 invalid-signature 错误原因

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

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

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

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

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

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

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

  1. try {
  2. /**
  3. * 第一步 获得初始化的AlipayClient
  4. */
  5. AlipayClient alipayClient = new DefaultAlipayClient(alipayProperties.getGatewayUrl(), alipayProperties.getAppId(), alipayProperties.getMerchantPrivateKey(), "json", alipayProperties.getCharset(), alipayProperties.getAlipayPublicKey(), alipayProperties.getSignType());
  6. /**
  7. * 第二步,开始构建 请求参数对象 AlipayTradePrecreateRequest
  8. * 详细的 请求参数请参考支付宝页面
  9. * https://opendocs.alipay.com/open/02ivbs?scene=21
  10. */
  11. AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
  12. request.setNotifyUrl("");
  13. request.setReturnUrl("");
  14. JSONObject jsonObject = new JSONObject();
  15. String outTradeNo = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSS"))+UUID.randomUUID().toString().replaceAll("-","");
  16. //订单号 商户订单号。由商家自定义,64个字符以内,仅支持字母、数字、下划线且需保证在商户端不重复。
  17. jsonObject.set("out_trade_no",outTradeNo );
  18. //订单总金额,单位为元,精确到小数点后两位,取值范围为 [0.01,100000000]。金额不能为0。
  19. jsonObject.set("total_amount","0.01");
  20. //商品名
  21. jsonObject.set("subject", "叩丁狼H5手机支付测试");
  22. //销售产品码,商家和支付宝签约的产品码。手机网站支付为:QUICK_WAP_WAY
  23. jsonObject.set("product_code", "QUICK_WAP_PAY");
  24. /**
  25. * 这里格式化返回的json字符串注意 identFactor参数一定是0,不然
  26. * 到时候格式化到html就会出现 \n等特殊符号,导致验签失败
  27. */
  28. request.setBizContent(jsonObject.toJSONString(0));
  29. log.info("支付宝H5请求参数:[{}]", request);
  30. AlipayTradeWapPayResponse response = alipayClient.pageExecute(request);
  31. log.info("支付宝H5返回结果:[{}]", response);
  32. if (response.isSuccess()) {
  33. log.info("支付宝H5支付调用成功!返回信息:[{}]", response.getBody());
  34. } else {
  35. log.info("支付宝H5支付调用失败!错误信息:[{} {}]", response.getMsg(), response.getSubCode());
  36. }
  37. return Result.ok(response);
  38. } catch (AlipayApiException e) {
  39. log.error("支付宝APP支付异常信息,参数:{}", e.getErrMsg(), e);
  40. return null;

zhangky

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/718965
推荐阅读
相关标签
  

闽ICP备14008679号