
one.credify.sdk.impl.BnplServiceImpl Maven / Gradle / Ivy
package one.credify.sdk.impl;
import one.credify.sdk.exception.BnplOrderAlreadyCanceledException;
import one.credify.sdk.exception.CredifyException;
import one.credify.sdk.BnplService;
import one.credify.sdk.dto.*;
import one.credify.sdk.restapi.CredifyRestV1;
import one.credify.sdk.utils.ErrorUtils;
import retrofit2.Response;
import java.io.IOException;
import java.util.List;
public class BnplServiceImpl implements BnplService {
private static final String BnplOrderAlreadyCanceledError = "BnplOrderAlreadyCanceledError";
private final CredifyRestV1 credifyClient;
public BnplServiceImpl(CredifyRestV1 credifyClient) {
this.credifyClient = credifyClient;
}
@Override
public OrderInfo createOrder(String referenceId, FiatCurrency totalAmount, List orderLines, PaymentRecipient paymentRecipient) throws IOException {
CreateOrderRequest req = new CreateOrderRequest(
referenceId, totalAmount, orderLines, paymentRecipient
);
CredifyApiResponse response = this.credifyClient.createOrder(req).execute().body();
if (response == null) {
return null;
}
return response.getData();
}
@Override
public OrderInfo getOrder(String orderId) throws IOException {
CredifyApiResponse response = this.credifyClient.getOrder(orderId).execute().body();
if (response == null) {
return null;
}
return response.getData();
}
@Override
public void completeOrder(String orderId, String language, CompleteOrderRequest req) throws CredifyException, IOException {
Response> response = this.credifyClient.completeOrder(orderId, language, req).execute();
validateUpdateBnplResponse(response, "Complete");
}
@Override
public void approveOrder(String orderId, String language, ApproveOrderRequest req) throws CredifyException, IOException {
Response> response = this.credifyClient.approveOrder(orderId, req).execute();
validateUpdateBnplResponse(response, "Approve");
}
@Override
public void acknowledgeOrder(String orderId, String language, AcknowledgeOrderRequest req) throws Exception {
Response> response = this.credifyClient.acknowledgeOrder(orderId, language, req).execute();
validateUpdateBnplResponse(response, "Acknowledge");
}
@Override
public void acceptOrder(String orderId, String language, AcceptOrderRequest req) throws Exception {
Response> response = this.credifyClient.acceptOrder(orderId, language, req).execute();
validateUpdateBnplResponse(response, "Accept");
}
@Override
public void cancelOrder(String orderId, String language, CancelOrderRequest req) throws Exception {
Response> response = this.credifyClient.cancelOrder(orderId, language, req).execute();
validateUpdateBnplResponse(response, "Cancel");
}
@Override
public GetOrderDocumentsResponse getOrderDocuments(String orderId) throws IOException {
CredifyApiResponse response = this.credifyClient.getOrderDocuments(orderId).execute().body();
if (response == null || !response.isSuccess()) {
throw new CredifyException("get order documents failed");
}
return response.getData();
}
private void validateUpdateBnplResponse(Response> response, String action) throws IOException {
if (response.isSuccessful()) {
return;
}
CredifyApiErrorResponseV1 errorResponse = ErrorUtils.parseErrorV1(response.errorBody());
if (response.code() == 409 && errorResponse != null && errorResponse.containsErrorCode(BnplOrderAlreadyCanceledError)) {
throw new BnplOrderAlreadyCanceledException(action + " order failed");
}
throw new CredifyException(action + " order failed");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy