Skip to content

Commit

Permalink
Quoted conversion
Browse files Browse the repository at this point in the history
  • Loading branch information
mihaimoiseanu committed Feb 22, 2024
1 parent c5a17fa commit 568deaa
Show file tree
Hide file tree
Showing 5 changed files with 103 additions and 7 deletions.
2 changes: 1 addition & 1 deletion src/main/java/com/mangopay/core/APIs/ApiBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ protected MangoPayApi getRoot() {
put("get_instant_conversion", new String[]{"/instant-conversion/%s", RequestType.GET.toString()});
put("create_conversion_quote", new String[]{"/conversions/quote", RequestType.POST.toString()});
put("get_conversion_quote", new String[]{"/conversions/quote/%s", RequestType.GET.toString()});

put("create_quoted_conversion", new String[]{"/conversions/quoted-conversion", RequestType.POST.toString()});
}};

/**
Expand Down
9 changes: 9 additions & 0 deletions src/main/java/com/mangopay/core/APIs/ConversionsApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.mangopay.entities.ConversionQuote;
import com.mangopay.entities.ConversionRate;
import com.mangopay.entities.InstantConversion;
import com.mangopay.entities.QuotedConversion;

public interface ConversionsApi {

Expand Down Expand Up @@ -45,4 +46,12 @@ public interface ConversionsApi {
* @return Quote object returned from API
*/
ConversionQuote getConversionQuote(String quoteId) throws Exception;


/**
* This call triggers a conversion, at the rate guaranteed by its quote, of the debited funds to the credited wallet.
*
* @return QuotedConversion
*/
QuotedConversion createQuotedConversion(QuotedConversion quotedConversion, String idempotencyKey) throws Exception;
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.mangopay.entities.ConversionQuote;
import com.mangopay.entities.ConversionRate;
import com.mangopay.entities.InstantConversion;
import com.mangopay.entities.QuotedConversion;

public class ConversionsApiImpl extends ApiBase implements ConversionsApi {

Expand Down Expand Up @@ -42,4 +43,9 @@ public ConversionQuote createConversionQuote(ConversionQuote conversionQuote, St
public ConversionQuote getConversionQuote(String quoteId) throws Exception {
return this.getObject(ConversionQuote.class, "get_conversion_quote", quoteId);
}

@Override
public QuotedConversion createQuotedConversion(QuotedConversion quotedConversion, String idempotencyKey) throws Exception {
return this.createObject(QuotedConversion.class, idempotencyKey, "create_quoted_conversion", quotedConversion);
}
}
53 changes: 53 additions & 0 deletions src/main/java/com/mangopay/entities/QuotedConversion.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.mangopay.entities;

import com.google.gson.annotations.SerializedName;

/**
* A conversion, at the rate guaranteed by its quote, of the debited funds to the credited wallet.
*/
public class QuotedConversion extends Transaction {

@SerializedName("QuoteId")
private String quoteId;

@SerializedName("ConversionRateResponse")
private ConversionRate conversionRateResponse;

@SerializedName("CreditedWalletId")
private String creditedWalletId;

@SerializedName("DebitedWalletId")
private String debitedWalletId;

public String getQuoteId() {
return quoteId;
}

public void setQuoteId(String quoteId) {
this.quoteId = quoteId;
}

public ConversionRate getConversionRateResponse() {
return conversionRateResponse;
}

public void setConversionRateResponse(ConversionRate conversionRateResponse) {
this.conversionRateResponse = conversionRateResponse;
}

public String getCreditedWalletId() {
return creditedWalletId;
}

public void setCreditedWalletId(String creditedWalletId) {
this.creditedWalletId = creditedWalletId;
}

public String getDebitedWalletId() {
return debitedWalletId;
}

public void setDebitedWalletId(String debitedWalletId) {
this.debitedWalletId = debitedWalletId;
}
}
40 changes: 34 additions & 6 deletions src/test/java/com/mangopay/core/ConversionsImplTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
import com.mangopay.core.enumerations.CurrencyIso;
import com.mangopay.core.enumerations.TransactionStatus;
import com.mangopay.core.enumerations.TransactionType;
import com.mangopay.entities.ConversionQuote;
import com.mangopay.entities.ConversionRate;
import com.mangopay.entities.InstantConversion;
import com.mangopay.entities.*;
import org.junit.Test;

import java.util.ArrayList;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

Expand Down Expand Up @@ -69,21 +69,49 @@ public void getConversionQuoteTest() throws Exception {
assertEquals("ACTIVE", conversionQuote.getStatus());
}

@Test
public void createQuotedConversion() throws Exception {
final UserNatural user = getJohn();

Wallet creditedWallet = new Wallet();
creditedWallet.setOwners(new ArrayList<String>());
creditedWallet.getOwners().add(user.getId());
creditedWallet.setCurrency(CurrencyIso.GBP);
creditedWallet.setDescription("WALLET IN EUR WITH MONEY");

creditedWallet = this.api.getWalletApi().create(creditedWallet);

Wallet debitedWallet = getJohnsWalletWithMoney();
ConversionQuote quote = createConversionQuote();

QuotedConversion quotedConversion = new QuotedConversion();
quotedConversion.setQuoteId(quote.getId());
quotedConversion.setAuthorId(debitedWallet.getOwners().get(0));
quotedConversion.setCreditedWalletId(creditedWallet.getId());
quotedConversion.setDebitedWalletId(debitedWallet.getId());

quotedConversion = this.api.getConversionsApi().createQuotedConversion(quotedConversion, null);

assertNotNull(quotedConversion);
}

private ConversionQuote createConversionQuote() throws Exception {
ConversionQuote conversionQuote = new ConversionQuote();

Money creditedFunds = new Money();
creditedFunds.setCurrency(CurrencyIso.USD);
creditedFunds.setCurrency(CurrencyIso.GBP);
conversionQuote.setCreditedFunds(creditedFunds);

Money debitedFunds = new Money();
debitedFunds.setCurrency(CurrencyIso.GBP);
debitedFunds.setAmount(100);
debitedFunds.setCurrency(CurrencyIso.EUR);
debitedFunds.setAmount(50);
conversionQuote.setDebitedFunds(debitedFunds);

conversionQuote.setDuration(90);
conversionQuote.setTag("Created using the Mangopay PHP SDK");

return this.api.getConversionsApi().createConversionQuote(conversionQuote, null);
}


}

0 comments on commit 568deaa

Please sign in to comment.