JavaEE 微信境外支付
JavaEE 微信境外支付概述
微信境外支付是微信支付提供的跨境电子支付服务,支持普通商户版和服务商版两种模式。境外支付允许商户在境外接入微信支付系统,实现对境外用户的收款。
API文档
普通商户版 支付方式1. 刷卡支付2. 公众号支付3. 扫码支付 流程1. 商户在微信支付平台上注册并开通境外支付功能。
2. 用户在微信公众号或扫码设备中完成支付流程。
3. 支付结果通知商户。
服务商版 支付方式1. 刷卡支付2. 公众号支付3. 扫码支付4. API接口支付 流程1. 商户在微信支付平台上注册并开通服务商版功能。
2. 用户在微信公众号或扫码设备中完成支付流程。
3. 支付结果通知商户。
API接口 支付接口* `POST /v3/pay/apply`:申请支付* `GET /v3/pay/query`:查询支付结果* `POST /v3/pay/cancel`:取消支付 回调接口* `POST /v3/pay/callback`:支付回调通知 支付方式 刷卡支付1. 用户在微信公众号或扫码设备中完成刷卡支付流程。
2. 支付结果通知商户。
公众号支付1. 用户在微信公众号中完成支付流程。
2. 支付结果通知商户。
扫码支付1. 收银员使用扫码设备读取微信用户刷卡授权码。
2.传送至商户收银台,完成支付流程。
3. 支付结果通知商户。
支付结果* `SUCCESS`:支付成功* `FAIL`:支付失败* `CANCEL`:支付取消 JavaEE 实现 普通商户版 支付接口实现```java@WebServlet(name = "PayServlet", urlPatterns = "/pay")
public class PayServlet extends HttpServlet {
@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//申请支付 String appId = request.getParameter("appId");
String mchId = request.getParameter("mchId");
String nonceStr = request.getParameter("nonceStr");
String sign = request.getParameter("sign");
PayRequest payRequest = new PayRequest(appId, mchId, nonceStr, sign);
PayResponse payResponse = payService.applyPay(payRequest);
// 支付结果通知 if (payResponse.getStatus() ==200) {
response.getWriter().write("支付成功");
} else {
response.getWriter().write("支付失败");
}
}
}
```
回调接口实现```java@WebServlet(name = "CallbackServlet", urlPatterns = "/callback")
public class CallbackServlet extends HttpServlet {
@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 支付回调通知 String appId = request.getParameter("appId");
String mchId = request.getParameter("mchId");
String nonceStr = request.getParameter("nonceStr");
String sign = request.getParameter("sign");
PayRequest payRequest = new PayRequest(appId, mchId, nonceStr, sign);
PayResponse payResponse = payService.callbackPay(payRequest);
// 支付结果通知 if (payResponse.getStatus() ==200) {
response.getWriter().write("支付成功");
} else {
response.getWriter().write("支付失败");
}
}
}
```
服务商版 支付接口实现```java@WebServlet(name = "PayServlet", urlPatterns = "/pay")
public class PayServlet extends HttpServlet {
@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//申请支付 String appId = request.getParameter("appId");
String mchId = request.getParameter("mchId");
String nonceStr = request.getParameter("nonceStr");
String sign = request.getParameter("sign");
PayRequest payRequest = new PayRequest(appId, mchId, nonceStr, sign);
PayResponse payResponse = payService.applyPay(payRequest);
// 支付结果通知 if (payResponse.getStatus() ==200) {
response.getWriter().write("支付成功");
} else {
response.getWriter().write("支付失败");
}
}
}
```
回调接口实现```java@WebServlet(name = "CallbackServlet", urlPatterns = "/callback")
public class CallbackServlet extends HttpServlet {
@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 支付回调通知 String appId = request.getParameter("appId");
String mchId = request.getParameter("mchId");
String nonceStr = request.getParameter("nonceStr");
String sign = request.getParameter("sign");
PayRequest payRequest = new PayRequest(appId, mchId, nonceStr, sign);
PayResponse payResponse = payService.callbackPay(payRequest);
// 支付结果通知 if (payResponse.getStatus() ==200) {
response.getWriter().write("支付成功");
} else {
response.getWriter().write("支付失败");
}
}
}
```
总结JavaEE 微信境外支付实现了普通商户版和服务商版两种模式。普通商户版支持刷卡支付、公众号支付和扫码支付三种支付方式,而服务商版则支持四种支付方式,包括刷卡支付、公众号支付、扫码支付和API接口支付。JavaEE 实现了支付接口和回调接口两部分,分别用于申请支付和支付回调通知。