Skip to content

Commit

Permalink
adds pos apm endpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
reywyn committed Jun 20, 2023
1 parent 3d7b72e commit 81a9c7a
Show file tree
Hide file tree
Showing 3 changed files with 154 additions and 10 deletions.
85 changes: 75 additions & 10 deletions adapter/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import "time"
type PaymentType string
type ApmType string
type PaymentProvider string
type PosApmPaymentProvider string
type PaymentStatus string
type PaymentSource string
type PaymentGroup string
Expand All @@ -30,6 +31,7 @@ type TransactionPayoutStatus string
type WalletTransactionRefundTransactionType string
type FraudAction string
type FraudCheckStatus string
type AdditionalAction string
type ApmAdditionalAction string
type ReportFileType string
type WalletTransactionType string
Expand Down Expand Up @@ -77,14 +79,24 @@ 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_PAPARA PaymentProvider = "PAPARA"
PaymentProvider_PAYONEER PaymentProvider = "PAYONEER"
PaymentProvider_SODEXO PaymentProvider = "SODEXO"
PaymentProvider_EDENRED PaymentProvider = "EDENRED"
PaymentProvider_BANK PaymentProvider = "BANK"
PaymentProvider_CG_WALLET PaymentProvider = "CG_WALLET"
PaymentProvider_MASTERPASS PaymentProvider = "MASTERPASS"
PaymentProvider_GARANTI_PAY PaymentProvider = "GARANTI_PAY"
PaymentProvider_PAPARA PaymentProvider = "PAPARA"
PaymentProvider_PAYONEER PaymentProvider = "PAYONEER"
PaymentProvider_SODEXO PaymentProvider = "SODEXO"
PaymentProvider_EDENRED PaymentProvider = "EDENRED"
PaymentProvider_YKB_WORLD_PAY PaymentProvider = "YKB_WORLD_PAY"
PaymentProvider_APPLEPAY PaymentProvider = "APPLEPAY"
PaymentProvider_GOOGLEPAY PaymentProvider = "GOOGLEPAY"
)

// pos apm payment provider declaration
const (
PosApmPaymentProvider_YKB_WORLD_PAY PosApmPaymentProvider = "YKB_WORLD_PAY"
PosApmPaymentProvider_APPLEPAY PosApmPaymentProvider = "APPLEPAY"
PosApmPaymentProvider_GOOGLEPAY PosApmPaymentProvider = "GOOGLEPAY"
)

// payment status declaration
Expand Down Expand Up @@ -391,6 +403,12 @@ const (
FileStatus_APPROVED FileStatus = "APPROVED"
)

const (
AdditionalAction_CONTINUE_IN_CLIENT AdditionalAction = "CONTINUE_IN_CLIENT"
AdditionalAction_SHOW_HTML_CONTENT AdditionalAction = "SHOW_HTML_CONTENT"
AdditionalAction_NONE AdditionalAction = "NONE"
)

