Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

attach参数值带有<![CDATA[#*#{"pn":"粤B87965","aid":"wx123"}#*#]]>签名失败 #1428

Closed
zupengliu opened this issue Mar 5, 2020 · 16 comments

Comments

@zupengliu
Copy link

zupengliu commented Mar 5, 2020

【紧急-紧急-紧急】统一下单接口,请求入参带有CDATA标签签名失败

简要描述

请求入参,attach参数值带有签名失败

模块版本情况

  • WxJava 模块名: weixin-java-pay
  • WxJava 版本号: 3.4.0

详细描述

错误格式:
appid=wx9e3&attach=&trade_type=JSAPI&key=abcsd
正确格式:
appid=wx9e3&attach=##{"pn":"粤B22222","aid":"wx9e3d92c4f772fd35"}##&trade_type=JSAPI&key=abcsd

日志

【响应数据】:<return_code></return_code>
<return_msg></return_msg>

@zupengliu
Copy link
Author

【紧急-紧急-紧急】统一下单接口,请求入参带有CDATA标签签名失败

简要描述

请求入参,attach参数值带有签名失败

模块版本情况

  • WxJava 模块名: weixin-java-pay
  • WxJava 版本号: 3.4.0

详细描述

错误格式:
appid=wx9e3&attach=&trade_type=JSAPI&key=abcsd
正确格式:
appid=wx9e3&attach=##{"pn":"粤B22222","aid":"wx9e3d92c4f772fd35"}##&trade_type=JSAPI&key=abcsd

日志

【响应数据】:<return_code></return_code>
<return_msg></return_msg>

@binarywang
Copy link
Member

知道你的问题怎么回事了,是你自己的请求有问题,为什么要加CDATA,可否去掉

@binarywang
Copy link
Member

CDATA是组装xml时需要加上的,但是你传递参数的话完全不需要。

@zupengliu
Copy link
Author

https://pay.weixin.qq.com/wiki/doc/api/vehicle_v2.php?chapter=20_100&index=12
您看看这个,这个是支付中开通车主服务的开发文档,要求格式是这样的

@zupengliu
Copy link
Author

zupengliu commented Mar 8, 2020 via email

@binarywang
Copy link
Member

我看你发的文档里要求的格式里没说需要CDATA吧

@binarywang
Copy link
Member

你这个问题大概率可以界定为使用问题,不能因为你使用问题就增加实现的复杂性,如果按你的使用方式,我是不是每个参数都需要检查是否有CDATA,然后再过滤掉?

@zupengliu
Copy link
Author

zupengliu commented Mar 8, 2020 via email

@binarywang
Copy link
Member

不加CDATA标签,腾讯解析不了,继而就不能实现支付中开通车主服务 (已和腾讯的技术人员沟通过) 这个问题,您想优化就优化,没必要说什么使用问题。 您这个开源也是基于微信的开发文档来的,如果跟不上节奏,久而久之,谁还会用呢?您说呢? zupengliu 发件人: Binary Wang 发送时间: 2020-03-08 19:07 收件人: Wechat-Group/WxJava 抄送: zupengliu; State change 主题: Re: [Wechat-Group/WxJava] attach参数值带有签名失败 (#1428) 你这个问题大概率可以界定为使用问题,不能因为你使用问题就增加实现的复杂性,如果按你的使用方式,我是不是每个参数都需要检查是否有CDATA,然后再过滤掉? — You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub, or unsubscribe.

楼主请息怒,没必要这么激动吧。可能你的表述方式我没完全理解,我还是不明白该做什么,要不你提交个PR,表达下你的想法,我们再讨论下?

@zupengliu
Copy link
Author

zupengliu commented Mar 8, 2020 via email

@binarywang
Copy link
Member

CDATA其实不是必须吧,官方文档只是个示例,而且目前代码生成的内容里会自动转义,我做过测试,能够生成正确的prepay_id。

如果你觉得没必要沟通,那就先这样吧。
不过我还是希望能解决问题,大家都不要那么情绪化。

@binarywang
Copy link
Member

顺便说下,我是用这个代码做的测试:com.github.binarywang.wxpay.service.impl.BaseWxPayServiceImplTest#testUnifiedOrder
其中测试代码做了部分调整,如下所示:

    WxPayUnifiedOrderRequest request = WxPayUnifiedOrderRequest.newBuilder()
      .body("我去")
      .totalFee(1)
      .spbillCreateIp("11.1.11.1")
      .notifyUrl("111111")
      .tradeType(TradeType.JSAPI)
      .openid(((XmlWxPayConfig) this.payService.getConfig()).getOpenid())
      .outTradeNo("111111826")
      .attach("#*#{\"pn\":\"粤B87965\",\"aid\":\"wx123\"}#*#")
      .build();

@zupengliu
Copy link
Author

zupengliu commented Mar 8, 2020 via email

@binarywang
Copy link
Member

我这边确实试过了,都是可以验签通过,至于你说疼讯不识别的问题,那我先将attach和detail两个参数加上注解,让它们生成CDATA标签,这个我也试过了,也是可以正常验签通过,没问题。

准备提交代码。晚会儿发布个版本,你可以再试试。

@binarywang
Copy link
Member

当然我说的验签通过,是调用统一下单接口传参时不加CDATA才可以,手动加上肯定是有问题的。

@binarywang
Copy link
Member

3.7.1.B版本已修复,欢迎试用

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants