java开发微信公众号支付全流程

后台配置

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);
    }
  });
},

本地测试

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

参考地址:https://blog.csdn.net/w263756314/article/details/110014307

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

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

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

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

真机调试(跟测试微信支付没啥关系,可不看,了解即可)

  1. 下载tbs studio工具,网址;https://x5.tencent.com/tbs/guide/debug/download.html

    (ps:我第一次下载点了好几次下载成功)

  2. 设置手机调试参数 可参考:https://blog.csdn.net/yishengyouni95/article/details/80719281

  3. 微信降级8.0.21版本,降级前需要删除新版

    微信更新8.0.22版本后原来的debugmm.qq.com/?forcex5=true打开显示不支持切换x5内核,所以需要回退微信版本 可参考:https://www.bilibili.com/read/cv16749069

    (直接点击线上安装内核就行 重启微信)

    4.按照指示点击调试

    (将要调试的公众号置于手机前端:就是打开公众号之后别动了)
    在这里插入图片描述

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

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

在这里插入图片描述

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

5.打开科学的梯子

在这里插入图片描述

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

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

在这里插入图片描述
之后点击inspect,出现跟手机一模一样的界面,开始调试

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_52016779/article/details/125957938