|
1.在微信内支付,也就是JSAPI支付功能,今天做了测试,测试结果如下:
2,在跟踪运行的debug,发现是在WxMpJsApi中调用getPrepayOrder方法中代码如下
在标红的这句代码中,并没有返回全部的WxJsapiPrepayOrder对象,其中本应该在jar中给对象赋值并返回的nonceStr参数和prepay_id参数并没有返回过来,
3.跟踪官方提供的下载包中的源码文件
public WxJsapiPrepayOrder getPrePayOrder(WxJsapiUnifiedOrder unifiedorder) throws WxErrorException {
String noncestr = RandomUtils.getRandomStr();
unifiedorder.setNonceStr(noncestr);
/**
* 先实现支付签名逻辑 然后发送获取预支付订单逻辑
*/
WxMpCryptUtil.addJsapiPaySign(unifiedorder,wxMpConfigStorage.getAppKey());
String url = "https://api.mch.weixin.qq.com/pay/unifiedorder";
String responseContent = execute(new SimpleXmlPostRequestExecutor(), url, unifiedorder.toXml());
return WxJsapiPrepayOrder.fromXml(responseContent);
}
这里是有返回信息的,判断就是在项目中引用的jar有问题,反编译jar如下
public WxJsapiPrepayOrder getPrePayOrder(WxJsapiUnifiedOrder paramWxJsapiUnifiedOrder)
throws WxErrorException
{
String str1 = RandomUtils.getRandomStr();
paramWxJsapiUnifiedOrder.setNonceStr(str1);
WxMpCryptUtil.addJsapiPaySign(paramWxJsapiUnifiedOrder, this.wxMpConfigStorage.getAppKey());
String str2 = "https://api.mch.weixin.qq.com/pay/unifiedorder";
String str3 = (String)execute(new SimpleXmlPostRequestExecutor(), str2, paramWxJsapiUnifiedOrder.toXml());
return WxJsapiPrepayOrder.fromXml(str3);
}
这两个方法基本上一致,可是为什么在第一步中获取不到nonceStr参数和prepay_id内,请版主速来解决下
|
|