针对借用账号的玩家:
前提: 授权 用测试账号 调试通
支付 可以 单独 调试通,但是还不能通过 微信端 访问 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);