Chuyển tới nội dung chính

Java SDK

Tài liệu đầy đủ​

Để biết thêm chi tiết về các phương thức, tham số và tính năng nâng cao (pagination, custom HttpClient, error handling, v.v.), vui lòng xem GitHub Repository.

Cài đặt​

Thêm dependency vào file pom.xml:

<dependency>
<groupId>vn.payos</groupId>
<artifactId>payos-java</artifactId>
<version>2.0.1</version>
</dependency>

Khởi tạo​

Khởi tạo đối tượng PayOS từ biến môi trường hoặc truyền trực tiếp các thông số:

import vn.payos.PayOS;

// Khởi tạo từ biến môi trường
PayOS payOS = PayOS.fromEnv();

// Hoặc khởi tạo trực tiếp
PayOS payOS = new PayOS(
System.getenv("PAYOS_CLIENT_ID"),
System.getenv("PAYOS_API_KEY"),
System.getenv("PAYOS_CHECKSUM_KEY")
);

Sử dụng phương thức paymentRequests().create() để tạo link thanh toán:

import vn.payos.model.v2.paymentRequests.CreatePaymentLinkRequest;

CreatePaymentLinkRequest paymentRequest = CreatePaymentLinkRequest.builder()
.orderCode(System.currentTimeMillis() / 1000)
.amount(2000L)
.description("Thanh toán đơn hàng")
.cancelUrl("https://your-domain.com/cancel")
.returnUrl("https://your-domain.com/success")
.build();

var paymentLink = payOS.paymentRequests().create(paymentRequest);
System.out.println(paymentLink.getCheckoutUrl());

Xác minh webhook​

Sử dụng phương thức webhooks().verify() để xác thực dữ liệu webhook:

import vn.payos.type.Webhook;

@PostMapping("/webhook")
public ResponseEntity<String> handleWebhook(@RequestBody Webhook webhook) {
try {
var data = payOS.webhooks().verify(webhook);
System.out.println("Thanh toán thành công: " + data.getOrderCode());
return ResponseEntity.ok("OK");
} catch (Exception e) {
System.err.println("Webhook không hợp lệ: " + e.getMessage());
return ResponseEntity.badRequest().body("Invalid webhook");
}
}

Tạo payout​

Sử dụng phương thức payouts().batch().create() để tạo payout theo lô:

import vn.payos.model.v1.payouts.batch.PayoutBatchRequest;
import vn.payos.model.v1.payouts.batch.PayoutBatchItem;
import java.util.Arrays;

String referenceId = "payout_" + System.currentTimeMillis();
PayoutBatchRequest payoutRequest = PayoutBatchRequest.builder()
.referenceId(referenceId)
.validateDestination(false)
.category(Arrays.asList("salary"))
.payout(PayoutBatchItem.builder()
.referenceId(referenceId + "_1")
.amount(10000L)
.description("Thanh toán lương")
.toBin("970422")
.toAccountNumber("0123456789")
.build())
.payout(PayoutBatchItem.builder()
.referenceId(referenceId + "_2")
.amount(50000L)
.description("Thanh toán thưởng")
.toBin("970418")
.toAccountNumber("0987654321")
.build())
.build();

var payout = payOS.payouts().batch().create(payoutRequest);
System.out.println("Payout ID: " + payout.getReferenceId());