借用账号:授权+支付 联调

来源:16-8 支付2

宝慕林9190631

2020-12-04

针对借用账号的玩家:

  1. 前提: 授权 用测试账号 调试通
    支付 可以 单独 调试通,但是还不能通过 微信端 访问 sell.com,进行下单。

  2. 目标: 手机通过代理,访问 sell.com,然后进行下单,支付,
    下单成功可以跳转到新订单的页面,点击取消下单,成功取消。

  3. 具体步骤:
    原理可以自己去深究,毕竟我也是刚会,多说怕错。
    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里面师兄写着的,我现在该改掉哪个


0
2
zzard
我把openappid和openAppSercret删除了,成功了。但是后面扫码登录不知道该咋办
2021-04-19
共2条回复

廖师兄

2020-12-04

总结得非常好。其实明白了跳转的整个链路,就很好理解了。跳转复杂,都是微信官方限制导致的

0
1
宝慕林9190631
谢谢,没问题,赞同。
2020-12-04
共1条回复

Spring Boot双版本(1.5/2.1) 打造企业级微信点餐系统

从0到1开发中小型企业级Java应用,并学会迭代重构技巧

6410 学习 · 5247 问题

查看课程