后台配置
wechat:
    pay:
        #秘钥
        key: #此处为商户平台配置的api秘钥 我用的apiv2接口 推荐v2 v3使用一样的秘钥
        #公众号 Appid
        subscriptionAppId: xxxx
        #公众号 商户id
        subscriptionMchId: xxxxx
        # 证书地址
        certPath: /cert/apiclient_cert.p12 #在商户平台下载的证书复制到resourcesd的cert目录下
        spbillCreateIp: #正常ip即可
   
callBack: #这两个地址需要在微信公众号后台添加白名单和配置
    notifyUrl: #通知地址
    returnUrl: #回调地址
/**
*自定义预支付方法 用于传给前端需要参数唤起微信支付
*/
@ApiOperation("支付接口")
@PostMapping("payMoney")
@RepeatSubmit(interval = 1000, message = "请求过于频繁")
public AjaxResult payMoney(@RequestBody ReqPayVO reqPayVO) {
    // 整理返回值map
    Map<String, Object> map = new HashMap<>(2);
    Map<String, Object> createAAssessTestOrderMap = businessPayService.createOrder(reqPayVO);
    map.put("orderId", createAAssessTestOrderMap.get("orderId"));
    map.put("wechatJsApiResult", createAAssessTestOrderMap.get("wechatJsApiResult"));
    return AjaxResult.success(map);
}
前台代码

前端只需要接收参数发请求即可。

//继续支付
payAgain() {
  console.log(this);
  const data = this._data.result;
  const params = {
    openId: data.openId,
    orderId: data.orderNum,
    payMoney: data.cost,
    body: data.body,
    type: data.type
  }
  payAgain(params).then(({data}) => {
    uni.hideLoading();
    console.log(params);
    uni.hideLoading();
    if (data.code == 200) {
      console.log(data);
      WeixinJSBridge.invoke(
          'getBrandWCPayRequest', {
            // 公众号ID,由商户传入
            "appId": data.appId,
            // 时间戳,自1970年以来的秒数
            "timeStamp": data.timestamp,
            // 随机串
            "nonceStr":data.noncestr,
            "package":data.pack,
            // 微信签名方式
            "signType":"MD5",
            // 微信签名
            "paySign":data.paySign
          },
          function(res){
            if(res.err_msg == "get_brand_wcpay_request:ok" ){
              // 使用以上方式判断前端返回,微信团队郑重提示:
              // res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
            }
          });
    } else {
      console.log(data);
      console.log(666);
    }
  });
},
本地测试

因为微信开发助手不能唤起微信支付,只好找其他测试方法,最后找到一个思路。

1.先穿透本地后台服务的生成域名

2.自定义支付测试代码方法

3.用手机微信打开测试地址,完成测试

(把测试地址发到随便一个聊天框,点开就行)

真机调试(跟测试微信支付没啥关系,可不看,了解即可)
  1. 下载tbs studio工具,网址;https://x5.tencent.com/tbs/guide/debug/download.html
    (ps:我第一次下载点了好几次下载成功)
  2. 设置手机调试参数 可参考:
  3. 微信降级8.0.21版本,降级前需要删除新版
    微信更新8.0.22版本后原来的/?forcex5=true打开显示不支持切换x5内核,所以需要回退微信版本 可参考:https://www.bilibili.com/read/cv16749069
    (直接点击线上安装内核就行 重启微信)
    4.按照指示点击调试
    (将要调试的公众号置于手机前端:就是打开公众号之后别动了)
  4. java 订单支付模块 java支付流程开发_java 订单支付模块

也可以在谷歌浏览器输入:chrome://inspect/#devices

(tbs studio需要一直打开 谷歌流览器依赖这个工具)

java 订单支付模块 java支付流程开发_java_02

点击inspect,第一次需要代理,

5.打开科学

java 订单支付模块 java支付流程开发_微信_03

打开谷歌扩展程序,搜索SwitchyOmega 我选择的第一个 感觉随便一个都可以

(顺便下了几个视频网站免vip的插件)

java 订单支付模块 java支付流程开发_微信支付_04


之后点击inspect,出现跟手机一模一样的界面,开始调试

java 订单支付模块 java支付流程开发_微信_05