// requests
type CreatePaymentRequest struct {
Price float64 `json:"price,omitempty"`
Expand Down Expand Up @@ -451,6 +469,10 @@ type Init3DSPaymentRequest struct {
Retry bool `json:"retry"`
}

type Complete3DSPaymentRequest struct {
PaymentId int64 `json:"paymentId"`
}

type InitCheckoutPaymentRequest struct {
Price float64 `json:"price,omitempty"`
PaidPrice float64 `json:"paidPrice,omitempty"`
Expand Down Expand Up @@ -501,8 +523,31 @@ type CompleteApmPaymentRequest struct {
AdditionalParams map[string]string `json:"additionalParams,omitempty"`
}

type Complete3DSPaymentRequest struct {
PaymentId int64 `json:"paymentId"`
type InitPosApmPaymentRequest struct {
Price float64 `json:"price,omitempty"`
PaidPrice float64 `json:"paidPrice,omitempty"`
PosAlias string `json:"posAlias,omitempty"`
Currency Currency `json:"currency,omitempty"`
ConversationId string `json:"conversationId,omitempty"`
ExternalId string `json:"externalId,omitempty"`
CallbackUrl string `json:"callbackUrl,omitempty"`
PaymentPhase PaymentPhase `json:"paymentPhase,omitempty"`
PaymentGroup PaymentGroup `json:"paymentGroup,omitempty"`
PaymentChannel string `json:"paymentChannel,omitempty"`
BuyerMemberId int64 `json:"buyerMemberId,omitempty"`
BankOrderId string `json:"bankOrderId,omitempty"`
ClientIp string `json:"clientIp,omitempty"`
Items []PaymentItem `json:"items"`
AdditionalParams map[string]string `json:"additionalParams"`
Installments []PosApmInstallment `json:"installments"`
PaymentProvider PosApmPaymentProvider `json:"paymentProvider,omitempty"`
FraudParams *FraudCheckParameters `json:"fraudParams,omitempty"`
CheckoutFormToken string `json:"checkoutFormToken,omitempty"`
}

type CompletePosApmPaymentRequest struct {
PaymentId int64 `json:"paymentId"`
AdditionalParams map[string]interface{} `json:"additionalParams"`
}

type PostAuthPaymentRequest struct {
Expand Down Expand Up @@ -723,6 +768,21 @@ type CompleteApmPaymentResponse struct {
PaymentError *PaymentError `json:"paymentError"`
}

type InitPosApmPaymentResponse struct {
PaymentId *int64 `json:"paymentId"`
HtmlContent *string `json:"htmlContent"`
PaymentStatus *PaymentStatus `json:"paymentStatus"`
AdditionalAction *AdditionalAction `json:"additionalAction"`
PaymentError *PaymentError `json:"paymentError"`
}

type CompletePosApmPaymentResponse struct {
PaymentId *int64 `json:"paymentId"`
ConversationId *string `json:"conversationId"`
PaymentStatus *PaymentStatus `json:"paymentStatus"`
PaymentError *PaymentError `json:"paymentError"`
}

type DepositPaymentResponse struct {
Id *int64 `json:"id"`
CreatedDate *TimeResponse `json:"createdDate"`
Expand Down Expand Up @@ -1540,6 +1600,11 @@ type FraudCheckParameters struct {
BuyerEmail string `json:"buyerEmail,omitempty"`
}

type PosApmInstallment struct {
Number *int `json:"number,omitempty"`
TotalPrice *float64 `json:"totalPrice,omitempty"`
}

type PaymentItem struct {
Name string `json:"name,omitempty"`
Price float64 `json:"price,omitempty"`
Expand Down
34 changes: 34 additions & 0 deletions adapter/payment.go
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,40 @@ func (api *Payment) CompleteApmPayment(ctx context.Context, request CompleteApmP
return response.Data, nil
}

func (api *Payment) InitPosApmPayment(ctx context.Context, request InitPosApmPaymentRequest) (*InitPosApmPaymentResponse, error) {
newRequest, err := api.Client.NewRequest(ctx, http.MethodPost, "/payment/v1/pos-apm-payments/init", request)

if err != nil {
return nil, err
}

response := &Response[InitPosApmPaymentResponse]{}
err = api.Client.Do(ctx, newRequest, response)

if err != nil {
return nil, err
}

return response.Data, nil
}

func (api *Payment) CompletePosApmPayment(ctx context.Context, request CompletePosApmPaymentRequest) (*CompletePosApmPaymentResponse, error) {
newRequest, err := api.Client.NewRequest(ctx, http.MethodPost, "/payment/v1/pos-apm-payments/complete", request)

if err != nil {
return nil, err
}

response := &Response[CompletePosApmPaymentResponse]{}
err = api.Client.Do(ctx, newRequest, response)

if err != nil {
return nil, err
}

return response.Data, nil
}

func (api *Payment) Init3DSDepositPayment(ctx context.Context, request DepositPaymentRequest) (*Init3DSPaymentResponse, error) {
newRequest, err := api.Client.NewRequest(ctx, http.MethodPost, "/payment/v1/deposits/3ds-init", request)

Expand Down
45 changes: 45 additions & 0 deletions tests/payment_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -464,6 +464,51 @@ func TestPayment_CompleteApmPayment(t *testing.T) {
}
}

func TestPayment_InitPosApmPayment(t *testing.T) {
request := adapter.InitPosApmPaymentRequest{
Price: 1.25,
PaidPrice: 1.25,
Currency: craftgate.Currency_TRY,
PaymentGroup: craftgate.PaymentGroup_LISTING_OR_SUBSCRIPTION,
ConversationId: "foo-bar",
PaymentProvider: craftgate.PosApmPaymentProvider_YKB_WORLD_PAY,
CallbackUrl: "https://www.your-website.com/callback",
Items: []craftgate.PaymentItem{
{
Name: "Item 1",
Price: 1,
ExternalId: "1",
},
{
Name: "Item 2",
Price: 0.25,
ExternalId: "2",
},
},
AdditionalParams: map[string]string{
"sourceCode": "WEB2QR",
},
}
res, err := paymentClient.Payment.InitPosApmPayment(context.Background(), request)
_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err)
}
}

func TestPayment_CompletePosApmPayment(t *testing.T) {
request := adapter.CompletePosApmPaymentRequest{
PaymentId: 123,
}
res, err := paymentClient.Payment.CompletePosApmPayment(context.Background(), request)
_, _ = spew.Printf("%#v\n", res)

if err != nil {
t.Errorf("Error %s", err)
}
}

func TestPayment_RetrieveLoyalties(t *testing.T) {
request := adapter.RetrieveLoyaltiesRequest{
CardNumber: "4043080000000003",
Expand Down

0 comments on commit 81a9c7a

Please sign in to comment.