首先,参考文档:
【微信支付】H5支付开发文档
Java 后端微信支付demo
- 引入jar包
<dependency>
<groupId>com.github.wxpay</groupId>
<artifactId>wxpay-sdk</artifactId>
<version>0.0.3</version>
</dependency>
- 配置申请好的AppId,MchId, Key
这里只需要统一下单、支付回调以及查询订单,所以不需要加载证书
import com.github.wxpay.sdk.WXPayConfig;
import java.io.InputStream;
/** 配置我们自己的信息 */
public class WxPayConfig implements WXPayConfig {
// /** 加载证书 这里证书需要到微信商户平台进行下载*/
// private byte [] certData;
//
// public WxPayConfig() throws Exception{
// InputStream certStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("../cert/pay/apiclient_cert.p12");
// this.certData = IOUtils.toByteArray(certStream);
// certStream.close();
// }
/** 设置我们自己的appid
* 商户号
* 秘钥
* */
@Override
public String getAppID() {
return "###AppId";
}
@Override
public String getMchID() {
return "###MchId";
}
@Override
public String getKey() {
return "###Key";
}
@Override
public InputStream getCertStream() {
return null;
}
@Override
public int getHttpConnectTimeoutMs() {
return 0;
}
@Override
public int getHttpReadTimeoutMs() {
return 0;
}
}
- 统一下单接口示例:
// 微信支付下单
@PreAuthorize("@el.check('anonymous')") // 匿名访问
@PostMapping("/prePay")
public ResponseEntity placeOrder(HttpServletRequest request, @RequestBody Map params) throws Exception {
// 保存订单并返回订单号 shopOrderDTO.getId()
// 处理请求参数
WxPayConfig wxPayConfig = new WxPayConfig();
WXPay wxPay = new WXPay(wxPayConfig);
String url = "###公网地址";
String notifyUrl = url + "/payReturn"; // 微信支付回调地址,详情参考微信官方文档要求
Map<String,String> data = new HashMap<>();
data.put("out_trade_no"