起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2891|回复: 8

[处理中5] 关于WeX5 V3.3正式版 微信支付问题,请版主速来处理下

  [复制链接]

1

主题

3

帖子

11

积分

新手上路

Rank: 1

积分
11
QQ
发表于 2016-2-24 15:15:42 | 显示全部楼层 |阅读模式
1.在微信内支付,也就是JSAPI支付功能,今天做了测试,测试结果如下:
1.jpg

2,在跟踪运行的debug,发现是在WxMpJsApi中调用getPrepayOrder方法中代码如下
2.jpg
在标红的这句代码中,并没有返回全部的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内,请版主速来解决下
发表于 2016-2-24 15:28:23 | 显示全部楼层
请参考外卖案例的微信内支付的代码,运行时调试对比下,是不是因为某些参数没赋值?
也可以看看外卖的视频:http://wex5.com/cn/1-wex5#03
里面也有讲解微信内支付,你看下需要注意的点!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

1

主题

3

帖子

11

积分

新手上路

Rank: 1

积分
11
QQ
 楼主| 发表于 2016-2-24 15:33:40 | 显示全部楼层
liangyongfei 发表于 2016-2-24 15:28
请参考外卖案例的微信内支付的代码,运行时调试对比下,是不是因为某些参数没赋值?
也可以看看外卖的视频 ...

3.jpg
这是/Baas/weixin/weixin.config.xml 的配置信息
4.jpg
这是index.w中调用的赋值信息,请问有问题嘛?
关键是直接打包wex5中的takeout来放到自己微信中运行,也是这样的问题哦

回复 支持 反对

使用道具 举报

发表于 2016-2-24 15:55:37 | 显示全部楼层
zk268zh 发表于 2016-2-24 15:33
这是/Baas/weixin/weixin.config.xml 的配置信息

这是index.w中调用的赋值信息,请问有问题嘛?

那就说明不是代码的问题了,因为外卖案例默认是可以正常支付的
应该是你微信号的配置问题,建议看看视频,找找细节上和你的差异
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

1

主题

3

帖子

11

积分

新手上路

Rank: 1

积分
11
QQ
 楼主| 发表于 2016-2-24 17:37:41 | 显示全部楼层
liangyongfei 发表于 2016-2-24 15:55
那就说明不是代码的问题了,因为外卖案例默认是可以正常支付的
应该是你微信号的配置问题,建议看看视频 ...

花了一下午时间,调试了这些代码,可以了
调试如下:直接在WxMpJsApi.getPrepayOrder中实现如下:


8.png

发现在调用统一订单的时候,输出的XML格式为
7.jpg
这种格式,注意圈住的信息,这里的两个下划线__ 这样在调用统一订单接口的时候会有这些问题,在获取有下划线的字段的时候,是获取不到的,不知道官网上的测试案例可以执行,这里的值是多少,
继续跟踪代码WxJsapiUnifiedOrder类中的toxml方法
9.jpg
这里可以看到是调用了一个XStream进行一个beantoxml
继续往下看
XStreamInitializer里面的方法
1.jpg

如下,new 了一个WxXmlNameCoder类
看下源码如下
class WxXmlNameCoder extends XmlFriendlyNameCoder
{
  public WxXmlNameCoder()
  {
    super("__", "_");
  }
}


然后就不清楚为什么要加这个了


就是这个问题导致在调用统一订单的时候获取不到随机数和统一订单返回的订单编号
希望版主通知下相关人员查看下V3.3版本中takeout案例中编译的jar文件和引用的包是否有问题


回复 支持 反对

使用道具 举报

发表于 2016-2-24 18:01:09 | 显示全部楼层
zk268zh 发表于 2016-2-24 17:37
花了一下午时间,调试了这些代码,可以了
调试如下:直接在WxMpJsApi.getPrepayOrder中实现如下:

你好楼主,该问题需要远程,已经通过技术服务QQ加你为好友了,请及时通过,我们会尽快QQ远程。
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

发表于 2016-2-25 11:07:55 | 显示全部楼层
zk268zh 发表于 2016-2-24 17:37
花了一下午时间,调试了这些代码,可以了
调试如下:直接在WxMpJsApi.getPrepayOrder中实现如下:

你好楼主,您反馈的这个现象可能是产品缺陷,我们已提交到产品组(内部编号:2016022500005),感谢楼主的支持与配合。
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

0

主题

3

帖子

11

积分

新手上路

Rank: 1

积分
11
QQ
发表于 2016-3-2 19:36:23 | 显示全部楼层
这个问题坑死人了,搞了我两天的时间,询问过技术人员,都很肯定的说是我的配置有问题,结果呢,是jar包的问题
回复 支持 反对

使用道具 举报

4

主题

25

帖子

85

积分

初级会员

Rank: 2

积分
85
QQ
发表于 2016-4-8 22:29:43 | 显示全部楼层
zk268zh 发表于 2016-2-24 17:37
花了一下午时间,调试了这些代码,可以了
调试如下:直接在WxMpJsApi.getPrepayOrder中实现如下:

楼主,请问下微信支付的appkey在哪查到的?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-19 03:02 , Processed in 0.073392 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表