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.
207 lines
11 KiB
207 lines
11 KiB
package tkpay |
|
|
|
const ( |
|
baseURL = "https://seabird.world" |
|
payURL = "/api/order/pay/create" |
|
queryPayURL = "/api/order/pay/query" |
|
withdrawURL = "/api/order/withdraw/create/v2" |
|
queryWithdrawURL = "/api/order/withdraw/query" |
|
mid = "202588027" |
|
key = "142ebb6649bc456ab1bc1a02c0e2e5de" |
|
// mid = "202366100" |
|
// key = "c385fe7029344aef826d8112625b2625x" |
|
) |
|
|
|
var privateKey = []byte(`-----BEGIN RSA PRIVATE KEY----- |
|
MIIEowIBAAKCAQEAqSbw9rY58HuqDZ0tyY2xCwQfRiXUI3EasGAMhLbQiMAMBGSZ |
|
QjcKUXHAnTe2YKJHD/Tn7vQpQtB6/ktuECH60lSVkEph+e6uXgE4nWbRkYur5pko |
|
sEHG/fTE+Upo0E9ID1BgElFQ/3gR9iUgOuEiy2EoyJWNyyCrT6OZB/nKSrl7M7EW |
|
Fr6X84NYZWp1pzKcf8cQIxwzuw9yF3Kwa9L43ANgJItrEqZ4zxeJk0/qJEC20UaE |
|
2AmCTkl/HfY6B6j8mNeHSPSyayVcoDitWHiNeUKE3QL2sXog7G+7pljYFZz6M259 |
|
w2r/zm8VkD5XJt3BGtjdZtIN0Ckf3C+ygOMY/wIDAQABAoIBABvsODnZwf2/REak |
|
DDNp5vBlGU6InxjMqnW0HUzpKspwPWuaOaxzDop8RyoM0Nfp4eYx7PmGp6sGZE9H |
|
H1+dZFzFJr1fcgYCjxkohXKCTxUCI/nYjZ1u9kzk04E9dcjxVXllsL5FWyQY64og |
|
/c2KbaZ6HvPhsDr4ZR8r5+6nnuuvpl6R6D5qLq6M+V2N9UnCgS7MvLHDoXBFYY3T |
|
C3KAlRdTJKvYqwVy8Dfe7Kmjix8AHuUHbDOZME+KwSsleAYlSbcmBJND3kKIseCT |
|
qWLOZV5n+XTL6/Y9HQvzXBbLd845iDf6MgLF4LAZkjxSAQU9pPWFEsJ/Cdg5HvPi |
|
/AhsMl0CgYEA7mXbfaN5GJ/Bbkkw745ljYWp98q5nQlVH/NHS8FXO1uTpwtrsqMX |
|
NCIkMN/W0RgeZCuBE42BRhCQrwDAoXtm9IoV8DDWVT26Uf9PfePMI19sqzG3Mld6 |
|
i+VRp+L5jV0gOy6x1WG4ifNAPicu/vUCr3m9Bczy6QuCxyPwtPvBdqsCgYEAtaQ3 |
|
VCymhqIye2/awazy/e6spdnZt1D2KEa6K5zpbbxAWXa0JpvVmmNa0BqapWSCommc |
|
qlq4amoQrl9tb9s59CuVkkitQODqinBRUOeHIQWbZ86v50ZMB/VTMzg+R4WFSjeF |
|
J/NVsJm8gUFfAqWHfF64kY5ydmNY/9Quken6dv0CgYEAxWUPlfta1LnLFz+BRooY |
|
qlMnxmZUxKOqmXb97MsdKKgOHT3GojaKiv9OCi39mEqpN3YSPZdomBQ1SMKNvegI |
|
+qivu58kiZZABY8qSenp6MwllabnssZeUSHDOAknaxbWDkr+stlkTM1ev1gAgNls |
|
rNFXY0stQyvl0HCA6cqfiVsCgYAPbqREwoZjaeRgGGC9k7QRXvXMIXYd3QMM6PVo |
|
PyyV5iiRcURdA2BifY55n8kDxEZVBiQJVSvV3q0MI49osXd7Bzjt9L7DhFho6qH9 |
|
/a29YHyTlTvcqlxLUMyAzYZ9DRsF8zGc80+UcXtSf/tSfj3Ek0ebFj8jT81/7scG |
|
HprpAQKBgFtIDm8Y09pGBw+u+ymFU1iNeDaBYzGhlWTz/PXia0Up14ztK2y8MA7p |
|
vtMdzYtzp/UC3F3MVu3ui8LPB8NQnUkGG4iYEV1wnIn0OQ5DVC1847w/WQY/WKyY |
|
fRi98UBfVpwjH4tu9ytZBOsjqnwFkJAog+UxMMAUNZZo20gwyft1 |
|
-----END RSA PRIVATE KEY-----`) |
|
|
|
var privateKeyCS8 = []byte(`-----BEGIN PRIVATE KEY----- |
|
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCpJvD2tjnwe6oN |
|
nS3JjbELBB9GJdQjcRqwYAyEttCIwAwEZJlCNwpRccCdN7ZgokcP9Ofu9ClC0Hr+ |
|
S24QIfrSVJWQSmH57q5eATidZtGRi6vmmSiwQcb99MT5SmjQT0gPUGASUVD/eBH2 |
|
JSA64SLLYSjIlY3LIKtPo5kH+cpKuXszsRYWvpfzg1hlanWnMpx/xxAjHDO7D3IX |
|
crBr0vjcA2Aki2sSpnjPF4mTT+okQLbRRoTYCYJOSX8d9joHqPyY14dI9LJrJVyg |
|
OK1YeI15QoTdAvaxeiDsb7umWNgVnPozbn3Dav/ObxWQPlcm3cEa2N1m0g3QKR/c |
|
L7KA4xj/AgMBAAECggEAG+w4OdnB/b9ERqQMM2nm8GUZToifGMyqdbQdTOkqynA9 |
|
a5o5rHMOinxHKgzQ1+nh5jHs+YanqwZkT0cfX51kXMUmvV9yBgKPGSiFcoJPFQIj |
|
+diNnW72TOTTgT11yPFVeWWwvkVbJBjriiD9zYptpnoe8+GwOvhlHyvn7qee66+m |
|
XpHoPmouroz5XY31ScKBLsy8scOhcEVhjdMLcoCVF1Mkq9irBXLwN97sqaOLHwAe |
|
5QdsM5kwT4rBKyV4BiVJtyYEk0PeQoix4JOpYs5lXmf5dMvr9j0dC/NcFst3zjmI |
|
N/oyAsXgsBmSPFIBBT2k9YUSwn8J2Dke8+L8CGwyXQKBgQDuZdt9o3kYn8FuSTDv |
|
jmWNhan3yrmdCVUf80dLwVc7W5OnC2uyoxc0IiQw39bRGB5kK4ETjYFGEJCvAMCh |
|
e2b0ihXwMNZVPbpR/09948wjX2yrMbcyV3qL5VGn4vmNXSA7LrHVYbiJ80A+Jy7+ |
|
9QKveb0FzPLpC4LHI/C0+8F2qwKBgQC1pDdULKaGojJ7b9rBrPL97qyl2dm3UPYo |
|
RrornOltvEBZdrQmm9WaY1rQGpqlZIKiaZyqWrhqahCuX21v2zn0K5WSSK1A4OqK |
|
cFFQ54chBZtnzq/nRkwH9VMzOD5HhYVKN4Un81WwmbyBQV8CpYd8XriRjnJ2Y1j/ |
|
1C6R6fp2/QKBgQDFZQ+V+1rUucsXP4FGihiqUyfGZlTEo6qZdv3syx0oqA4dPcai |
|
NoqK/04KLf2YSqk3dhI9l2iYFDVIwo296Aj6qK+7nySJlkAFjypJ6enozCWVpuey |
|
xl5RIcM4CSdrFtYOSv6y2WRMzV6/WACA2Wys0VdjSy1DK+XQcIDpyp+JWwKBgA9u |
|
pETChmNp5GAYYL2TtBFe9cwhdh3dAwzo9Wg/LJXmKJFxRF0DYGJ9jnmfyQPERlUG |
|
JAlVK9XerQwjj2ixd3sHOO30vsOEWGjqof39rb1gfJOVO9yqXEtQzIDNhn0NGwXz |
|
MZzzT5Rxe1J/+1J+PcSTR5sWPyNPzX/uxwYemukBAoGAW0gObxjT2kYHD677KYVT |
|
WI14NoFjMaGVZPP89eJrRSnXjO0rbLwwDum+0x3Ni3On9QLcXcxW7e6Lws8Hw1Cd |
|
SQYbiJgRXXCcifQ5DkNULXzjvD9ZBj9YrJh9GL3xQF9WnCMfi273K1kE6yOqfAWQ |
|
kCiD5TEwwBQ1lmjbSDDJ+3U= |
|
-----END PRIVATE KEY-----`) |
|
|
|
// var publicKey = []byte(`-----BEGIN RSA PUBLIC KEY----- |
|
// MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAohh2ldSLRmZNU/v/i11prEHU2m7cmDgloHa4Hu1rF6F8BexKWqqeMRw96dB+f7+la12WfND5e3eQWEqJk8ufjHMWudDjQXlon5cdu5hqB8rNiaBeNete4VQ5PRZmggrKH/UQCoVVtN4RO4kEsnOS4nnecnl+euvyKN7Qrn8APp99v0o+usNUWd8gZ+o+K+WT5Q+sdIMbdtDmIxI8AmKr0mlRrCPuzvG+99CWWBoDKuonU/8BG4ADbl+6KmZb7fWbkdlIHrWEQyYYNOIgeBoMJ41KEJIJGwwMkbw8OkF4t20gs4LTjixK5TUSAjbe9L2HAA/X9GbAjS1Owo+AfXNDFwIDAQAB |
|
// -----END RSA PUBLIC KEY-----`) |
|
|
|
var myPublicKeyBase = `MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqSbw9rY58HuqDZ0tyY2xCwQfRiXUI3EasGAMhLbQiMAMBGSZQjcKUXHAnTe2YKJHD/Tn7vQpQtB6/ktuECH60lSVkEph+e6uXgE4nWbRkYur5pkosEHG/fTE+Upo0E9ID1BgElFQ/3gR9iUgOuEiy2EoyJWNyyCrT6OZB/nKSrl7M7EWFr6X84NYZWp1pzKcf8cQIxwzuw9yF3Kwa9L43ANgJItrEqZ4zxeJk0/qJEC20UaE2AmCTkl/HfY6B6j8mNeHSPSyayVcoDitWHiNeUKE3QL2sXog7G+7pljYFZz6M259w2r/zm8VkD5XJt3BGtjdZtIN0Ckf3C+ygOMY/wIDAQAB` |
|
|
|
var myPublicKey = []byte(`-----BEGIN PUBLIC KEY----- |
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqSbw9rY58HuqDZ0tyY2x |
|
CwQfRiXUI3EasGAMhLbQiMAMBGSZQjcKUXHAnTe2YKJHD/Tn7vQpQtB6/ktuECH6 |
|
0lSVkEph+e6uXgE4nWbRkYur5pkosEHG/fTE+Upo0E9ID1BgElFQ/3gR9iUgOuEi |
|
y2EoyJWNyyCrT6OZB/nKSrl7M7EWFr6X84NYZWp1pzKcf8cQIxwzuw9yF3Kwa9L4 |
|
3ANgJItrEqZ4zxeJk0/qJEC20UaE2AmCTkl/HfY6B6j8mNeHSPSyayVcoDitWHiN |
|
eUKE3QL2sXog7G+7pljYFZz6M259w2r/zm8VkD5XJt3BGtjdZtIN0Ckf3C+ygOMY |
|
/wIDAQAB |
|
-----END PUBLIC KEY-----`) |
|
|
|
type PayReq struct { |
|
MerchantID string `json:"merchant_id"` // 商户编号id |
|
OrderID string `json:"order_id"` // 商户订单号,订单唯一 |
|
PayType string `json:"pay_type"` // 默认:1 |
|
NotifyUrl string `json:"notify_url"` // 商户接受回调通知地址 |
|
ReturnUrl string `json:"return_url"` // 订单成功收银台跳转地址 |
|
Sign string `json:"sign"` // 验签值 |
|
Amount int64 `json:"amount"` // 订单金额,单位(分) |
|
Currency string `json:"currency"` // 货币类型,默认 INR |
|
Name string `json:"name"` // 姓名,强烈建议真实 |
|
Phone string `json:"phone"` // 手机号,强烈建议真实 |
|
Email string `json:"email"` // 邮箱,强烈建议真实 |
|
} |
|
|
|
type PayResp struct { |
|
Code int `json:"code"` // 响应代码 |
|
Data struct { |
|
Amount int64 `json:"amount"` // 订单金额(单位:分) |
|
Fee int64 `json:"fee"` // 手续费(单位:分) |
|
ID int64 `json:"id"` // 订单 ID |
|
MerchantID string `json:"merchant_id"` // 商户 ID |
|
OrderID string `json:"order_id"` // 商户订单号 |
|
PayUrl string `json:"pay_url"` // 支付链接 |
|
} `json:"data"` // 响应数据 |
|
Message string `json:"message"` // 响应消息 |
|
} |
|
|
|
type PayCallbackReq struct { |
|
Code int `json:"code"` // 成功:200 失败:400 |
|
Message string `json:"message"` // 成功:SUCCESS 失败:FAILED |
|
Data struct { |
|
ID string `json:"id"` // 平台订单编号id |
|
MerchantID string `json:"merchant_id"` // 商户编号id |
|
Amount string `json:"amount"` // 金额(分) |
|
Fee string `json:"fee"` // 手续费(分) |
|
Sign string `json:"sign"` // 验签值,只有data中的参数参与验签 |
|
OrderID string `json:"order_id"` // 商户订单编号id |
|
Currency string `json:"currency"` // 货币 |
|
OperatorNum string `json:"operator_num"` // 操作员编号 |
|
UTR string `json:"utr"` // 交易流水号 |
|
} `json:"data"` // 回调通知数据 |
|
} |
|
|
|
type WithdrawReq struct { |
|
MerchantID string `json:"merchant_id"` // 商户编号id |
|
OrderID string `json:"order_id"` // 商户订单号,订单唯一 |
|
Amount int64 `json:"amount"` // 订单金额,单位(分) |
|
WithdrawType string `json:"withdraw_type"` // 提现类型:1=银行转账,2=UPI转账 |
|
NotifyUrl string `json:"notify_url"` // 商户接受回调通知地址 |
|
Name string `json:"name"` // 姓名 |
|
Phone string `json:"phone"` // 手机号 |
|
Email string `json:"email"` // 邮箱 |
|
BankCode string `json:"bank_code"` // 银行IFSC,UPI代付可以随便填 |
|
Currency string `json:"currency"` // 货币类型,默认为 INR |
|
Sign string `json:"sign"` // 验签值 |
|
Account string `json:"account"` // 银行账号或者UPI账号 |
|
} |
|
|
|
type WithdrawResp struct { |
|
Code int `json:"code"` // 状态码,200 表示提单成功,400 表示提单失败 |
|
Message string `json:"message"` // 状态信息,"SUCCESS" 表示成功,"FAIL" 表示失败 |
|
Data struct { |
|
ID int `json:"id"` // 平台订单号 |
|
MerID string `json:"merId"` // 商户号 |
|
OrderID string `json:"orderId"` // 商户订单号 |
|
Amount int `json:"amount"` // 金额 |
|
Fee int `json:"fee"` // 手续费 |
|
} `json:"data"` // 数据字段 |
|
} |
|
|
|
type WithdrawCallbackReq struct { |
|
Code int `json:"code"` // 成功:200 失败:400 |
|
Message string `json:"message"` // 成功:SUCCESS 失败:FAILED |
|
Data struct { |
|
ID string `json:"id"` // 平台订单编号id |
|
PlatformOrderID string `json:"platform_order_id"` // 平台订单编号id |
|
MerchantID string `json:"merchant_id"` // 商户编号id |
|
OrderID string `json:"order_id"` // 商户订单编号id |
|
Amount string `json:"amount"` // 金额(分) |
|
Fee string `json:"fee"` // 手续费(分) |
|
Sign string `json:"sign"` // 验签值,只有data中的参数参与验签 |
|
Currency string `json:"currency"` // 货币 |
|
UTR string `json:"utr"` // 交易流水号 |
|
} `json:"data"` // 回调通知数据 |
|
} |
|
|
|
type QueryWithdrawReq struct { |
|
MerchantID string `json:"merchant_id"` // 商户编号id,联系运营人员获取 |
|
OrderID string `json:"order_id"` // 商户需要查询的订单号 |
|
Sign string `json:"sign"` // 验签值 |
|
} |
|
|
|
type QueryWithdrawResp struct { |
|
Code int `json:"code"` // 成功:200,失败:其他 |
|
Message string `json:"message"` // 响应消息,成功:SUCCESS,失败:FAILED |
|
Data struct { |
|
ID string `json:"id"` // 平台单号 |
|
MerchantID string `json:"merchant_id"` // 商户编号 |
|
OrderID string `json:"order_id"` // 商户订单号 |
|
Status int `json:"status"` // 订单状态:2=成功,-2=失败,1=处理中 |
|
UTR string `json:"utr,omitempty"` // 成功订单 utr |
|
} `json:"data"` // 回调通知数据 |
|
} |
|
|
|
type QueryPayReq struct { |
|
MerchantID string `json:"merchant_id"` // 商户编号id,联系运营人员获取 |
|
OrderID string `json:"order_id"` // 商户需要查询的订单号 |
|
Sign string `json:"sign"` // 验签值 |
|
} |
|
|
|
type QueryPayResp struct { |
|
Code int `json:"code"` // 成功:200,失败:其他 |
|
Message string `json:"message"` // 响应消息,成功:SUCCESS,失败:FAILED |
|
Data struct { |
|
ID string `json:"id"` // 平台单号 |
|
MerchantID string `json:"merchant_id"` // 商户编号 |
|
OrderID string `json:"order_id"` // 商户订单号 |
|
Status int `json:"status"` // 订单状态:1=成功,0=处理中 |
|
} `json:"data"` // 回调通知数据 |
|
}
|
|
|