我做了一个支付createOrder单元测试,使用的版本是 2.9.4-beta,代码如下: ``` @SpringBootTest(classes=WxMpApplication.class) @RunWith(SpringRunner.class) public class SignTest { private static final Logger logger = LoggerFactory.getLogger(PayController.class); @Resource(name = "wxPayService") private WxPayService wxPayService; @Test public void test() { try { WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest(); orderRequest.setBody("Test-Order-001212348"); orderRequest.setOutTradeNo("test-order-2808"); orderRequest.setTotalFee(BaseWxPayRequest.yuanToFen("0.01"));//元转成分 orderRequest.setOpenid("oEKyh1KN2lJZKTplZRjZ6Eu6jpc4"); orderRequest.setSpbillCreateIp("127.0.0.1"); orderRequest.setTimeStart("20180111091011"); orderRequest.setTimeExpire("20180111111011"); orderRequest.setNotifyURL("http://api.alpha.com.cn/pay/notify"); orderRequest.setTradeType("JSAPI"); WxPayUnifiedOrderResult result = wxPayService.createOrder(orderRequest); logger.error(result.getSign()); assertTrue(result.getSign() != null); } catch (Exception e) { e.printStackTrace(); } } ``` 抛出的异常如下: ` 2018-01-14 23:03:05.634 ERROR 34893 --- [ main] c.g.b.w.b.r.WxPayUnifiedOrderResult : 结果业务代码异常,返回结果:{return_msg=签名错误, return_code=FAIL}, 返回代码:FAIL,返回信息:签名错误 `
Activity
[-]2.9.4-beta 签名错误[/-][+]2.9.4-beta 支付 createOrder 签名错误[/+][-]2.9.4-beta 支付 createOrder 签名错误[/-][+]2.9.4.beta 支付 createOrder 签名错误[/+]binarywang commentedon Jan 15, 2018
请认真调试下,看看你的代码哪里出了问题
gtyang commentedon Jan 15, 2018
request正常设置了啊,发送的请求 xml 是
这个数据用微信的签名核验工具生成的签名和程序生成的签名不一样:
#4.校验结果:
原sign值:288134A51005EFAE4FBB308C0E8CB192
新sign值:5F599381E3033C787A48769197EC47D5
binarywang commentedon Jan 15, 2018
自己一步步调试源码看看
gtyang commentedon Jan 15, 2018
找到问题了,是signKey设置有问题。