Java SDK
The official NahuPay Java library requires Java 11+ and is published to Maven Central.
Installation
Maven
<dependency>
<groupId>com.nahupay</groupId>
<artifactId>nahupay-java</artifactId>
<version>1.0.0</version>
</dependency>Gradle
implementation 'com.nahupay:nahupay-java:1.0.0'Initialisation
import com.nahupay.NahuPay;
NahuPay client = NahuPay.builder()
.apiKey(System.getenv("NAHUPAY_SECRET_KEY"))
.build();Payments
Create
import com.nahupay.model.Payment;
import com.nahupay.param.PaymentCreateParams;
PaymentCreateParams params = PaymentCreateParams.builder()
.setAmount(50000L)
.setCurrency("ETB")
.addMethod("telebirr")
.addMethod("bank_transfer")
.setSuccessUrl("https://myshop.com/success")
.setCancelUrl("https://myshop.com/cart")
.putMetadata("order_id", "ORD-1234")
.build();
Payment payment = client.payments().create(params);
System.out.println(payment.getCheckoutUrl());Retrieve
Payment payment = client.payments().retrieve("pay_01hx9m2k");
System.out.println(payment.getStatus()); // "completed"Webhooks
import com.nahupay.model.Event;
import com.nahupay.exception.SignatureVerificationException;
// In your servlet or Spring controller:
String payload = request.getReader().lines()
.collect(Collectors.joining());
String signature = request.getHeader("NahuPay-Signature");
Event event;
try {
event = client.webhooks().constructEvent(
payload, signature,
System.getenv("NAHUPAY_WEBHOOK_SECRET"));
} catch (SignatureVerificationException e) {
response.setStatus(400);
return;
}
if ("payment.completed".equals(event.getType())) {
Payment p = (Payment) event.getData().getObject();
fulfillOrder(p.getMetadata().get("order_id"));
}
response.setStatus(200);