微信支付 Java 实现教程1的支付回调. 整体流程
在实现微信支付的支付回调功能之前,我们需要了解整个过程。以下是微信支付的回调流程:
在本教程中,我们将重点关注第5步和第6步,即商户服务器接收支付结果的通知和处理。
2. 实现步骤和代码2.1. 支付回调接口的配置首先,您需要在您的项目中配置一个接口,以接收微信支付服务器发送的支付结果通知。该接口的URL将作为回调通知的地址。在此接口中,您需要分析接收到的支付结果并进行相应的处理。
@RestController@RequestMapping("/payment/callback")public class PaymentCallbackController { @PostMapping public void handlePaymentCallback(HttpServletRequest request) { // 支付结果分析 // 进行相应的处理 }}
2.2. 验证支付结果在收到支付结果通知后,您需要验证该通知的合法性。微信支付服务器通过POST将一些参数(如支付结果、订单号等)发送到您的接口。您需要根据微信支付官方文件提供的验证规则进行验证。
@RestController@RequestMapping("/payment/callback")public class PaymentCallbackController { @PostMapping public void handlePaymentCallback(HttpServletRequest request) { // 支付结果分析 Map<String, String> params = new HashMap<>(); Enumeration<String> parameterNames = request.getParameterNames(); while (parameterNames.hasMoreElements()) { String paramName = parameterNames.nextElement(); String paramValue = request.getParameter(paramName); params.put(paramName, paramValue); } // 验证支付结果 boolean isValid = WXPayUtil.isSignatureValid(params, "YOUR_APP_KEY"); if (isValid) { // 进行相应的处理 } else { // 验证失败可能是非法请求 } }}
2.3. 处理付款结果在验证支付结果的合法性后,您可以根据支付结果进行相应的处理。例如,更新订单状态,记录支付日志等。
@RestController@RequestMapping("/payment/callback")public class PaymentCallbackController { @PostMapping public void handlePaymentCallback(HttpServletRequest request) { // 支付结果分析 Map<String, String> params = new HashMap<>(); Enumeration<String> parameterNames = request.getParameterNames(); while (parameterNames.hasMoreElements()) { String paramName = parameterNames.nextElement(); String paramValue = request.getParameter(paramName); params.put(paramName, paramValue); } // 验证支付结果 boolean isValid = WXPayUtil.isSignatureValid(params, "YOUR_APP_KEY"); if (isValid) { // 处理付款结果 String orderId = params.get("order_id"); String paymentStatus = params.get("payment_status"); if (paymentStatus.equals("SUCCESS")) { // 更新订单状态,已支付的订单状态 // 记录支付日志 } else { // 支付失败 // 记录支付日志 } } else { // 验证失败,可能是非法请求 // 记录支付日志 } }}
3. 关系图以下是商户服务器与微信支付服务器的关系图:
erDiagram Customer ||--o{ Order : places Order ||--o{ Payment : has Payment ||--o{ PaymentCallback : notifies
4. 饼状图以下是支付结果的统计饼状图:
pie title Payment Results "Success" : 70 "Failure" : 30
以上是微信支付的实现 Java 支付回调教程。希望对你有帮助!