借用账号:授权+支付 联调
来源:16-8 支付2
宝慕林9190631
2020-12-04
针对借用账号的玩家:
-
前提: 授权 用测试账号 调试通
支付 可以 单独 调试通,但是还不能通过 微信端 访问 sell.com,进行下单。 -
目标: 手机通过代理,访问 sell.com,然后进行下单,支付,
下单成功可以跳转到新订单的页面,点击取消下单,成功取消。 -
具体步骤:
原理可以自己去深究,毕竟我也是刚会,多说怕错。
1)前端:
1. 连上虚拟机访问前端代码
位置:/opt/code/sell_fe_buyer/src/components/payment/ 目录下 index.vue 文件
定位代码:
then((respones) => {
respones = respones.body;
if (respones.code == ERR_OK) {
location.href = config.wechatPayUrl +
’?openid=’ + getCookie(‘openid’) + # 修改成 你的微信 在师兄下获得的opend ,固定’?openid=’ + ‘xxx’ +
’&orderId=’ + respones.data.orderId +
’&returnUrl=’ + encodeURIComponent(config.sellUrl + ‘/#/order/’ + respones.data.orderId);
}else {
alert(respones.msg);
}
2.同样:定位代码:/opt/code/sell_fe_buyer/src/components/order/ 目录下 detail.vue 文件
pay: function (orderId) {
location.href = config.wechatPayUrl +
’?openid=’ + getCookie(‘openid’) + # 修改成 你的微信 在师兄下获得的opend ,固定’?openid=’ + ‘xxx’ +
’&orderId=’ + orderId +
’&returnUrl=’ + encodeURIComponent(config.sellUrl + ‘/#/order/’ + orderId);
}
3. 修改/opt/code/sell_fe_buyer/config/ 下的index.js文件
wechatPayUrl: ‘http://proxy.springboot.cn/pay’’ # 统一一样的
修改完前端的代码——npm run build—— cp -r dist/* /opt/data/wwwroot/sell/
2)后端:
4.定位WechatController这个controller, 先跟着视频再做一遍,打断点,调试通下面方法。
127.0.0.1:8080/sell/wechat/authorize?returnUrl=xxx
127.0.0.1:8080/sell/wechat/userInfo?returnUrl=xxx
调试的时候,用的是测试账号,也就是在配置文件中,mpAppId=yyy(测试公众号)
调试完成后:
1.mpAppId 这个不用变
2.修改userInfo()方法中,这段代码:
# String openId = wxMpOAuth2AccessToken.getOpenId();
String openId = “xxx”; # 修改成 你的微信 在师兄下获得的opend ,固定’?openid=’ + ‘xxx’ +
3. 再调试一遍这段代码,感受一下。(重定向的时候,returnUrl,后面就会接这个openid,而不是测试号对应的openid)5.运行项目:在微信上打开地址: http://pfzhang18.natapp1.cc/sell/wechat/authorize?returnUrl=http://www.imooc.com 确保访问没问题,重定向到www.imooc.com这个网站,复制链接,看后面的openid是不是设置的。 6.修改支付配置中的appid,用师兄账号的appid,不要修改配置文件(不然测试授权的时候,访问失败的) 直接定位 WechatPayConfig 这个配置 # wxPayH5Config.setAppId(accountConfig.getMpAppId()); wxPayH5Config.setAppId("wxd898fcb01713c658"); # 统一的appid 7.设置完成: 先访问: http://pfzhang18.natapp1.cc/sell/wechat/authorize?returnUrl=http://sell.com 测试下,支付,没问题就ok了。 先访问这个是,为了让cookie里存入你自己的设置的openid,也就是userInfo()中设置的。 之后直接访问 sell.com 就行了。下单成功。ok。
3)下单成功,但是订单详情跳转问题:
8.定位 BuyerOrderController 中的detail()方法 , 在方法中增加代码
openid = “oTgZpwQnZ-oUhy65POuX24EbqYiY”; # 放第一行就可以9.定位 BuyerServiceImpl 中的 checkOrderOwner()方法, 在方法中增加代码 openid = "oTgZpwQnZ-oUhy65POuX24EbqYiY"; # 放第一行就可以 10. 设置完成后,重启项目看看跳转效果,如果还是有问题: 定位 PayController 中的 create()方法 : 用下面的代码代替师兄这段map.put("returnUrl", returnUrl.startsWith("http://") ? returnUrl : URLEncoder.encode(returnUrl, "utf-8")); try { returnUrl = java.net.URLDecoder.decode(returnUrl, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } map.put("returnUrl", returnUrl);
2回答
-
zzard
2021-04-19
hxd还在吗,我在支付的时候报错,说returnMsg = appid和mch_id不匹配,我的yml里面写了mpAppid,mpAppsecret(这两个是我自己的测试公众号),然后是openAppid和openAppSercret(这个是师兄的扫码登录后台管理用的),然后还有个mchId和mchKey,这个是之前听课借用师兄的商户号的,在doc里面师兄写着的,我现在该改掉哪个
022021-04-19 -
廖师兄
2020-12-04
总结得非常好。其实明白了跳转的整个链路,就很好理解了。跳转复杂,都是微信官方限制导致的
012020-12-04
相似问题