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

QQ登录

只需一步,快速开始

查看: 3217|回复: 8

[处理中3] 微信公众号支付,如何随时获取CODE

[复制链接]

50

主题

215

帖子

625

积分

高级会员

Rank: 4

积分
625
QQ
发表于 2017-5-16 15:18:24 | 显示全部楼层 |阅读模式
我们需要把一个购物网站 m.xxx.com 放在微信公众号里。
让用户可以在微信公众号里进入网站,然后浏览访问,
然后在支付下单的时候 调用H5微信支付。

经过研究,现在我理解到的。
X5的        
   var wxPay = require('$UI/system/api/native/wxPay');
    var tradeNo = justep.UUID.createUUID();                          //订单号
        var notifyUrl = location.origin + "/baas/weixin/weixin/notify";  //微信公众号支付结果通知地址
        wxPay.pay({
            body : "aaaa",       // 标题
            mchId : "1350044242",  // 商户ID,微信公众号开发需要
            notifyUrl : notifyUrl, // 支付结果通知回调地址,微信公众号开发需要
            outTradeNo : tradeNo,  // 订单号
            totalFee : "1", // 费用(分)
            success : function(e) {
                alert(JSON.stringify(e))
            },
            cancel : function(e) {
                alert("----"+JSON.stringify(e))
            },
            fail : function(e) {
                alert("fail----"+JSON.stringify(e))
            }
        });
这个方式里,自带的会去获取userinfo。但是获取userinfo的方式 只能是通过code值, 而code值是从url中截取出来的。且code值只能用一次。
那么,这种方式 就必须要要求,使用https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
这种形式去获取。但是 使用这种形式,会重定向到另一个页面。


我这里的情况是进入时是进入的 首页,并不需要获取code。只有在支付的时候 才要获取code。
但是在使用open.weixin.qq.com的方式,好像无法进行传值,我该如何 在重定向的页面 获取我们自己系统内的订单信息。

有没有java 方法可以直接获取code的方式。 这样 我就可以在页面中随时获取一个code了。

发表于 2017-5-16 16:28:55 | 显示全部楼层
CODE  只能在js 中 通过
this.getContext().getRequestParameter("code");
获取到!
并且每次定向打开的页面  code都会变的 !


你需要进入首页 index.w 中 执行 this.getContext().getRequestParameter("code");   获取后存储在js对象中!支付的时候访问这个js对象获取就可以了!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

50

主题

215

帖子

625

积分

高级会员

Rank: 4

积分
625
QQ
 楼主| 发表于 2017-5-16 16:31:26 | 显示全部楼层
本帖最后由 wxdmvp 于 2017-5-16 16:34 编辑
liangyongfei 发表于 2017-5-16 16:28
CODE  只能在js 中 通过
this.getContext().getRequestParameter("code");
获取到!

那就是说如果要做支付,那么公众号的菜单链接,一定是https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
这种格式的?

还有个问题,我看了baasserver里的weixin的jar包,关于预生产订单的代码里,参数处理比较少,
如果我们做跨境支付,需要传递 货币类型等其他参数。
那么,我该如何改这个jar包呢?

微信的api https://pay.weixin.qq.com/wiki/d ... _sl.php?chapter=9_1
里面参数很多

回复 支持 反对

使用道具 举报

发表于 2017-5-16 17:08:09 | 显示全部楼层
wxdmvp 发表于 2017-5-16 16:31
那就是说如果要做支付,那么公众号的菜单链接,一定是https://open.weixin.qq.com/connect/qrconnect?appi ...

那你参考外卖案例的 方法
payOrderByWeixinJSSDK 

这个就是调用原始的 微信 jssdk的方法!你去查它的文档吧!
   var wxPay = require('$UI/system/api/native/wxPay');
wxPay.pay
是经过封装的!如果想看源码就去找这个路径$UI/system/api/native/wxPay

最终也是封装的
微信 jssdk的方法

具体它怎么掉用请看它的文档!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

50

主题

215

帖子

625

积分

高级会员

Rank: 4

积分
625
QQ
 楼主| 发表于 2017-5-16 17:47:13 | 显示全部楼层
liangyongfei 发表于 2017-5-16 17:08
那你参考外卖案例的 方法
payOrderByWeixinJSSDK 

wxPay.js  和  /system/lib/cordova/weixin/wxApi.js 下面的我都看了。
其实 后台 调用的java的我看了 都是一样的。
这里 涉及到了 baasserver里weixin.jar,weixin-java-common-1.1.4.jar,weixin-java-mp-1.1.4.jar
jar包里的方法。这些是起步自己写的吗?
我看到里面 关于生成预支付交易单的方法处理里面,很多参数都没有相关的处理类。
如果我去改的话,如何做?
回复 支持 反对

使用道具 举报

50

主题

215

帖子

625

积分

高级会员

Rank: 4

积分
625
QQ
 楼主| 发表于 2017-5-17 11:03:24 | 显示全部楼层
liangyongfei 发表于 2017-5-16 17:08
那你参考外卖案例的 方法
payOrderByWeixinJSSDK 

可以回复一下吗?

wxPay.js  和  /system/lib/cordova/weixin/wxApi.js 下面的我都看了。
其实 后台 调用的java的我看了 都是一样的。
这里 涉及到了 baasserver里weixin.jar,weixin-java-common-1.1.4.jar,weixin-java-mp-1.1.4.jar
jar包里的方法。这些是起步自己写的吗?
我看到里面 关于生成预支付交易单的方法处理里面,很多参数都没有相关的处理类。
如果我去改的话,如何做?

关于支付时候 需要用到openid ,这个值,我看到是 在getuserinfo 方法里 set到session里了。
然后 如果用户在session期限外 支付的话,会导致错误, 这里 有没有其他解决办法。
比如我把session 的有效时间设置久一些?
或者通过其他 方式把openid 存储起来,在需要支付的时候  把openid取出来,塞到支付的过程中?
回复 支持 反对

使用道具 举报

发表于 2017-5-17 14:19:13 | 显示全部楼层
wxdmvp 发表于 2017-5-17 11:03
可以回复一下吗?

wxPay.js  和  /system/lib/cordova/weixin/wxApi.js 下面的我都看了。

支付是前端实现的!
baas 中你是指支付成功的回调吗?
支付成功后  ,支付官方会给你指定的notifyUrl 推送一条信息
http://docs.wex5.com/wex5-server-question-list-2019/

需要你自己查支付返回的信息格式

session 是后台控制的!这个是标准的web容器对象 ,上网查吧!
wex5 的baas就是一个标准的sevlet ,没什么特殊的
http://docs.wex5.com/wex5-server-question-list-2027
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

50

主题

215

帖子

625

积分

高级会员

Rank: 4

积分
625
QQ
 楼主| 发表于 2017-5-18 14:51:38 | 显示全部楼层
liangyongfei 发表于 2017-5-17 14:19
支付是前端实现的!
baas 中你是指支付成功的回调吗?
支付成功后  ,支付官方会给你指定的notifyUrl 推 ...

我的意思是,生成预付交易单的java方法 都是jar包里的。我想追加一些方法和参数进去,现在怎么去改那个jar包?
回复 支持 反对

使用道具 举报

发表于 2017-5-18 15:26:33 | 显示全部楼层
wxdmvp 发表于 2017-5-18 14:51
我的意思是,生成预付交易单的java方法 都是jar包里的。我想追加一些方法和参数进去,现在怎么去改那个ja ...

jar包是微信官方下载的!你可以自己去 官网 搜源码修改吧!

不是起步封装的!
只要baas 名称 的 jar才是
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 22:51 , Processed in 0.073897 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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