diff --git a/adapter/model.go b/adapter/model.go index d9e0c83..816f8f2 100644 --- a/adapter/model.go +++ b/adapter/model.go @@ -923,6 +923,11 @@ type RetrieveProviderCardRequest struct { CardProvider string `json:"cardProvider,omitempty"` } +type RetrieveCardFromIvrRequest struct { + CardUserKey string `json:"cardUserKey,omitempty"` + CallToken string `json:"callToken,omitempty"` +} + type MasterpassRetrieveLoyaltiesRequest struct { Msisdn string `json:"msisdn,omitempty"` BinNumber string `json:"binNumber,omitempty"` @@ -1534,6 +1539,14 @@ type StoredCardResponse struct { CreatedAt *TimeResponse `json:"createdAt"` } +type IVRCardTokenizationResponse struct { + BinNumber *string `json:"binNumber"` + LastFourDigits *string `json:"lastFourDigits"` + CardUserKey *string `json:"cardUserKey"` + CardToken *string `json:"cardToken"` + SecureFieldsToken *string `json:"secureFieldsToken"` +} + type PaymentTransactionsApprovalResponse struct { PaymentTransactionId *int64 `json:"paymentTransactionId"` ApprovalStatus *ApprovalStatus `json:"approvalStatus"` diff --git a/adapter/payment.go b/adapter/payment.go index 6c4d5ab..37dd585 100644 --- a/adapter/payment.go +++ b/adapter/payment.go @@ -762,6 +762,20 @@ func (api *Payment) RetrieveProviderCards(ctx context.Context, request RetrieveP return response.Data, nil } +func (api *Payment) RetrieveCardFromIvr(ctx context.Context, request RetrieveCardFromIvrRequest) (*IVRCardTokenizationResponse, error) { + newRequest, err := api.Client.NewRequest(ctx, http.MethodGet, "/payment/v1/ivr-cards", request) + if err != nil { + return nil, err + } + response := &Response[IVRCardTokenizationResponse]{} + respErr := api.Client.Do(ctx, newRequest, response) + if err != nil { + return nil, respErr + } + + return response.Data, nil +} + func (c *Payment) Is3DSecureCallbackVerified(threeDSecureCallbackKey string, params map[string]string) bool { hash := params["hash"] hashString := strings.Join([]string{threeDSecureCallbackKey, diff --git a/tests/payment_test.go b/tests/payment_test.go index 17d902f..5a71f63 100644 --- a/tests/payment_test.go +++ b/tests/payment_test.go @@ -1428,3 +1428,16 @@ func Test_RetrieveProviderCards(t *testing.T) { t.Errorf("Error %s", err) } } + +func Test_RetrieveCardFromIvr(t *testing.T) { + request := adapter.RetrieveCardFromIvrRequest{ + CallToken: "45f12c74-3000-465c-96dc-876850e7dd7a", + CardUserKey: "0309ac2d-c5a5-4b4f-a91f-5c444ba07b24", + } + res, err := paymentClient.Payment.RetrieveCardFromIvr(context.Background(), request) + _, _ = spew.Printf("%#v\n", res) + + if err != nil { + t.Errorf("Error %s", err) + } +}