-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcash.go
More file actions
147 lines (119 loc) · 3.61 KB
/
Copy pathcash.go
File metadata and controls
147 lines (119 loc) · 3.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
package mefrpApi
import (
"fmt"
"net/url"
)
// GetOrders retrieves the orders of the current user
func (c *Client) GetOrders(page, pageSize int, status string) (*struct {
Orders []Order `json:"orders"`
Total int64 `json:"total"`
}, error) {
params := url.Values{}
params.Add("page", fmt.Sprintf("%d", page))
params.Add("pageSize", fmt.Sprintf("%d", pageSize))
if status != "" {
params.Add("status", status)
}
var resp Response[struct {
Orders []Order `json:"orders"`
Total int64 `json:"total"`
}]
err := c.request("GET", "/auth/orders?"+params.Encode(), nil, &resp)
if err != nil {
return nil, err
}
if resp.Code != 200 {
return nil, fmt.Errorf("api error: %s (code: %d)", resp.Message, resp.Code)
}
return &resp.Data, nil
}
// RepayOrder submits a request to repay an existing order
func (c *Client) RepayOrder(orderID, payMethod string, force bool) (*SubmitOrderResponse, error) {
req := struct {
OrderID string `json:"orderId"`
PayMethod string `json:"payMethod"`
Force bool `json:"force"`
}{OrderID: orderID, PayMethod: payMethod, Force: force}
var resp Response[SubmitOrderResponse]
err := c.request("POST", "/auth/cash/repay", req, &resp)
if err != nil {
return nil, err
}
if resp.Code != 200 {
return nil, fmt.Errorf("api error: %s (code: %d)", resp.Message, resp.Code)
}
return &resp.Data, nil
}
// SubmitOrder submits a new order for payment
func (c *Client) SubmitOrder(req SubmitOrderRequest) (*SubmitOrderResponse, error) {
var resp Response[SubmitOrderResponse]
err := c.request("POST", "/cash/submit", req, &resp)
if err != nil {
return nil, err
}
if resp.Code != 200 {
return nil, fmt.Errorf("api error: %s (code: %d)", resp.Message, resp.Code)
}
return &resp.Data, nil
}
// QueryOrder queries the status of an order
func (c *Client) QueryOrder(orderID string) (*QueryOrderResponse, error) {
req := struct {
OrderID string `json:"orderId"`
}{OrderID: orderID}
var resp Response[QueryOrderResponse]
err := c.request("POST", "/cash/query", req, &resp)
if err != nil {
return nil, err
}
if resp.Code != 200 {
return nil, fmt.Errorf("api error: %s (code: %d)", resp.Message, resp.Code)
}
return &resp.Data, nil
}
// Proceed processes an order after payment
func (c *Client) Proceed(orderID string) error {
req := struct {
OrderID string `json:"orderId"`
}{OrderID: orderID}
var resp Response[any]
err := c.request("POST", "/cash/proceed", req, &resp)
if err != nil {
return err
}
if resp.Code != 200 {
return fmt.Errorf("api error: %s (code: %d)", resp.Message, resp.Code)
}
return nil
}
// RedeemCDK redeems a CDK code
func (c *Client) RedeemCDK(code, captchaToken string) (*RedeemCDKResponse, error) {
req := struct {
Code string `json:"code"`
CaptchaToken string `json:"captchaToken"`
}{Code: code, CaptchaToken: captchaToken}
var resp Response[RedeemCDKResponse]
err := c.request("POST", "/auth/cdk/redeem", req, &resp)
if err != nil {
return nil, err
}
if resp.Code != 200 {
return nil, fmt.Errorf("api error: %s (code: %d)", resp.Message, resp.Code)
}
return &resp.Data, nil
}
// GetMyCDKUsage retrieves the CDK usage logs of the current user
func (c *Client) GetMyCDKUsage(page, pageSize int) (*CDKUsageLogList, error) {
params := url.Values{}
params.Add("page", fmt.Sprintf("%d", page))
params.Add("pageSize", fmt.Sprintf("%d", pageSize))
var resp Response[CDKUsageLogList]
err := c.request("GET", "/auth/cdk/usage?"+params.Encode(), nil, &resp)
if err != nil {
return nil, err
}
if resp.Code != 200 {
return nil, fmt.Errorf("api error: %s (code: %d)", resp.Message, resp.Code)
}
return &resp.Data, nil
}