From 530792a0fb1defec74ae5a4acecbb3e6e16c9e02 Mon Sep 17 00:00:00 2001 From: Alexey Milko Date: Sat, 16 Nov 2024 14:34:08 +0500 Subject: [PATCH 1/6] add check order method --- checkorder.go | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 checkorder.go diff --git a/checkorder.go b/checkorder.go new file mode 100644 index 0000000..d8d2eb9 --- /dev/null +++ b/checkorder.go @@ -0,0 +1,46 @@ +package tinkoff + +import ( + "context" +) + +type CheckOrderRequest struct { + BaseRequest + OrderID string `json:"OrderId"` // Номер заказа в системе Продавца +} + +type CheckOrderResponse struct { + BaseResponse + OrderID string `json:"OrderId"` // Номер заказа в системе Продавца + Payments []struct { + PaymentID string `json:"PaymentId"` + Amount uint64 `json:"Amount"` // Стоимость товара в копейках + Status string `json:"Status"` // Статус платежа + RRN string `json:"RRN"` // Внутренний номер операции в платежной системе — кроме операций по СБП. + Success bool `json:"Success"` // Успешность операции + ErrorCode string `json:"ErrorCode"` // Код ошибки, «0» - если успешно + ErrorMessage string `json:"Message,omitempty"` // Краткое описание ошибки + } +} + +func (i *CheckOrderRequest) GetValuesForToken() map[string]string { + return map[string]string{ + "OrderID": i.OrderID, + } +} + +func (c *Client) CheckOrderWithContext(ctx context.Context, request *CheckOrderRequest) (*CheckOrderResponse, error) { + response, err := c.PostRequestWithContext(ctx, "/CheckOrder", request) + if err != nil { + return nil, err + } + defer response.Body.Close() + + var res CheckOrderResponse + err = c.decodeResponse(response, &res) + if err != nil { + return nil, err + } + + return &res, res.Error() +} From b6d7ec0f3d43761f344e8bce77e99c9eb719714a Mon Sep 17 00:00:00 2001 From: Alexey Milko Date: Mon, 18 Nov 2024 18:47:23 +0500 Subject: [PATCH 2/6] separate order responce struct --- checkorder.go | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/checkorder.go b/checkorder.go index d8d2eb9..8b4c7a0 100644 --- a/checkorder.go +++ b/checkorder.go @@ -12,15 +12,17 @@ type CheckOrderRequest struct { type CheckOrderResponse struct { BaseResponse OrderID string `json:"OrderId"` // Номер заказа в системе Продавца - Payments []struct { - PaymentID string `json:"PaymentId"` - Amount uint64 `json:"Amount"` // Стоимость товара в копейках - Status string `json:"Status"` // Статус платежа - RRN string `json:"RRN"` // Внутренний номер операции в платежной системе — кроме операций по СБП. - Success bool `json:"Success"` // Успешность операции - ErrorCode string `json:"ErrorCode"` // Код ошибки, «0» - если успешно - ErrorMessage string `json:"Message,omitempty"` // Краткое описание ошибки - } + Payments []Payment +} + +type Payment struct { + PaymentID string `json:"PaymentId"` + Amount uint64 `json:"Amount"` // Стоимость товара в копейках + Status string `json:"Status"` // Статус платежа + RRN string `json:"RRN"` // Внутренний номер операции в платежной системе — кроме операций по СБП. + Success bool `json:"Success"` // Успешность операции + ErrorCode string `json:"ErrorCode"` // Код ошибки, «0» - если успешно + ErrorMessage string `json:"Message,omitempty"` // Краткое описание ошибки } func (i *CheckOrderRequest) GetValuesForToken() map[string]string { From a9a74e84e43ab2a87d868758d6e7795ebec99556 Mon Sep 17 00:00:00 2001 From: Alexey Milko Date: Tue, 19 Nov 2024 12:30:56 +0500 Subject: [PATCH 3/6] Update checkorder.go Co-authored-by: Nikita Vaniasin --- checkorder.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/checkorder.go b/checkorder.go index 8b4c7a0..f1e33df 100644 --- a/checkorder.go +++ b/checkorder.go @@ -17,7 +17,7 @@ type CheckOrderResponse struct { type Payment struct { PaymentID string `json:"PaymentId"` - Amount uint64 `json:"Amount"` // Стоимость товара в копейках + Amount uint64 `json:"Amount,omitempty"` // Стоимость товара в копейках Status string `json:"Status"` // Статус платежа RRN string `json:"RRN"` // Внутренний номер операции в платежной системе — кроме операций по СБП. Success bool `json:"Success"` // Успешность операции From 131a6058df858aa2a7525382ae025dbae7088e4c Mon Sep 17 00:00:00 2001 From: Alexey Milko Date: Tue, 19 Nov 2024 12:46:47 +0500 Subject: [PATCH 4/6] Update checkorder.go Co-authored-by: Nikita Vaniasin --- checkorder.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/checkorder.go b/checkorder.go index f1e33df..939f3eb 100644 --- a/checkorder.go +++ b/checkorder.go @@ -19,7 +19,7 @@ type Payment struct { PaymentID string `json:"PaymentId"` Amount uint64 `json:"Amount,omitempty"` // Стоимость товара в копейках Status string `json:"Status"` // Статус платежа - RRN string `json:"RRN"` // Внутренний номер операции в платежной системе — кроме операций по СБП. + RRN string `json:"RRN,omitempty"` // Внутренний номер операции в платежной системе — кроме операций по СБП. Success bool `json:"Success"` // Успешность операции ErrorCode string `json:"ErrorCode"` // Код ошибки, «0» - если успешно ErrorMessage string `json:"Message,omitempty"` // Краткое описание ошибки From 7605ca532da79becfc79c74009b19d8a7f4b5523 Mon Sep 17 00:00:00 2001 From: Alexey Milko Date: Tue, 19 Nov 2024 12:55:32 +0500 Subject: [PATCH 5/6] fix --- checkorder.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/checkorder.go b/checkorder.go index 939f3eb..ef61e15 100644 --- a/checkorder.go +++ b/checkorder.go @@ -12,17 +12,17 @@ type CheckOrderRequest struct { type CheckOrderResponse struct { BaseResponse OrderID string `json:"OrderId"` // Номер заказа в системе Продавца - Payments []Payment + Payments []PaymentsCheckOrder } -type Payment struct { +type PaymentsCheckOrder struct { PaymentID string `json:"PaymentId"` - Amount uint64 `json:"Amount,omitempty"` // Стоимость товара в копейках + Amount uint64 `json:"Amount,omitempty"` // Стоимость товара в копейках Status string `json:"Status"` // Статус платежа - RRN string `json:"RRN,omitempty"` // Внутренний номер операции в платежной системе — кроме операций по СБП. + RRN string `json:"RRN,omitempty"` // Внутренний номер операции в платежной системе — кроме операций по СБП. Success bool `json:"Success"` // Успешность операции ErrorCode string `json:"ErrorCode"` // Код ошибки, «0» - если успешно - ErrorMessage string `json:"Message,omitempty"` // Краткое описание ошибки + ErrorMessage uint64 `json:"Message,omitempty"` // Краткое описание ошибки } func (i *CheckOrderRequest) GetValuesForToken() map[string]string { From 068d753b4625902bfa3f90decb4c1fd48b534373 Mon Sep 17 00:00:00 2001 From: Alexey Milko Date: Tue, 19 Nov 2024 13:11:09 +0500 Subject: [PATCH 6/6] Update checkorder.go --- checkorder.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/checkorder.go b/checkorder.go index ef61e15..8f55ef5 100644 --- a/checkorder.go +++ b/checkorder.go @@ -21,8 +21,8 @@ type PaymentsCheckOrder struct { Status string `json:"Status"` // Статус платежа RRN string `json:"RRN,omitempty"` // Внутренний номер операции в платежной системе — кроме операций по СБП. Success bool `json:"Success"` // Успешность операции - ErrorCode string `json:"ErrorCode"` // Код ошибки, «0» - если успешно - ErrorMessage uint64 `json:"Message,omitempty"` // Краткое описание ошибки + ErrorCode uint64 `json:"ErrorCode"` // Код ошибки, «0» - если успешно + ErrorMessage string `json:"Message,omitempty"` // Краткое описание ошибки } func (i *CheckOrderRequest) GetValuesForToken() map[string]string {