小程序接入微信V3支付-统一下单

使用IJPay接入微信支付:IJPay
1、maven依赖:
官网有一次性导入全部依赖;但这里只接入微信支付;所以只导入微信支付的依赖
在这里插入图片描述

        <!-- IJPay 微信支付-->
        <dependency>
            <groupId>com.github.javen205</groupId>
            <artifactId>IJPay-WxPay</artifactId>
            <version>2.7.6</version>
        </dependency>

官方有demo示例可自行查找查看
微信支付官方文档:统一下单
2、统一下单:
工具方法:

    /**
     * 获取证书序列号
     *
     * @return
     */
    private String getSerialNumber() {
        if (StrUtil.isEmpty(serialNo)) {
            // 获取证书序列号 
            X509Certificate certificate = PayKit.getCertificate(FileUtil.getInputStream(wxPayParameterConfig.getPrivateCertPath()));
            serialNo = certificate.getSerialNumber().toString(16).toUpperCase();
        }
        return serialNo;
    }
                UnifiedOrderModel unifiedOrderModel = new UnifiedOrderModel()
                        .setAppid(weChatAppletsConfig.getAppId())//小程序appid
                        .setMchid(wxPayParameterConfig.getMchId())//直连商户的商户号
                        .setDescription("客户备注:" + description)//商品描述
                        .setOut_trade_no(orderNo)//内部订单号(自己生成的string[6,32])
                        .setNotify_url(wxPayParameterConfig.getNotifyUrl())// 支付完成通知地址
                        .setAmount(new Amount().setTotal(totalFee))//	订单总金额,单位为分
                        .setPayer(new Payer().setOpenid(min.getOpenidmin()));//用户openid
                       
                        log.info("统一下单参数 {}", JSONUtil.toJsonStr(unifiedOrderModel));
				//请求下单
				IJPayHttpResponse response = WxPayApi.v3(
                        RequestMethod.POST,
                        WxDomain.CHINA.toString(),
                        WxApiType.JS_API_PAY.toString(),
                        wxPayParameterConfig.getMchId(),// 商户号
                        getSerialNumber(),// 获取证书序列号
                        null,
                        wxPayParameterConfig.getPrivateKeyPath(),// 私钥
                        JSONUtil.toJsonStr(unifiedOrderModel)// 请求参数
                );
                	log.info("统一下单响应 {}", response);
                   if (response.getStatus() == 200) {
                    // 根据证书序列号查询对应的证书来验证签名结果
                    boolean verifySignature = WxPayKit.verifySignature(response, wxPayParameterConfig.getCertPath());//平台证书
                    log.info("verifySignature: {}", verifySignature);
                      if (verifySignature) {
                        String body = response.getBody();
                        
                        cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(body);
                        
                        String prepayId = jsonObject.getStr("prepay_id");
                       
                        Map<String, String> map = WxPayKit.jsApiCreateSign(weChatAppletsConfig.getAppId(), prepayId, wxPayParameterConfig.getPrivateKeyPath());// 私钥
                        log.info("唤起支付参数:{}", map);
                        // 将参数返回给前端
                        return AjaxResult.success(map);
                      }
                   }

小程序根据返回的参数就能唤起小程序支付
微信官方文档:小程序调起支付API

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值