1、开通支付功能
2、引入jar包
<dependency>
<groupId>com.github.wxpay</groupId>
<artifactId>wxpay-sdk</artifactId>
<version>0.0.3</version>
</dependency>
3、获取支付链接(前端根据此链接生成二维码)
public Result unifiedOrderNATIVE(Map<String,Object> orderMap, HttpServletRequest request) {
Map<String, String> returnMap = new HashMap<>();
Map<String, String> responseMap = new HashMap<>();
Map<String, String> data = new HashMap<>();
String orderNo = null;
try {
//如果订单不为空
if (orderMap != null){
orderNo = orderMap.get("id").toString();
Double amount = Double.parseDouble(orderMap.get("sfprice").toString());
//支付参数
WXPay wxpay = new WXPay(config);
data.put("appid", config.getAppID());
data.put("body", "订单支付");
data.put("mch_id", config.getMchID());
data.put("notify_url", config.getWxPayNotifyUrl());//异步通知地址(请注意必须是外网)
data.put("out_trade_no", orderNo);
data.put("spbill_create_ip", getIpAddress(request)); //自己的服务器IP地址
data.put("total_fee", String.valueOf((int) (amount * 100)));
data.put("trade_type", "NATIVE");//交易类型JSAPI支付
String s = WXPayUtil.generateSignature(data, config.getKey()); //签名
data.put("sign", s);//签名
//使用官方API请求预付订单
Map<String, String> resultMap = wxpay.unifiedOrder(data);
//获取返回码
String returnCode = resultMap.get("return_code");
//若返回码为SUCCESS,则会返回一个result_code,再对该result_code进行判断
if ("SUCCESS".equals(returnCode)) {
String resultCode = resultMap.get("result_code");
if ("SUCCESS".equals(resultCode)) {
responseMap = resultMap;
//把链接返回前端(前端根据此链接生成二维码)
returnMap.put("code_url",responseMap.get("code_url"));
}
}
}
return ResultUtil.success(returnMap);
} catch (Exception e) {
logger.error("订单号:{},错误信息:{}", orderNo, e.getStackTrace());
return ResultUtil.error("微信支付统一下单失败");
}
}