You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
208 lines
10 KiB
208 lines
10 KiB
package fpay |
|
|
|
const ( |
|
baseURL = "https://gpay.newgred.in" |
|
payURL = "/api/payin.php" |
|
queryPayURL = "/api/payinQuery.php" |
|
withdrawURL = "/api/payout.php" |
|
queryWithdrawURL = "/api/payoutQuery.php" |
|
// appID = "309582512" |
|
mid = "100034" |
|
) |
|
|
|
var privateKey = []byte(`-----BEGIN RSA PRIVATE KEY----- |
|
MIIEpAIBAAKCAQEAww4FgSWmlwspU8UwCWDdmXGaycTKIO0Ty1w8CupWS7/f6cKI |
|
WL9AXE4ovW3LZ7eTC6H07Bx5ONOpY6Dmd93tCr6Sq640zKg1ZV6tjzLA5FbNDE7P |
|
XqDKBXVs7xD40gb/sEBqYg89rf0ZrCYus4Y5yy2QoMvGxLnaKHTevf/ToSnCuRRa |
|
oJK/EvfKHnf8lZv5SG+ehIj4ECNxeV0XspDmXwuEiY7c68bKu2zku9Y2TpUg8DWx |
|
aiYCtWdspGqW+OAZib7uGn9Ou6BTNWtHuYD9lT9X+KCIf9u8WivikjRLLSLrOWbM |
|
COvq31olu7Jla15hY2Hn1BAfodo4XA8shel6mQIDAQABAoIBAB3r+TkyEuepzSmu |
|
HqvZobTnwgSAvTcm1zoDiKxt/VX6dblw36SplhBy5voELUdYWGTY7+8GgSwQADSp |
|
2qD5uOLEkFBo1W2twh8uUnacpQ2CKUthjZspFESZGmBkHJ9vdmrNvuQTDXWy1Wzc |
|
oJ5mkVgTQdQA3pmQHyDEqOTBqW/X6RHUelldW8hjIUpFQqTqwvoeBuLeoWUSVc+3 |
|
1/1nKCbdcVk2xEDjCAhLhTJ8rkxEVezeQ6IFY0vjGNSaopD2gWoP/QHAak6BzMQX |
|
YEwEojMYxMHQvXQCXXK7xk6Epv3spMpT2O4DtMUwlAHG3T1m3lL+FiBeoBeC8e6k |
|
+A9PhnkCgYEA5infKZXEfntsa/pHcf0q1DE/qI92b2wU94R6XzKAWEjj9Bp9KnQ3 |
|
jJ7WKRV/AR+X9n5QEYHU/Ks1Nl2dCuZ2btNhu4cO0jquXmMfBx4Jju+vMDNOw4RY |
|
nG0QO2RcFxJ+TtDjnpyQ/dz8kYNXTu82VTyhq8dczm6uowkytf7UHQ0CgYEA2PM9 |
|
sSEEfIPC4xCUy17r9ZdLo8nSXv1dZ4G4xs365Y3U9Ex8hLrt7oQv0kYuCc6uelUR |
|
MXA6lPlD9GjPh2wbaDZFYx3TARHu4YkSu4lMxl0RjZ+r2nrzRKr8VOKtMemIXb4e |
|
O4Ver+yfk3j/te6tTmyjdR1y/ybyWttJLOReKL0CgYAH5RfKjWCYFhO6AHPC7TQy |
|
4x2T4pflaoetldW8vja40IdBMEdq1WGyaSBfeGVK3JKR2fNVJmbv48+Hdd6VKSKW |
|
2plXnWJcw7aHdk7yJ42cYYxY0um4uylu9C7CWsbt46yBd5jXL/epPZNMSn0MMBhl |
|
BBdnlQcR7an/3ajnpT4RYQKBgQDMV08kJxUysmg9tsBvTViyWW7FNrMPBVWUyHph |
|
xmErFgwejmw6GFdC8P6Z78AtPJ7aWoV3K14CM0XuT0opI4os/fEdClpUB7AYfiNG |
|
wGuv6rk9y8byYhv/8Yz55wd6m5v1r7yKE3S7/wPOw4kWs1hJJcpP5Q0LhoN/UEv8 |
|
HJ0TgQKBgQCgYeElMjRc30IUSV2HJjGbzAxsqF2Meli+QCskRb0AsjECFiDTMv5U |
|
PMPJl2MNVJmxsbJVYEuqP70i8EEXJjdnub3LCRsLAbBEkU6lQN5HAaMSkbPsJY0x |
|
hd1WOyi9xPI/tq4RBqxf1xQKProu+FIXp9hGD8+OKqXXsKOZoDM7tg== |
|
-----END RSA PRIVATE KEY-----`) |
|
|
|
var privateKeyCS8 = []byte(`-----BEGIN PRIVATE KEY----- |
|
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDDDgWBJaaXCylT |
|
xTAJYN2ZcZrJxMog7RPLXDwK6lZLv9/pwohYv0BcTii9bctnt5MLofTsHHk406lj |
|
oOZ33e0KvpKrrjTMqDVlXq2PMsDkVs0MTs9eoMoFdWzvEPjSBv+wQGpiDz2t/Rms |
|
Ji6zhjnLLZCgy8bEudoodN69/9OhKcK5FFqgkr8S98oed/yVm/lIb56EiPgQI3F5 |
|
XReykOZfC4SJjtzrxsq7bOS71jZOlSDwNbFqJgK1Z2ykapb44BmJvu4af067oFM1 |
|
a0e5gP2VP1f4oIh/27xaK+KSNEstIus5ZswI6+rfWiW7smVrXmFjYefUEB+h2jhc |
|
DyyF6XqZAgMBAAECggEAHev5OTIS56nNKa4eq9mhtOfCBIC9NybXOgOIrG39Vfp1 |
|
uXDfpKmWEHLm+gQtR1hYZNjv7waBLBAANKnaoPm44sSQUGjVba3CHy5SdpylDYIp |
|
S2GNmykURJkaYGQcn292as2+5BMNdbLVbNygnmaRWBNB1ADemZAfIMSo5MGpb9fp |
|
EdR6WV1byGMhSkVCpOrC+h4G4t6hZRJVz7fX/WcoJt1xWTbEQOMICEuFMnyuTERV |
|
7N5DogVjS+MY1JqikPaBag/9AcBqToHMxBdgTASiMxjEwdC9dAJdcrvGToSm/eyk |
|
ylPY7gO0xTCUAcbdPWbeUv4WIF6gF4Lx7qT4D0+GeQKBgQDmKd8plcR+e2xr+kdx |
|
/SrUMT+oj3ZvbBT3hHpfMoBYSOP0Gn0qdDeMntYpFX8BH5f2flARgdT8qzU2XZ0K |
|
5nZu02G7hw7SOq5eYx8HHgmO768wM07DhFicbRA7ZFwXEn5O0OOenJD93PyRg1dO |
|
7zZVPKGrx1zObq6jCTK1/tQdDQKBgQDY8z2xIQR8g8LjEJTLXuv1l0ujydJe/V1n |
|
gbjGzfrljdT0THyEuu3uhC/SRi4Jzq56VRExcDqU+UP0aM+HbBtoNkVjHdMBEe7h |
|
iRK7iUzGXRGNn6vaevNEqvxU4q0x6Yhdvh47hV6v7J+TeP+17q1ObKN1HXL/JvJa |
|
20ks5F4ovQKBgAflF8qNYJgWE7oAc8LtNDLjHZPil+Vqh62V1by+NrjQh0EwR2rV |
|
YbJpIF94ZUrckpHZ81UmZu/jz4d13pUpIpbamVedYlzDtod2TvInjZxhjFjS6bi7 |
|
KW70LsJaxu3jrIF3mNcv96k9k0xKfQwwGGUEF2eVBxHtqf/dqOelPhFhAoGBAMxX |
|
TyQnFTKyaD22wG9NWLJZbsU2sw8FVZTIemHGYSsWDB6ObDoYV0Lw/pnvwC08ntpa |
|
hXcrXgIzRe5PSikjiiz98R0KWlQHsBh+I0bAa6/quT3LxvJiG//xjPnnB3qbm/Wv |
|
vIoTdLv/A87DiRazWEklyk/lDQuGg39QS/wcnROBAoGBAKBh4SUyNFzfQhRJXYcm |
|
MZvMDGyoXYx6WL5AKyRFvQCyMQIWINMy/lQ8w8mXYw1UmbGxslVgS6o/vSLwQRcm |
|
N2e5vcsJGwsBsESRTqVA3kcBoxKRs+wljTGF3VY7KL3E8j+2rhEGrF/XFAo+ui74 |
|
Uhen2EYPz44qpdewo5mgMzu2 |
|
-----END PRIVATE KEY-----`) |
|
var publicKey = []byte(`-----BEGIN RSA PUBLIC KEY----- |
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu3xCJwWBI7h0+nTkJhlw4nX+HGRYTFqnxmhC9s3pvukZwOIxDfwSHDZGpqe9jwfFDNMk9UguTZJPRrEoTSdmjMc8wN1tjk8XsUvtGOmWLmZkv84nR4zCbo2OzjbCAf3cMr3JDi8EGweHdia2tQGaX2enH3fabDhiSigewTwo96uj7ycFD6+7NMSoyyTko4lv+2QNzHs8ciPq0ep0V3tl/QM5fawfXLUA1f387+0/4gA7BN6kxerOCT0/L5/+WBu3j5f86pdV03i0kE4GU+MYnc5vVCSM4D3WcT98GJX6dkwuMiCNv4fzvLdkI2RLf0GfwF4jLyBBLyB1pcEMffNiqwIDAQAB |
|
-----END RSA PUBLIC KEY-----`) |
|
|
|
var myPublicKey = []byte(`-----BEGIN PUBLIC KEY----- |
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAww4FgSWmlwspU8UwCWDd |
|
mXGaycTKIO0Ty1w8CupWS7/f6cKIWL9AXE4ovW3LZ7eTC6H07Bx5ONOpY6Dmd93t |
|
Cr6Sq640zKg1ZV6tjzLA5FbNDE7PXqDKBXVs7xD40gb/sEBqYg89rf0ZrCYus4Y5 |
|
yy2QoMvGxLnaKHTevf/ToSnCuRRaoJK/EvfKHnf8lZv5SG+ehIj4ECNxeV0XspDm |
|
XwuEiY7c68bKu2zku9Y2TpUg8DWxaiYCtWdspGqW+OAZib7uGn9Ou6BTNWtHuYD9 |
|
lT9X+KCIf9u8WivikjRLLSLrOWbMCOvq31olu7Jla15hY2Hn1BAfodo4XA8shel6 |
|
mQIDAQAB |
|
-----END PUBLIC KEY-----`) |
|
|
|
type PayReq struct { |
|
MerchantId string `json:"merchantId"` // 商户号 |
|
MerchantOrderId string `json:"merchantOrderId"` // 商户订单号 |
|
Amount int64 `json:"amount"` // 付款金额, 不含小数点,单位INR |
|
UserId string `json:"userId"` // 接入方玩家id |
|
Email string `json:"email"` // 邮箱 |
|
Mobile string `json:"mobile"` // 不带区号的印度手机号 |
|
Extra string `json:"extra,omitempty"` // 透传数据 |
|
NotifyUrl string `json:"notifyUrl"` // 回调地址 |
|
Sign string `json:"sign"` // 签名 |
|
} |
|
|
|
type PayResp struct { |
|
Ret int `json:"ret"` // 返回码,200 表示成功 |
|
Msg string `json:"msg"` // 返回信息,SUCCESS 表示成功 |
|
Data struct { |
|
MerchantId string `json:"merchantId"` // 商户号 |
|
OrderId string `json:"orderId"` // 系统生成订单号 |
|
PayLink string `json:"payLink"` // 支付链接 |
|
MerchantOrderId string `json:"merchantOrderId"` // 商户订单号 |
|
} `json:"data"` // 数据部分 |
|
} |
|
|
|
/* |
|
tradeStatus |
|
CREATE: Create a payment link |
|
TIMEOUT: TIMEOUT, |
|
FAIL: Payment failed |
|
SUCCESS: Payment successful |
|
*/ |
|
type PayCallbackReq struct { |
|
MerchantId string `json:"merchantId"` // 商户号 |
|
OrderId string `json:"orderId"` // 系统生成订单号 |
|
PayState int `json:"payState"` // 代收状态 0:成功 1:失败 2:代收中 |
|
MerchantOrderId string `json:"merchantOrderId"` // 商户订单号 |
|
SuccessTime string `json:"successTime"` // 支付成功时间 |
|
Amount int `json:"amount"` // 支付金额 |
|
Extra string `json:"extra"` // 透传数据 |
|
PayMsg string `json:"payMsg"` // 结果说明 |
|
Sign string `json:"sign"` // 签名 |
|
} |
|
|
|
type QueryPayReq struct { |
|
MerchantId string `json:"merchantId"` // 商户号 |
|
OrderId string `json:"orderId"` // 系统生成订单号 |
|
Sign string `json:"sign"` // 签名 |
|
} |
|
|
|
type QueryPayResp struct { |
|
Ret int `json:"ret"` // 返回码 |
|
Msg string `json:"msg"` // 返回消息 |
|
Data struct { |
|
MerchantId string `json:"merchantId"` // 商户号 |
|
OrderId string `json:"orderId"` // 系统生成订单号 |
|
MerchantOrderId string `json:"merchantOrderId"` // 商户订单号 |
|
Amount int `json:"amount"` // 代付金额 |
|
SuccessTime int `json:"successTime"` // 支付成功时间 |
|
PayState int `json:"payState"` // 代收状态 0:成功, 1:失败, 2代收中 |
|
Extra string `json:"extra"` // 透传字段 |
|
} `json:"data"` |
|
} |
|
|
|
// 定义主请求结构体 |
|
type WithdrawReq struct { |
|
MerchantId string `json:"merchantId"` // 商户号 |
|
MerchantOrderId string `json:"merchantOrderId"` // 商户订单号 |
|
Amount int64 `json:"amount"` // 付款金额, 不含小数点,单位INR |
|
UserId string `json:"userId"` // 接入方玩家id |
|
PayType int `json:"payType"` // 付款类型:默认填4, 4-IMPS |
|
Account string `json:"account"` // 收款账号 |
|
AccountOwner string `json:"accountOwner"` // 银行持卡人(收款人)姓名, 至少三个英文字母 |
|
BankCode string `json:"bankCode"` // 印度银行ifsc号码 |
|
Email string `json:"email"` // 收款人邮箱 |
|
Mobile string `json:"mobile"` // 收款人不带区号的手机号 |
|
ClientIp string `json:"clientIp"` // 玩家IP |
|
NotifyUrl string `json:"notifyUrl"` // 结果通知地址 |
|
Sign string `json:"sign"` // 签名 |
|
} |
|
|
|
type WithdrawResp struct { |
|
Ret int `json:"ret"` // 状态码,200表示成功 |
|
Msg string `json:"msg"` // 提示信息 |
|
Data struct { |
|
MerchantId string `json:"merchantId"` // 商户号 |
|
OrderId string `json:"orderId"` // 系统生成订单号 |
|
MerchantOrderId string `json:"merchantOrderId"` // 商户订单号 |
|
Account string `json:"account"` // 收款账号 |
|
Amount int `json:"amount"` // 付款金额,单位INR |
|
MerchantDeduct int `json:"merchantDeduct"` // 税费 |
|
} `json:"data"` |
|
} |
|
|
|
type WithdrawCallback struct { |
|
MerchantId string `json:"merchantId"` // 商户号 |
|
OrderId string `json:"orderId"` // 系统生成订单号 |
|
MerchantOrderId string `json:"merchantOrderId"` // 商户订单号 |
|
Amount int `json:"amount"` // 代付金额 |
|
SuccessTime string `json:"successTime"` // 订单处理时间 |
|
Account string `json:"account"` // 收款方 |
|
PayState int `json:"payState"` // 订单状态,0:成功,1:失败,2:代付中 |
|
MerchantDeduct float64 `json:"merchantDeduct"` // 税费 |
|
PayMsg string `json:"payMsg"` // 结果说明 |
|
Utr string `json:"utr"` |
|
Sign string `json:"sign"` // 签名 |
|
} |
|
|
|
type QueryWithdrawReq struct { |
|
MerchantId string `json:"merchantId"` // 商户号 |
|
MerchantOrderId string `json:"merchantOrderId"` // 商户订单号 |
|
Sign string `json:"sign"` // 签名 |
|
} |
|
|
|
type QueryWithdrawResp struct { |
|
Ret int `json:"ret"` // 返回状态码,200为成功 |
|
Msg string `json:"msg"` // 返回信息 |
|
Data struct { |
|
MerchantId string `json:"merchantId"` // 商户号 |
|
OrderId string `json:"orderId"` // 系统生成订单号 |
|
MerchantOrderId string `json:"merchantOrderId"` // 商户订单号 |
|
Amount int `json:"amount"` // 代付金额 |
|
SuccessTime int `json:"successTime"` // 支付成功时间 |
|
Account string `json:"account"` // 收款方账户 |
|
PayState int `json:"payState"` // 订单状态 0:成功, 1:失败, 2:代付中 |
|
MerchantDeduct float64 `json:"merchantDeduct"` // 税费 |
|
} `json:"data"` |
|
}
|
|
|