Passed
Push — main ( 738630...60c7d5 )
by Acho
02:17
created

ynote.*RefundTransactionStatus.IsFailed   C

Complexity

Conditions 9

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 9
eloc 2
nop 0
dl 0
loc 2
rs 6.6666
c 0
b 0
f 0
1
package ynote
2
3
// RefundParams are the parameters for executing a refund transaction
4
type RefundParams struct {
5
	ChannelUserMsisdn         string `json:"channelUserMsisdn"`
6
	Pin                       string `json:"pin"`
7
	Webhook                   string `json:"webhook"`
8
	Amount                    string `json:"amount"`
9
	FinalCustomerPhone        string `json:"final_customer_phone"`
10
	FinalCustomerName         string `json:"final_customer_name"`
11
	RefundMethod              string `json:"refund_method"`
12
	FeesIncluded              bool   `json:"fees_included"`
13
	MaximumRetries            string `json:"maximum_retries"`
14
	FinalCustomerNameAccuracy string `json:"final_customer_name_accuracy"`
15
}
16
17
// RefundTransaction is the response from a refund transaction
18
type RefundTransaction struct {
19
	MD5OfMessageBody       string `json:"MD5OfMessageBody"`
20
	MD5OfMessageAttributes string `json:"MD5OfMessageAttributes"`
21
	MessageID              string `json:"MessageId"`
22
	ResponseMetadata       struct {
23
		RequestID      string `json:"RequestId"`
24
		HTTPStatusCode int    `json:"HTTPStatusCode"`
25
		HTTPHeaders    struct {
26
			XAmznRequestid string `json:"x-amzn-requestid"`
27
			Date           string `json:"date"`
28
			ContentType    string `json:"content-type"`
29
			ContentLength  string `json:"content-length"`
30
			Connection     string `json:"connection"`
31
		} `json:"HTTPHeaders"`
32
		RetryAttempts int `json:"RetryAttempts"`
33
	} `json:"ResponseMetadata"`
34
}
35
36
// RefundTransactionStatus is the response from a refund transaction status
37
type RefundTransactionStatus struct {
38
	Status       *string `json:"status"`
39
	ErrorCode    *int    `json:"ErrorCode"`
40
	ErrorMessage *string `json:"ErrorMessage"`
41
	Result       *struct {
42
		Message string  `json:"message"`
43
		Status  *string `json:"status"`
44
		Data    struct {
45
			CreatedAt         string `json:"createtime"`
46
			SubscriberMsisdn  string `json:"subscriberMsisdn"`
47
			Amount            any    `json:"amount"`
48
			PayToken          string `json:"payToken"`
49
			TransactionID     string `json:"txnid"`
50
			TransactionMode   string `json:"txnmode"`
51
			TransactionStatus string `json:"txnstatus"`
52
			OrderID           string `json:"orderId"`
53
			Status            string `json:"status"`
54
			ChannelUserMsisdn string `json:"channelUserMsisdn"`
55
			Description       string `json:"description"`
56
		} `json:"data"`
57
	} `json:"result"`
58
	Parameters struct {
59
		Amount                    string `json:"amount"`
60
		Xauth                     string `json:"xauth"`
61
		ChannelUserMsisdn         string `json:"channel_user_msisdn"`
62
		CustomerKey               string `json:"customer_key"`
63
		CustomerSecret            string `json:"customer_secret"`
64
		FinalCustomerName         string `json:"final_customer_name"`
65
		FinalCustomerPhone        string `json:"final_customer_phone"`
66
		FinalCustomerNameAccuracy any    `json:"final_customer_name_accuracy"`
67
	} `json:"parameters"`
68
	CreatedAt  string `json:"CreateAt"`
69
	MessageID  string `json:"MessageId"`
70
	RefundStep string `json:"RefundStep"`
71
}
72
73
// IsPending checks if the refund transaction is pending
74
func (status *RefundTransactionStatus) IsPending() bool {
75
	return status.Status == nil && (status.Result == nil || status.Result.Data.Status == "" || status.Result.Data.Status == "PENDING" || status.Result.Data.Status == "INITIATED")
76
}
77
78
// IsSuccessful checks if the refund transaction is successful
79
func (status *RefundTransactionStatus) IsSuccessful() bool {
80
	return status.Result != nil && (status.Result.Data.Status == "SUCCESSFULL" || status.Result.Data.Status == "SUCCESSFUL")
81
}
82
83
// IsFailed checks if the refund transaction is failed
84
func (status *RefundTransactionStatus) IsFailed() bool {
85
	return (status.Status != nil && *status.Status == "FAILED") || (status.ErrorCode != nil && *status.ErrorCode == 5019) || (status.Result != nil && (status.Result.Data.Status == "FAILED" || status.Result.Data.Status == "EXPIRED") || (status.Result.Status != nil && *status.Result.Status == "FAILED"))
86
}
87