Wechat-Group / WxJava

微信开发 Java SDK ,支持包括微信支付,开放平台,小程序,企业微信,视频号,公众号等的后端开发
Apache License 2.0
29.76k stars 8.54k forks source link

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

Closed zupengliu closed 4 years ago

zupengliu commented 4 years ago

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

简要描述

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

模块版本情况

详细描述

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

日志

【响应数据】:<![CDATA[FAIL]]>

zupengliu commented 4 years ago

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

简要描述

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

模块版本情况

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

详细描述

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

日志

【响应数据】:

binarywang commented 4 years ago

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

binarywang commented 4 years ago

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

zupengliu commented 4 years ago

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

zupengliu commented 4 years ago

反馈这个问题不是参数需要不需要,而是既然开源就要具备通用性。 验签工具:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1 根据验签工具,XML内容如下:

zupengliu

发件人: Binary Wang 发送时间: 2020-03-08 18:00 收件人: Wechat-Group/WxJava 抄送: zupengliu; State change 主题: Re: [Wechat-Group/WxJava] attach参数值带有<![CDATA[##{"pn":"粤B87965","aid":"wx123"}##]]>签名失败 (#1428) Closed #1428. — You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub, or unsubscribe.

binarywang commented 4 years ago

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

binarywang commented 4 years ago

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

zupengliu commented 4 years ago

不加CDATA标签,腾讯解析不了,继而就不能实现支付中开通车主服务 (已和腾讯的技术人员沟通过)

这个问题,您想优化就优化,没必要说什么使用问题。

您这个开源也是基于微信的开发文档来的,如果跟不上节奏,久而久之,谁还会用呢?您说呢?

zupengliu

发件人: Binary Wang 发送时间: 2020-03-08 19:07 收件人: Wechat-Group/WxJava 抄送: zupengliu; State change 主题: Re: [Wechat-Group/WxJava] attach参数值带有<![CDATA[##{"pn":"粤B87965","aid":"wx123"}##]]>签名失败 (#1428) 你这个问题大概率可以界定为使用问题,不能因为你使用问题就增加实现的复杂性,如果按你的使用方式,我是不是每个参数都需要检查是否有CDATA,然后再过滤掉? — You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub, or unsubscribe.

binarywang commented 4 years ago

不加CDATA标签,腾讯解析不了,继而就不能实现支付中开通车主服务 (已和腾讯的技术人员沟通过) 这个问题,您想优化就优化,没必要说什么使用问题。 您这个开源也是基于微信的开发文档来的,如果跟不上节奏,久而久之,谁还会用呢?您说呢? zupengliu 发件人: Binary Wang 发送时间: 2020-03-08 19:07 收件人: Wechat-Group/WxJava 抄送: zupengliu; State change 主题: Re: [Wechat-Group/WxJava] attach参数值带有<![CDATA[##{"pn":"粤B87965","aid":"wx123"}##]]>签名失败 (#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 commented 4 years ago

您一直再强调什么 不需要,使用问题之类,我觉得没必要这样沟通下去。

统一下单接口:https://pay.weixin.qq.com/wiki/doc/api/jsapi_sl.php?chapter=9_1 类似下图示例,也是带有CDATA标签的

这其实就是一个验签的问题,因为CDATA引起的验签不通过,所以才再github上留言反馈。其他没有什么。

zupengliu

发件人: Binary Wang 发送时间: 2020-03-08 19:21 收件人: Wechat-Group/WxJava 抄送: zupengliu; State change 主题: Re: [Wechat-Group/WxJava] attach参数值带有<![CDATA[##{"pn":"粤B87965","aid":"wx123"}##]]>签名失败 (#1428) 不加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,表达下你的想法,我们再讨论下? — You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub, or unsubscribe.

binarywang commented 4 years ago

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

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

binarywang commented 4 years ago

顺便说下,我是用这个代码做的测试: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 commented 4 years ago

.attach("##{\"pn\":\"粤B87965\",\"aid\":\"wx123\"}##") 生成XML之后##{"pn":"粤B22222","aid":"wx9e3d92c4f772fd35"}##这个是和微信的技术人员确认过他门的回复是解析不了。所以才加的CDATA标签 这个单元测试我再收到您回复的邮件提醒时,就试过了,验签不通过

zupengliu

发件人: Binary Wang 发送时间: 2020-03-08 20:05 收件人: Wechat-Group/WxJava 抄送: zupengliu; State change 主题: Re: [Wechat-Group/WxJava] attach参数值带有<![CDATA[##{"pn":"粤B87965","aid":"wx123"}##]]>签名失败 (#1428) 顺便说下,我是用这个代码做的测试: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();

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub, or unsubscribe.

binarywang commented 4 years ago

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

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

binarywang commented 4 years ago

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

binarywang commented 4 years ago

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