Skip to content

Commit 4a06300

Browse files
Enhance transfer functionality by adding idempotency key validation and currency support (#473)
1 parent d53b1ef commit 4a06300

File tree

4 files changed

+13
-6
lines changed

4 files changed

+13
-6
lines changed
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1-
namespace Checkout.Transfers
1+
using Checkout.Common;
2+
3+
namespace Checkout.Transfers
24
{
35
public class TransferSourceRequest
46
{
57
public string Id { get; set; }
68

79
public long? Amount { get; set; }
10+
11+
public Currency? Currency { get; set; }
812
}
913
}

src/CheckoutSdk/Transfers/TransfersClient.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ public TransfersClient(IApiClient apiClient,
1414
}
1515

1616
public async Task<CreateTransferResponse> InitiateTransferOfFunds(CreateTransferRequest createTransferRequest,
17-
string idempotencyKey = null,
17+
string idempotencyKey,
1818
CancellationToken cancellationToken = default)
1919
{
20-
CheckoutUtils.ValidateParams("createTransferRequest", createTransferRequest);
20+
CheckoutUtils.ValidateParams("createTransferRequest", createTransferRequest, "idempotencyKey", idempotencyKey);
2121
return await ApiClient.Post<CreateTransferResponse>(TransfersPath,
2222
SdkAuthorization(),
2323
createTransferRequest,

test/CheckoutSdkTest/Transfers/TransfersClientTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public async Task ShouldInitiateTransferOfFunds()
3535
createTransferRequest, It.IsAny<CancellationToken>(), It.IsAny<string>()))
3636
.ReturnsAsync(createTransferResponse);
3737

38-
var response = await _transfersClient.InitiateTransferOfFunds(createTransferRequest);
38+
var response = await _transfersClient.InitiateTransferOfFunds(createTransferRequest, "idempotency-key");
3939

4040
response.ShouldNotBeNull();
4141
response.ShouldBe(createTransferResponse);

test/CheckoutSdkTest/Transfers/TransfersIntegrationTest.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using Checkout.Common;
12
using Shouldly;
23
using System;
34
using System.Threading.Tasks;
@@ -19,7 +20,7 @@ private async Task ShouldInitiateAndRetrieveTransferOfFunds()
1920
var createTransferRequest =
2021
new CreateTransferRequest
2122
{
22-
Source = new TransferSourceRequest {Amount = 200, Id = "ent_kidtcgc3ge5unf4a5i6enhnr5m"},
23+
Source = new TransferSourceRequest {Amount = 200, Id = "ent_kidtcgc3ge5unf4a5i6enhnr5m", Currency = Currency.GBP},
2324
Destination = new TransferDestinationRequest {Id = "ent_w4jelhppmfiufdnatam37wrfc4"},
2425
TransferType = TransferType.Commission
2526
};
@@ -40,6 +41,8 @@ private async Task ShouldInitiateAndRetrieveTransferOfFunds()
4041
transferDetailsResponse.RequestedOn.ShouldNotBeNull();
4142
transferDetailsResponse.Source.ShouldNotBeNull();
4243
transferDetailsResponse.Source.EntityId.ShouldNotBeNull();
44+
transferDetailsResponse.Source.Amount.ShouldBe(200);
45+
transferDetailsResponse.Source.Currency.ShouldBe(Currency.GBP);
4346
transferDetailsResponse.Destination.ShouldNotBeNull();
4447
transferDetailsResponse.Destination.EntityId.ShouldNotBeNull();
4548
}
@@ -50,7 +53,7 @@ private async Task ShouldInitiateTransferOfFundsIdempotently()
5053
var createTransferRequest =
5154
new CreateTransferRequest
5255
{
53-
Source = new TransferSourceRequest {Amount = 100, Id = "ent_kidtcgc3ge5unf4a5i6enhnr5m"},
56+
Source = new TransferSourceRequest {Amount = 100, Id = "ent_kidtcgc3ge5unf4a5i6enhnr5m", Currency = Currency.GBP},
5457
Destination = new TransferDestinationRequest {Id = "ent_w4jelhppmfiufdnatam37wrfc4"},
5558
TransferType = TransferType.Commission
5659
};

0 commit comments

Comments
 (0)