From 9ce0dd0de98a9c9efc44eb10275a6e661207fa8a Mon Sep 17 00:00:00 2001 From: Avni BALIKCI <108258717+abalikci@users.noreply.github.com> Date: Thu, 28 Mar 2024 22:14:30 +0300 Subject: [PATCH] Add card clone adapter (#80) --- adapter/model.go | 7 +++++++ adapter/payment.go | 16 ++++++++++++++++ tests/payment_test.go | 14 ++++++++++++++ 3 files changed, 37 insertions(+) diff --git a/adapter/model.go b/adapter/model.go index dc18ccc..919a608 100644 --- a/adapter/model.go +++ b/adapter/model.go @@ -791,6 +791,13 @@ type UpdateStoredCardRequest struct { ExpireMonth string `json:"expireMonth,omitempty"` } +type CloneStoredCardRequest struct { + SourceCardUserKey string `json:"sourceCardUserKey"` + SourceCardToken string `json:"sourceCardToken"` + TargetCardUserKey string `json:"targetCardUserKey,omitempty"` + TargetMerchantId int64 `json:"targetMerchantId"` +} + type DeleteStoredCardRequest struct { CardUserKey string `json:"cardUserKey,omitempty"` CardToken string `json:"cardToken,omitempty"` diff --git a/adapter/payment.go b/adapter/payment.go index 8040c97..e97eadd 100644 --- a/adapter/payment.go +++ b/adapter/payment.go @@ -433,6 +433,22 @@ func (api *Payment) UpdateStoredCard(ctx context.Context, request UpdateStoredCa return response.Data, nil } +func (api *Payment) CloneStoredCard(ctx context.Context, request CloneStoredCardRequest) (*StoredCardResponse, error) { + newRequest, err := api.Client.NewRequest(ctx, http.MethodPost, "/payment/v1/cards/clone", request) + + if err != nil { + return nil, err + } + + response := &Response[StoredCardResponse]{} + err = api.Client.Do(ctx, newRequest, response) + if err != nil { + return nil, err + } + + return response.Data, nil +} + func (api *Payment) DeleteStoredCard(ctx context.Context, request DeleteStoredCardRequest) error { newRequest, err := api.Client.NewRequest(ctx, http.MethodPost, "/payment/v1/cards/delete", request) if err != nil { diff --git a/tests/payment_test.go b/tests/payment_test.go index bbbeab2..f9a2349 100644 --- a/tests/payment_test.go +++ b/tests/payment_test.go @@ -704,6 +704,20 @@ func TestPayment_UpdateStoredCard(t *testing.T) { } } +func TestPayment_CloneStoredCard(t *testing.T) { + request := adapter.CloneStoredCardRequest{ + SourceCardUserKey: "6bcbac4b-6460-418d-b060-2d9896c08156", + SourceCardToken: "aa57f470-7423-449e-87b7-afb1fba151fb", + TargetMerchantId: 1, + } + res, err := paymentClient.Payment.CloneStoredCard(context.Background(), request) + _, _ = spew.Printf("%#v\n", res) + + if err != nil { + t.Errorf("Error %s", err) + } +} + func TestPayment_DeleteStoredCard(t *testing.T) { request := adapter.DeleteStoredCardRequest{ CardUserKey: "d94018bb-baa9-4418-84f8-760942f669af",