public AjaxResult buyWxH5CoinPay(HttpServletRequest request) throws Exception {
WXPay wxpay = new WXPay(config, WXPayConstants.SignType.MD5);
// 构建支付请求参数
Map<String, String> data = new HashMap<>();
data.put("appid", config.getAppID());
data.put("mch_id", config.getMchID());
data.put("nonce_str", WXPayUtil.generateNonceStr());
data.put("body", rechargeRecordDto.getPurchaseBusiness());
data.put("out_trade_no", orderNo);
data.put("total_fee", totalFee.stripTrailingZeros().toPlainString());
data.put("spbill_create_ip", spbillCreateIp);
data.put("notify_url", notify_url);
data.put("trade_type", "MWEB");

Map<String, Object> sceneInfo = new HashMap<>();
sceneInfo.put("h5_info", new HashMap<String, String>() {{
put("type", "Wap");
}});
// 生成签名
String sign = WXPayUtil.generateSignature(data, key, WXPayConstants.SignType.MD5);
data.put("sign", sign);
// 发起统一下单请求
Map<String, String> resp = wxpay.unifiedOrder(data);
// 处理支付结果
if (resp.get("return_code").equals("SUCCESS") && resp.get("result_code").equals("SUCCESS")) {
// 获取支付跳转链接
String mwebUrl = resp.get("mweb_url");
// 返回给前端进行跳转
return AjaxResult.success(mwebUrl);
}
return AjaxResult.error("支付方式升级中,请尝试其他支付方式吧!");
}

1.如果说WXPayUtil这个方法没有,则需要导入这个jar包

<dependency>
<groupId>com.github.wxpay</groupId>
<artifactId>wxpay-sdk</artifactId>
<version>0.0.3</version>
</dependency>

2.我只是把H5微信支付的调用写出来,至于业务代码则需要根据每个人的需求来做更改

3.注意,这里的微信的请求参数尤其是appId等一些字段千万不要错,如果错了是无法成功唤醒H5的微信支付。如果请求参数没错的话  微信H5页面是会直接跳转到微信的支付页面。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