微信Native扫码支付

本文介绍了如何在Java项目中集成微信Native扫码支付功能,包括添加依赖、配置参数、创建支付地址以及处理支付成功回调。同时展示了前端生成二维码的代码片段。
摘要由CSDN通过智能技术生成

微信Native扫码支付


引入依赖

		<dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-pay</artifactId>
            <version>4.1.0</version>
        </dependency>

获取WxPayService

public static WxPayService getPayService() {
		WxPayService wxPayService = new WxPayServiceImpl();
		WxPayConfig payConfig = new WxPayConfig();
		payConfig.setAppId("appid");

		payConfig.setMchId("商户号");
		payConfig.setMchKey("API3密钥");
		payConfig.setKeyPath("证书秘钥文件地址");
		// 可以指定是否使用沙箱环境
		payConfig.setUseSandboxEnv(false);

		wxPayService.setConfig(payConfig);

		return wxPayService;
	}

获取支付地址code_url

public String getPayUrl (Order order) {
		WxPayService wxPayService = WxPayConfiguration.getPayService();
		WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();
		orderRequest.setOutTradeNo("订单号");
		orderRequest.setTotalFee(金额);
		orderRequest.setSpbillCreateIp("IP");
		orderRequest.setNotifyUrl("支付回调地址");
		orderRequest.setBody("说明");
		orderRequest.setAttach("附加内容");
		orderRequest.setTradeType("NATIVE");//交易类型
		orderRequest.setProductId(order.getZforderId());
		try {
			WxPayNativeOrderResult wxPayNativeOrderResult = (WxPayNativeOrderResult) wxPayService.createOrder(orderRequest);
			return wxPayNativeOrderResult.getCodeUrl();
		} catch (WxPayException e) {
			e.printStackTrace();
			return null;
		}
	}

支付成功回调

@RequestMapping(value = "/pay/notify")
	public String renotify(@RequestBody String xmlData) {
		System.err.println(xmlData);
		try {
			WxPayService wxPayService = WxPayConfiguration.getPayService();
			WxPayOrderNotifyResult notifyResult = wxPayService.parseOrderNotifyResult(xmlData);
			String orderId = notifyResult.getOutTradeNo();//拿到订单号获取订单
			Order orderInfo = orderService.getOne(new QueryWrapper<Order>().eq("zforder_id", orderId));
			if(orderInfo == null) {
				return WxPayNotifyResponse.success("处理成功!");
			}
			orderService.paySuccess(orderInfo);//处理业务逻辑
			return WxPayNotifyResponse.success("处理成功!");
		} catch (WxPayException e) {
			e.printStackTrace();
			return WxPayNotifyResponse.fail(e.getMessage());
		}
	}

前端显示支付二维码

<div class="pay-wrap">
  <canvas id="QRCode_header"></canvas>
</div>

npm install qrcode --save-dev

import QRCode from "qrcode";

  

getQRCode() {
    //生成的二维码为URL地址js
    let opts = {
      errorCorrectionLevel: "H", //容错级别
      type: "image/png", //生成的二维码类型
      quality: 0.3, //二维码质量
      margin: 0, //二维码留白边距
      width: 180, //宽
      height: 180, //高
      text: "https://www.baidu.com/", //二维码内容
      color: {
        dark: "#333333", //前景色
        light: "#fff", //背景色
      },
    };

    let msg = document.getElementById("QRCode_header");
    // 将获取到的数据(val)画到msg(canvas)上。。。this.payQrcode后台返回的支付地址
    QRCode.toCanvas(msg, this.payQrcode, opts, function (error) {
      if (error) {
        console.log("二维码加载失败", error);
        this.$message.error("二维码加载失败");
      }
    });
    console.log("画二维码")
  },
  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值