前言
Payoneer 是一个全球支付平台,支持多种支付方式,包括信用卡、借记卡、电子钱包等。在本文中,我们将介绍如何在 Spring Boot 应用程序中集成 Payoneer 支付,并实现常用的支付操作。
环境准备
- 注册 Payoneer 账号并获取 API 密钥。
- 在 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.properties 或 application.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 功能,如订阅管理、优惠券应用等。