forked from Fellow3-1/mpesa-api-go
/
model.go
128 lines (115 loc) · 2.91 KB
/
model.go
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
package mpesa
import (
"time"
)
type authResponse struct {
AccessToken string `json:"access_token"`
}
// C2B is a model
type C2B struct {
ShortCode string
CommandID string
Amount int
Msisdn string
BillRefNumber string
}
// B2C is a model
type B2C struct {
InitiatorName string
SecurityCredential string
CommandID string
Amount int
PartyA string
PartyB string
Remarks string
QueueTimeOutURL string
ResultURL string
Occassion string
}
// B2B is a model
type B2B struct {
Initiator string
SecurityCredential string
CommandID string
SenderIdentifierType string
RecieverIdentifierType string
Amount int
PartyA string
PartyB string
Remarks string
AccountReference string
QueueTimeOutURL string
ResultURL string
}
// Express is a model
type Express struct {
BusinessShortCode string
Password string
Timestamp string
TransactionType string
Amount int
PartyA string
PartyB string
PhoneNumber string
CallBackURL string
AccountReference string
TransactionDesc string
}
var defaultTransactionType = "CustomerPayBillOnline"
// NewExpress creates an express request object. Does the password generation and timestamp
func NewExpress(shortCode string, amount int, phoneNumber, callbackURL, ref, desc, passkey string) *Express {
timestamp := time.Now().Format("20060102030405")
password := GeneratePassword(shortCode, passkey, timestamp)
return &Express{
BusinessShortCode: shortCode,
Password: password,
Timestamp: timestamp,
TransactionType: defaultTransactionType,
Amount: amount,
PartyA: phoneNumber,
PartyB: shortCode,
PhoneNumber: phoneNumber,
CallBackURL: callbackURL,
AccountReference: ref,
TransactionDesc: desc,
}
}
// Reversal is a model
type Reversal struct {
Initiator string
SecurityCredential string
CommandID string
TransactionID string
Amount int
ReceiverParty string
ReceiverIdentifierType string
QueueTimeOutURL string
ResultURL string
Remarks string
Occassion string
}
// BalanceInquiry is a model
type BalanceInquiry struct {
Initiator string
SecurityCredential string
CommandID string
PartyA string
IdentifierType string
Remarks string
QueueTimeOutURL string
ResultURL string
}
// Pull is a model
type Pull struct {
ShortCode string
StartDate string
EndDate string
PageNumber string
}
// RegisterURL is a model
type C2BRegisterURL struct {
ShortCode string
ResponseType string
ConfirmationURL string
ValidationURL string
}