Spring Boot 接入 Payoneer 支付

645 阅读2分钟

前言

Payoneer 是一个全球支付平台,支持多种支付方式,包括信用卡、借记卡、电子钱包等。在本文中,我们将介绍如何在 Spring Boot 应用程序中集成 Payoneer 支付,并实现常用的支付操作。

环境准备

  1. 注册 Payoneer 账号并获取 API 密钥。
  2. 在 Payoneer Dashboard 中配置 Webhook 以接收支付事件通知。

集成步骤

1. 添加 Payoneer 依赖

在 Spring Boot 项目的 pom.xml 文件中添加 Payoneer 的 Java 库依赖:

<dependency>
    <groupId>com.payoneer</groupId>
    <artifactId>payoneer-java-sdk</artifactId>
    <version>1.0.0</version> <!-- 请使用最新版本 -->
</dependency>

2. 配置 Payoneer API 密钥

application.propertiesapplication.yml 中配置 Payoneer 的 API 密钥:

payoneer.api.key=你的密钥

3. 创建 Payoneer 服务

创建一个服务类,用于封装 Payoneer API 的调用:

@Service
public class PayoneerService {
    private final String apiKey;

    @Autowired
    public PayoneerService(@Value("${payoneer.api.key}") String apiKey) {
        this.apiKey = apiKey;
    }

    public PaymentSession createPaymentSession(Map<String, Object> params) throws Exception {
        PayoneerClient client = new PayoneerClient(apiKey);
        return client.createPaymentSession(params);
    }

    public Refund createRefund(Map<String, Object> params) throws Exception {
        PayoneerClient client = new PayoneerClient(apiKey);
        return client.createRefund(params);
    }

    // 其他支付 API 的实现...
}

4. 创建控制器

创建一个控制器,用于处理支付请求:

@RestController
@RequestMapping("/api/payments")
public class PaymentController {
    private final PayoneerService payoneerService;

    @Autowired
    public PaymentController(PayoneerService payoneerService) {
        this.payoneerService = payoneerService;
    }

    @PostMapping("/create-payment-session")
    public ResponseEntity<?> createPaymentSession(@RequestBody Map<String, Object> payload) {
        try {
            PaymentSession session = payoneerService.createPaymentSession(payload);
            return ResponseEntity.ok(session);
        } catch (Exception e) {
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
        }
    }

    @PostMapping("/create-refund")
    public ResponseEntity<?> createRefund(@RequestBody Map<String, Object> payload) {
        try {
            Refund refund = payoneerService.createRefund(payload);
            return ResponseEntity.ok(refund);
        } catch (Exception e) {
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
        }
    }

    // 其他支付 API 的端点...
}

5. 处理回调

Payoneer 通过 Webhook 发送支付事件通知。你需要创建一个端点来接收这些事件:

@RestController
public class WebhookController {
    private final PayoneerService payoneerService;

    @Autowired
    public WebhookController(PayoneerService payoneerService) {
        this.payoneerService = payoneerService;
    }

    @PostMapping("/webhook")
    public ResponseEntity<String> handleWebhook(@RequestBody String payload, @RequestParam String signature) {
        try {
            boolean valid = payoneerService.verifyWebhookSignature(payload, signature);
            if (valid) {
                // 处理事件
                Event event = payoneerService.parseWebhookEvent(payload);
                payoneerService.handleEvent(event);
                return ResponseEntity.ok("Event processed successfully");
            } else {
                return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Invalid signature");
            }
        } catch (Exception e) {
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
        }
    }
}

总结

以上步骤提供了一个基本的 Spring Boot 应用接入 Payoneer 支付的框架。你可以根据具体需求,添加更多的 Payoneer API 功能,如订阅管理、优惠券应用等。