From cf1f940fba9d922214bd91116f8cfe7bfafed61f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Derya=20=C3=87akmak?= <36774966+deryacakmak@users.noreply.github.com> Date: Tue, 19 Mar 2024 17:37:24 +0300 Subject: [PATCH 1/5] Garanti Bank account tracking (#70) * Garanti Bank account tracking * fix test --------- Co-authored-by: Lemi Orhan Ergin --- adapter/model.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/adapter/model.go b/adapter/model.go index 1ee758f..24decf2 100644 --- a/adapter/model.go +++ b/adapter/model.go @@ -522,7 +522,8 @@ const ( // BankAccountTrackingSource declaration const ( - BankAccountTrackingSource_YKB BankAccountTrackingSource = "YKB" + BankAccountTrackingSource_YKB BankAccountTrackingSource = "YKB" + BankAccountTrackingSource_GARANTI BankAccountTrackingSource = "GARANTI" ) const ( From bfd8397c32b9418be3ec7408abd39775d66a71e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alican=20Akku=C5=9F?= Date: Wed, 20 Mar 2024 11:20:11 +0300 Subject: [PATCH 2/5] Add loyalty exists while searching installment (#77) --- adapter/model.go | 1 + 1 file changed, 1 insertion(+) diff --git a/adapter/model.go b/adapter/model.go index 24decf2..e902c03 100644 --- a/adapter/model.go +++ b/adapter/model.go @@ -1298,6 +1298,7 @@ type SearchInstallmentsRequest struct { Price float64 `schema:"price"` Currency Currency `schema:"currency"` DistinctCardBrandsWithLowestCommissions bool `schema:"distinctCardBrandsWithLowestCommissions"` + LoyaltyExists bool `schema:"loyaltyExists"` } type InstallmentListResponse struct { From 7a45097a4ae98c6b642991143f0c591bed0cbd80 Mon Sep 17 00:00:00 2001 From: Beran Santur Date: Wed, 20 Mar 2024 13:44:01 +0300 Subject: [PATCH 3/5] Add version of search payout completed tx with pagination (#76) * Add version of search payout completed tx with pagination * Add version of search payout completed tx with pagination * Add version of search payout completed tx with pagination --- adapter/model.go | 2 ++ adapter/settlement_reporting.go | 2 +- tests/settlement_reporting_test.go | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/adapter/model.go b/adapter/model.go index e902c03..d16fad7 100644 --- a/adapter/model.go +++ b/adapter/model.go @@ -1680,6 +1680,8 @@ type SearchPayoutCompletedTransactionsRequest struct { SettlementType SettlementType `schema:"settlementType,omitempty"` StartDate time.Time `schema:"startDate,omitempty"` EndDate time.Time `schema:"endDate,omitempty"` + Page int `schema:"page"` + Size int `schema:"size"` } type SearchPayoutBouncedTransactionsRequest struct { diff --git a/adapter/settlement_reporting.go b/adapter/settlement_reporting.go index 14b270c..5218f29 100644 --- a/adapter/settlement_reporting.go +++ b/adapter/settlement_reporting.go @@ -11,7 +11,7 @@ type SettlementReporting struct { } func (api *SettlementReporting) SearchPayoutCompletedTransactions(ctx context.Context, request SearchPayoutCompletedTransactionsRequest) (*DataResponse[SearchPayoutCompletedTransactionsResponse], error) { - newRequest, err := api.Client.NewRequest(ctx, http.MethodGet, "/settlement-reporting/v1/settlement-file/payout-completed-transactions", request) + newRequest, err := api.Client.NewRequest(ctx, http.MethodGet, "/settlement-reporting/v2/settlement-file/payout-completed-transactions", request) if err != nil { return nil, err } diff --git a/tests/settlement_reporting_test.go b/tests/settlement_reporting_test.go index d477e32..ef651fd 100644 --- a/tests/settlement_reporting_test.go +++ b/tests/settlement_reporting_test.go @@ -15,6 +15,8 @@ func TestSettlementReporting_SearchPayoutCompletedTransactions(t *testing.T) { request := adapter.SearchPayoutCompletedTransactionsRequest{ StartDate: time.Now().AddDate(0, 0, -180), EndDate: time.Now(), + Page: 0, + Size: 10, } res, err := settlementReportingClient.SettlementReporting.SearchPayoutCompletedTransactions(context.Background(), request) From ea59525c9c4265567e827cfd211939e37bf4e095 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alican=20Akku=C5=9F?= Date: Wed, 20 Mar 2024 14:50:45 +0300 Subject: [PATCH 4/5] adds paycell as a new apm and provider type (#59) --- adapter/model.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/adapter/model.go b/adapter/model.go index d16fad7..9a2966f 100644 --- a/adapter/model.go +++ b/adapter/model.go @@ -88,6 +88,7 @@ const ( ApmType_ALFABANK ApmType = "ALFABANK" ApmType_TOM_FINANCE ApmType = "TOM_FINANCE" ApmType_STRIPE ApmType = "STRIPE" + ApmType_PAYCELL ApmType = "PAYCELL" ApmType_HASO ApmType = "HASO" ApmType_FUND_TRANSFER ApmType = "FUND_TRANSFER" ApmType_CASH_ON_DELIVERY ApmType = "CASH_ON_DELIVERY" @@ -108,12 +109,16 @@ const ( PaymentProvider_PAYPAL PaymentProvider = "PAYPAL" PaymentProvider_KLARNA PaymentProvider = "KLARNA" PaymentProvider_AFTERPAY PaymentProvider = "AFTERPAY" - PaymentProvider_KASPI PaymentProvider = "KASPI" - PaymentProvider_TOMPAY PaymentProvider = "TOMPAY" PaymentProvider_APPLEPAY PaymentProvider = "APPLEPAY" PaymentProvider_GOOGLEPAY PaymentProvider = "GOOGLEPAY" PaymentProvider_HEPSIPAY PaymentProvider = "HEPSIPAY" PaymentProvider_STRIPE PaymentProvider = "STRIPE" + PaymentProvider_KASPI PaymentProvider = "KASPI" + PaymentProvider_MASLAK PaymentProvider = "MASLAK" + PaymentProvider_TOMPAY PaymentProvider = "TOMPAY" + PaymentProvider_TOM_FINANCE PaymentProvider = "TOM_FINANCE" + PaymentProvider_ALFABANK PaymentProvider = "ALFABANK" + PaymentProvider_PAYCELL PaymentProvider = "PAYCELL" PaymentProvider_HASO PaymentProvider = "HASO" PaymentProvider_OFFLINE PaymentProvider = "OFFLINE" ) From 5226ed333413e8680ebee5a3f94a3432f53b7309 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Semih=20=C5=9Eahan?= Date: Thu, 21 Mar 2024 16:11:29 +0300 Subject: [PATCH 5/5] Adds instant transfer with Compay integration as apm (#78) * Adds instant transfer with Compay integration as apm * Update * Update * Update --- adapter/model.go | 97 +++++++++++++++----------- adapter/payment.go | 14 ++++ tests/instant_transfer_payment_test.go | 53 ++++++++++++++ 3 files changed, 123 insertions(+), 41 deletions(-) create mode 100644 tests/instant_transfer_payment_test.go diff --git a/adapter/model.go b/adapter/model.go index 9a2966f..e010520 100644 --- a/adapter/model.go +++ b/adapter/model.go @@ -83,6 +83,7 @@ const ( ApmType_KLARNA ApmType = "KLARNA" ApmType_AFTERPAY ApmType = "AFTERPAY" ApmType_KASPI ApmType = "KASPI" + ApmType_INSTANT_TRANSFER ApmType = "INSTANT_TRANSFER" ApmType_TOMPAY ApmType = "TOMPAY" ApmType_MASLAK ApmType = "MASLAK" ApmType_ALFABANK ApmType = "ALFABANK" @@ -96,31 +97,32 @@ const ( // payment provider declaration const ( - PaymentProvider_BANK PaymentProvider = "BANK" - PaymentProvider_CG_WALLET PaymentProvider = "CG_WALLET" - PaymentProvider_MASTERPASS PaymentProvider = "MASTERPASS" - PaymentProvider_GARANTI_PAY PaymentProvider = "GARANTI_PAY" - PaymentProvider_YKB_WORLD_PAY PaymentProvider = "YKB_WORLD_PAY" - PaymentProvider_PAPARA PaymentProvider = "PAPARA" - PaymentProvider_PAYONEER PaymentProvider = "PAYONEER" - PaymentProvider_SODEXO PaymentProvider = "SODEXO" - PaymentProvider_EDENRED PaymentProvider = "EDENRED" - PaymentProvider_ALIPAY PaymentProvider = "ALIPAY" - PaymentProvider_PAYPAL PaymentProvider = "PAYPAL" - PaymentProvider_KLARNA PaymentProvider = "KLARNA" - PaymentProvider_AFTERPAY PaymentProvider = "AFTERPAY" - PaymentProvider_APPLEPAY PaymentProvider = "APPLEPAY" - PaymentProvider_GOOGLEPAY PaymentProvider = "GOOGLEPAY" - PaymentProvider_HEPSIPAY PaymentProvider = "HEPSIPAY" - PaymentProvider_STRIPE PaymentProvider = "STRIPE" - PaymentProvider_KASPI PaymentProvider = "KASPI" - PaymentProvider_MASLAK PaymentProvider = "MASLAK" - PaymentProvider_TOMPAY PaymentProvider = "TOMPAY" - PaymentProvider_TOM_FINANCE PaymentProvider = "TOM_FINANCE" - PaymentProvider_ALFABANK PaymentProvider = "ALFABANK" - PaymentProvider_PAYCELL PaymentProvider = "PAYCELL" - PaymentProvider_HASO PaymentProvider = "HASO" - PaymentProvider_OFFLINE PaymentProvider = "OFFLINE" + PaymentProvider_BANK PaymentProvider = "BANK" + PaymentProvider_CG_WALLET PaymentProvider = "CG_WALLET" + PaymentProvider_MASTERPASS PaymentProvider = "MASTERPASS" + PaymentProvider_GARANTI_PAY PaymentProvider = "GARANTI_PAY" + PaymentProvider_YKB_WORLD_PAY PaymentProvider = "YKB_WORLD_PAY" + PaymentProvider_PAPARA PaymentProvider = "PAPARA" + PaymentProvider_PAYONEER PaymentProvider = "PAYONEER" + PaymentProvider_SODEXO PaymentProvider = "SODEXO" + PaymentProvider_EDENRED PaymentProvider = "EDENRED" + PaymentProvider_ALIPAY PaymentProvider = "ALIPAY" + PaymentProvider_PAYPAL PaymentProvider = "PAYPAL" + PaymentProvider_KLARNA PaymentProvider = "KLARNA" + PaymentProvider_AFTERPAY PaymentProvider = "AFTERPAY" + PaymentProvider_APPLEPAY PaymentProvider = "APPLEPAY" + PaymentProvider_GOOGLEPAY PaymentProvider = "GOOGLEPAY" + PaymentProvider_HEPSIPAY PaymentProvider = "HEPSIPAY" + PaymentProvider_STRIPE PaymentProvider = "STRIPE" + PaymentProvider_KASPI PaymentProvider = "KASPI" + PaymentProvider_INSTANT_TRANSFER PaymentProvider = "INSTANT_TRANSFER" + PaymentProvider_MASLAK PaymentProvider = "MASLAK" + PaymentProvider_TOMPAY PaymentProvider = "TOMPAY" + PaymentProvider_TOM_FINANCE PaymentProvider = "TOM_FINANCE" + PaymentProvider_ALFABANK PaymentProvider = "ALFABANK" + PaymentProvider_PAYCELL PaymentProvider = "PAYCELL" + PaymentProvider_HASO PaymentProvider = "HASO" + PaymentProvider_OFFLINE PaymentProvider = "OFFLINE" ) // pos apm payment provider declaration @@ -181,20 +183,21 @@ const ( // payment method declaration const ( - PaymentMethod_CARD PaymentMethod = "CARD" - PaymentMethod_MASTERPASS PaymentMethod = "MASTERPASS" - PaymentMethod_PAPARA PaymentMethod = "PAPARA" - PaymentMethod_PAYONEER PaymentMethod = "PAYONEER" - PaymentMethod_SODEXO PaymentMethod = "SODEXO" - PaymentMethod_EDENRED PaymentMethod = "EDENRED" - PaymentMethod_EDENRED_GIFT PaymentMethod = "EDENRED_GIFT" - PaymentMethod_ALIPAY PaymentMethod = "ALIPAY" - PaymentMethod_PAYPAL PaymentMethod = "PAYPAL" - PaymentMethod_KLARNA PaymentMethod = "KLARNA" - PaymentMethod_AFTERPAY PaymentMethod = "AFTERPAY" - PaymentMethod_KASPI PaymentMethod = "KASPI" - PaymentMethod_TOMPAY PaymentMethod = "TOMPAY" - PaymentMethod_STRIPE PaymentMethod = "STRIPE" + PaymentMethod_CARD PaymentMethod = "CARD" + PaymentMethod_MASTERPASS PaymentMethod = "MASTERPASS" + PaymentMethod_PAPARA PaymentMethod = "PAPARA" + PaymentMethod_PAYONEER PaymentMethod = "PAYONEER" + PaymentMethod_SODEXO PaymentMethod = "SODEXO" + PaymentMethod_EDENRED PaymentMethod = "EDENRED" + PaymentMethod_EDENRED_GIFT PaymentMethod = "EDENRED_GIFT" + PaymentMethod_ALIPAY PaymentMethod = "ALIPAY" + PaymentMethod_PAYPAL PaymentMethod = "PAYPAL" + PaymentMethod_KLARNA PaymentMethod = "KLARNA" + PaymentMethod_AFTERPAY PaymentMethod = "AFTERPAY" + PaymentMethod_KASPI PaymentMethod = "KASPI" + PaymentMethod_INSTANT_TRANSFER PaymentMethod = "INSTANT_TRANSFER" + PaymentMethod_TOMPAY PaymentMethod = "TOMPAY" + PaymentMethod_STRIPE PaymentMethod = "STRIPE" ) // card type declaration @@ -352,6 +355,7 @@ const ( const ( ApmAdditionalAction_REDIRECT_TO_URL ApmAdditionalAction = "REDIRECT_TO_URL" ApmAdditionalAction_OTP_REQUIRED ApmAdditionalAction = "OTP_REQUIRED" + ApmAdditionalAction_SHOW_HTML_CONTENT ApmAdditionalAction = "SHOW_HTML_CONTENT" ApmAdditionalAction_WAIT_FOR_WEBHOOK ApmAdditionalAction = "WAIT_FOR_WEBHOOK" ApmAdditionalAction_APPROVAL_REQUIRED ApmAdditionalAction = "APPROVAL_REQUIRED" ApmAdditionalAction_NONE ApmAdditionalAction = "NONE" @@ -992,6 +996,7 @@ type InitCheckoutPaymentResponse struct { type InitApmPaymentResponse struct { PaymentId *int64 `json:"paymentId"` RedirectUrl *string `json:"redirectUrl"` + HtmlContent *string `json:"htmlContent"` PaymentStatus *PaymentStatus `json:"paymentStatus"` ApmAdditionalAction *ApmAdditionalAction `json:"additionalAction"` PaymentError *PaymentError `json:"paymentError"` @@ -1325,6 +1330,16 @@ type InstallmentResponse struct { InstallmentPrices []InstallmentPrice `json:"installmentPrices"` } +type InstantTransferBanksResponse struct { + Items []InstantTransferBank `json:"items"` +} + +type InstantTransferBank struct { + BankCode *string `json:"bankCode"` + BankName *string `json:"bankName"` + BankLogoUrl *string `json:"bankLogoUrl"` +} + type RetrieveBinNumberResponse struct { BinNumber *string `json:"binNumber"` CardType *string `json:"cardType"` @@ -1685,8 +1700,8 @@ type SearchPayoutCompletedTransactionsRequest struct { SettlementType SettlementType `schema:"settlementType,omitempty"` StartDate time.Time `schema:"startDate,omitempty"` EndDate time.Time `schema:"endDate,omitempty"` - Page int `schema:"page"` - Size int `schema:"size"` + Page int `schema:"page"` + Size int `schema:"size"` } type SearchPayoutBouncedTransactionsRequest struct { diff --git a/adapter/payment.go b/adapter/payment.go index 5ca00ea..c2204bd 100644 --- a/adapter/payment.go +++ b/adapter/payment.go @@ -553,6 +553,20 @@ func (api *Payment) ApproveBnplPayment(ctx context.Context, paymentId int64) err return nil } +func (api *Payment) RetrieveActiveBanks(ctx context.Context) (*InstantTransferBanksResponse, error) { + newRequest, err := api.Client.NewRequest(ctx, http.MethodGet, "/payment/v1/instant-transfer-banks", nil) + if err != nil { + return nil, err + } + response := &Response[InstantTransferBanksResponse]{} + err = api.Client.Do(ctx, newRequest, response) + if err != nil { + return nil, err + } + + 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/instant_transfer_payment_test.go b/tests/instant_transfer_payment_test.go new file mode 100644 index 0000000..ee30319 --- /dev/null +++ b/tests/instant_transfer_payment_test.go @@ -0,0 +1,53 @@ +package tests + +import ( + "context" + "testing" + + "github.com/craftgate/craftgate-go-client/adapter" + craftgate "github.com/craftgate/craftgate-go-client/adapter" + "github.com/davecgh/go-spew/spew" + "github.com/stretchr/testify/require" +) + +var instantTransferPaymentClient, _ = craftgate.New("api-key", "secret-key", "https://sandbox-api.craftgate.io") + +func TestRetrieveActiveBanks(t *testing.T) { + res, err := instantTransferPaymentClient.Payment.RetrieveActiveBanks(context.Background()) + require.NotEmpty(t, res.Items) + if err != nil { + t.Errorf("Error %s", err) + } +} + +func TestInitInstantTransferAPMPayment(t *testing.T) { + additionalParams := make(map[string]string) + additionalParams["bankCode"] = "0" + + request := adapter.InitApmPaymentRequest{ + ApmType: craftgate.ApmType_INSTANT_TRANSFER, + Price: 1, + PaidPrice: 1, + Currency: craftgate.Currency_TRY, + PaymentGroup: craftgate.PaymentGroup_LISTING_OR_SUBSCRIPTION, + ConversationId: "foo-bar", + CallbackUrl: "https://www.your-website.com/callback", + Items: []craftgate.PaymentItem{ + { + Name: "Item 1", + Price: 0.6, + }, + { + Name: "Item 2", + Price: 0.4, + }, + }, + AdditionalParams: additionalParams, + } + res, err := instantTransferPaymentClient.Payment.InitApmPayment(context.Background(), request) + _, _ = spew.Printf("%#v\n", res) + + if err != nil { + t.Errorf("Error %s", err) + } +}