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);