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.
169 lines
11 KiB
169 lines
11 KiB
package hongxinpay |
|
|
|
const ( |
|
baseURL = "https://www.hongxin.online" |
|
payURL = "/sapi/payment/common/payin" |
|
queryPayURL = "/sapi/payment/common/getOrder" |
|
withdrawURL = "/sapi/payment/common/payout" |
|
queryWithdrawURL = "/sapi/payment/common/getOrder" |
|
// appID = "309582512" |
|
mid = "whale" |
|
) |
|
|
|
var privateKey = []byte(`-----BEGIN RSA PRIVATE KEY----- |
|
MIIEogIBAAKCAQEAowtA/7/Jwcd2yHCX8QAnobLArXyVSWNNTK1AObMCh2XJ7Zql |
|
1iOn4eAZ8ILH+7KNczMaQrA6PZZIKgnOUE8pgY911165gRWvT/XQpeMXvbFJu+aD |
|
ew8Qwfx6jnf7GRYXBKw8HMuQv55qu+AE5kEg+aK9AlR7VEW+RI6oAXVSpgfF8NbU |
|
gExha80PbS77d6RY64p+o0A0XGTsn/mbTJel590qZz06ODJQ9f+49sN3yPSVRQmv |
|
4AgUO8kTHRGx2ZdPFwjyrctoKaj2BEP1dSKLw2kDO4lU/3Hj9hkogSwLuez1ZuXH |
|
AaMn4URV+ZI1fZ05ewWJ8pjtR+PfyTwqOoCXtwIDAQABAoIBAAdftuzaK7HL559h |
|
GD4aF7DEeNpfzBCpoRFatJDne7HL9Ln+SInKywj4LbQm9gx4ItWW9hUWC0xFw7XD |
|
A8W2DtaBOn8nFZS0+lzPbURTZPt7TS5mWoPyRnu/g3t2CbE0wo2/jGhw/HbuHz2o |
|
ABC52Vfw+ENmtr00+kn3ebm3KKnBlZY2/26rGzNpJmm9sUPpF+swTMLFv9iv4IRO |
|
J3QcClGWbQph/qQLJocDNvcdRNbMSQvI6CnnR6hBHRLh1jRiLFGx7A2oPcIxLb8l |
|
gKVkoPBWnoSSuTEJ7TIPeFtaaI21jw+HvlQiHKitTdPAExcR//hXI42WPEw7cK8a |
|
97p0uaECgYEA6oiUvbPu171Olb9CaanK1Hn9dNYNttA+Iwg4wxykMfIQvyqKd4Iy |
|
om0kgZfevEfhaiBBd0CUK6rFz2JfwfhGRij0LitmpM/1fW1Hh9gIUEvg1tDomfXa |
|
rI3GCg06aGr/uVstbh/yR3jKDtW82sLxxiMsKHRVHy62rAfBF5VyTXsCgYEAsfeU |
|
3J0pNYNHYvk6u9Bo5+rLkwlwc1Fxpwd1NJSHdCo/PIcPQrUnMJfoLHWsxNOMGYSo |
|
GJiXW6a2G6dxPRNg3cGqjfXCF8hYnYcoqtvem8Wl+8YSlhd8a+vlDD6AVC71zhbg |
|
9AMqEkL/EjDMIGrFGVEEOrykYF5LhnNuvH9cA/UCgYBu3rQZ3aaJ/CbbKXf2xVpq |
|
CWUkx0/iXR0SqH9U1QRVzA3YoP6mMjlHiXrZfHbB4OURqz/nZPLmlas/N0z3QCvQ |
|
XOnZrZCvVtPBQFixQhHkC4q1YjqjFZMTQU4eUFSNKg/Liuu2BIoe+V3jl2zYqZFr |
|
zhLA6QWYYRffySahxHctYwKBgFiqG50qI5zIkelKeCuYMpvQy6mu2zpoyjHIMmmG |
|
0lFatvSl6UF31VWNaRu1aOUK7FLOV50hcM81qKbwbidanzj8QsfFN/T3WMbqzqUJ |
|
M8fx2bctQJdMji2Kciv+e5r1ZntNxLdtWCmO/VuHujswVpA9X9kPoOluMTyECBib |
|
bzF9AoGAKV4TOTQhwoA9sXDQtaUQqCjKfUjz8g1Hqp7rUWh2CMgvR3af7gVQTMwZ |
|
/V8DLv79cKyHtPpx/iVy6QULpeEzwFkZFEBM6kz6L3bDvnt7o/Js4duF0phZNXqx |
|
pfPIWWzXf20LF9m1Dsr1YAAc5LcWZgrEKBkZx1RdAYF1YHs1Vw4= |
|
-----END RSA PRIVATE KEY-----`) |
|
|
|
var privateKeyCS8 = []byte(`-----BEGIN PRIVATE KEY----- |
|
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCjC0D/v8nBx3bIcJfxACehssCtfJVJY01MrUA5swKHZcntmqXWI6fh4Bnwgsf7so1zMxpCsDo9lkgqCc5QTymBj3XXXrmBFa9P9dCl4xe9sUm75oN7DxDB/HqOd/sZFhcErDwcy5C/nmq74ATmQSD5or0CVHtURb5EjqgBdVKmB8Xw1tSATGFrzQ9tLvt3pFjrin6jQDRcZOyf+ZtMl6Xn3SpnPTo4MlD1/7j2w3fI9JVFCa/gCBQ7yRMdEbHZl08XCPKty2gpqPYEQ/V1IovDaQM7iVT/ceP2GSiBLAu57PVm5ccBoyfhRFX5kjV9nTl7BYnymO1H49/JPCo6gJe3AgMBAAECggEAB1+27Norscvnn2EYPhoXsMR42l/MEKmhEVq0kOd7scv0uf5IicrLCPgttCb2DHgi1Zb2FRYLTEXDtcMDxbYO1oE6fycVlLT6XM9tRFNk+3tNLmZag/JGe7+De3YJsTTCjb+MaHD8du4fPagAELnZV/D4Q2a2vTT6Sfd5ubcoqcGVljb/bqsbM2kmab2xQ+kX6zBMwsW/2K/ghE4ndBwKUZZtCmH+pAsmhwM29x1E1sxJC8joKedHqEEdEuHWNGIsUbHsDag9wjEtvyWApWSg8FaehJK5MQntMg94W1pojbWPD4e+VCIcqK1N08ATFxH/+FcjjZY8TDtwrxr3unS5oQKBgQDqiJS9s+7XvU6Vv0JpqcrUef101g220D4jCDjDHKQx8hC/Kop3gjKibSSBl968R+FqIEF3QJQrqsXPYl/B+EZGKPQuK2akz/V9bUeH2AhQS+DW0OiZ9dqsjcYKDTpoav+5Wy1uH/JHeMoO1bzawvHGIywodFUfLrasB8EXlXJNewKBgQCx95TcnSk1g0di+Tq70Gjn6suTCXBzUXGnB3U0lId0Kj88hw9CtScwl+gsdazE04wZhKgYmJdbprYbp3E9E2DdwaqN9cIXyFidhyiq296bxaX7xhKWF3xr6+UMPoBULvXOFuD0AyoSQv8SMMwgasUZUQQ6vKRgXkuGc268f1wD9QKBgG7etBndpon8Jtspd/bFWmoJZSTHT+JdHRKof1TVBFXMDdig/qYyOUeJetl8dsHg5RGrP+dk8uaVqz83TPdAK9Bc6dmtkK9W08FAWLFCEeQLirViOqMVkxNBTh5QVI0qD8uK67YEih75XeOXbNipkWvOEsDpBZhhF9/JJqHEdy1jAoGAWKobnSojnMiR6Up4K5gym9DLqa7bOmjKMcgyaYbSUVq29KXpQXfVVY1pG7Vo5QrsUs5XnSFwzzWopvBuJ1qfOPxCx8U39PdYxurOpQkzx/HZty1Al0yOLYpyK/57mvVme03Et21YKY79W4e6OzBWkD1f2Q+g6W4xPIQIGJtvMX0CgYApXhM5NCHCgD2xcNC1pRCoKMp9SPPyDUeqnutRaHYIyC9Hdp/uBVBMzBn9XwMu/v1wrIe0+nH+JXLpBQul4TPAWRkUQEzqTPovdsO+e3uj8mzh24XSmFk1erGl88hZbNd/bQsX2bUOyvVgABzktxZmCsQoGRnHVF0BgXVgezVXDg== |
|
-----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 myPublicKey = []byte(`-----BEGIN PUBLIC KEY----- |
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAowtA/7/Jwcd2yHCX8QAnobLArXyVSWNNTK1AObMCh2XJ7Zql1iOn4eAZ8ILH+7KNczMaQrA6PZZIKgnOUE8pgY911165gRWvT/XQpeMXvbFJu+aDew8Qwfx6jnf7GRYXBKw8HMuQv55qu+AE5kEg+aK9AlR7VEW+RI6oAXVSpgfF8NbUgExha80PbS77d6RY64p+o0A0XGTsn/mbTJel590qZz06ODJQ9f+49sN3yPSVRQmv4AgUO8kTHRGx2ZdPFwjyrctoKaj2BEP1dSKLw2kDO4lU/3Hj9hkogSwLuez1ZuXHAaMn4URV+ZI1fZ05ewWJ8pjtR+PfyTwqOoCXtwIDAQAB |
|
-----END PUBLIC KEY-----`) |
|
|
|
type PayReq struct { |
|
MerchantId string `json:"merchantId"` // 商户号 |
|
MerchantOrderNum string `json:"merchantOrderNum"` // 商户订单号 |
|
Amount string `json:"amount"` // 订单金额 |
|
CallBackUrl string `json:"callBackUrl"` // 异步回调地址 |
|
ReturnUrl string `json:"returnUrl"` // 支付完成返回地址(原生必填) |
|
AccountName string `json:"accountName"` // 账户名(持卡人名称,原生必填) |
|
Phone string `json:"phone"` // 手机号(原生必填) |
|
ProductDesc string `json:"productDesc"` // 商品描述(原生必填) |
|
SignType string `json:"signType"` // 签名方式:如 RSA |
|
Sign string `json:"sign"` // 签名 |
|
} |
|
|
|
type PayResp struct { |
|
Code string `json:"code"` // 返回code: SUCCESS / FAIL |
|
Msg string `json:"msg"` // 返回消息 |
|
MerchantOrderNum string `json:"merchantOrderNum"` // 商户订单号 |
|
PlatformOrderNum string `json:"platformOrderNum"` // 平台订单号 |
|
PaymentLink string `json:"paymentLink"` // 支付链接 |
|
SignType string `json:"signType"` // 签名方式 |
|
Sign string `json:"sign"` // 签名 |
|
Amount string `json:"amount"` // 订单金额 |
|
} |
|
|
|
/* |
|
tradeStatus |
|
CREATE: Create a payment link |
|
TIMEOUT: TIMEOUT, |
|
FAIL: Payment failed |
|
SUCCESS: Payment successful |
|
*/ |
|
type PayCallbackReq struct { |
|
Code string `json:"code"` // 返回code: SUCCESS / FAIL |
|
Msg string `json:"msg"` // 返回消息 |
|
MerchantOrderNum string `json:"merchantOrderNum"` // 商户订单号 |
|
PlatformOrderNum string `json:"platformOrderNum"` // 平台订单号 |
|
SignType string `json:"signType"` // 签名方式(如:RSA) |
|
Sign string `json:"sign"` // 签名 |
|
Amount string `json:"amount"` // 玩家实际充值金额 |
|
RealAmount string `json:"realAmount"` // 扣除手续费后系统到账金额 |
|
} |
|
|
|
type QueryPayReq struct { |
|
MerchantId string `json:"merchantId"` // 商户号 |
|
Type string `json:"type,omitempty"` // 0-代收;1-代付;不传默认0 |
|
MerchantOrderNum string `json:"merchantOrderNum"` // 商户订单号 |
|
PlatformOrderNum string `json:"platformOrderNum"` // 平台订单号 |
|
SignType string `json:"signType"` // 签名类型(如:RSA) |
|
Sign string `json:"sign"` // 签名 |
|
} |
|
|
|
type QueryPayResp struct { |
|
Code int `json:"code"` // 返回code【0-成功】【-1失败】 |
|
Msg string `json:"msg"` // 返回消息 |
|
MerchantOrderNum string `json:"merchantOrderNum"` // 商户订单号 |
|
PlatformOrderNum string `json:"platformOrderNum"` // 平台订单号 |
|
Amount string `json:"amount"` // 玩家实际支付金额 |
|
Fee string `json:"fee"` // 扣除的手续费 |
|
Status int `json:"status"` // 订单状态:0-支付中;1-支付成功;2-支付失败 |
|
UTR string `json:"utr"` // UTR 交易号(如适用) |
|
} |
|
|
|
// 定义主请求结构体 |
|
type WithdrawReq struct { |
|
MerchantId string `json:"merchantId"` // 商户号 |
|
MerchantOrderNum string `json:"merchantOrderNum"` // 商户订单号 |
|
Amount string `json:"amount"` // 金额(最多两位小数) |
|
CallBackUrl string `json:"callBackUrl"` // 异步回调地址 |
|
AccountName string `json:"accountName"` // 账户名(持卡人名称) |
|
BankName string `json:"bankName"` // 银行名称 |
|
AccountNumber string `json:"accountNumber"` // 银行卡号 |
|
IfscCode string `json:"ifscCode"` // IFSC Code(印度银行识别码) |
|
Phone string `json:"phone"` // 手机号 |
|
SignType string `json:"signType"` // 签名方式(如 RSA) |
|
Sign string `json:"sign"` // 签名 |
|
} |
|
|
|
type WithdrawResp struct { |
|
Code string `json:"code"` // 返回码:SUCCESS 或 FAIL |
|
Msg string `json:"msg"` // 返回消息 |
|
MerchantOrderNum string `json:"merchantOrderNum"` // 商户订单号 |
|
PlatformOrderNum string `json:"platformOrderNum"` // 平台订单号 |
|
SignType string `json:"signType"` // 签名方式 |
|
Sign string `json:"sign"` // 签名 |
|
Amount string `json:"amount"` // 原始订单金额 |
|
} |
|
|
|
type WithdrawCallback struct { |
|
Code string `json:"code"` // 返回码:SUCCESS 或 FAIL |
|
Msg string `json:"msg"` // 返回消息 |
|
MerchantOrderNum string `json:"merchantOrderNum"` // 商户订单号 |
|
PlatformOrderNum string `json:"platformOrderNum"` // 平台订单号 |
|
SignType string `json:"signType"` // 签名方式 |
|
Sign string `json:"sign"` // 签名 |
|
Amount string `json:"amount"` // 玩家实际充值金额 |
|
RealAmount string `json:"realAmount"` // 扣除手续费后,系统上分金额 |
|
UTR string `json:"utr"` // UTR 码(唯一交易参考码) |
|
} |
|
|
|
type QueryWithdrawReq struct { |
|
MerchantId string `json:"merchantId"` // 商户号 |
|
Type string `json:"type,omitempty"` // 0-代收;1-代付;不传默认0 |
|
MerchantOrderNum string `json:"merchantOrderNum"` // 商户订单号 |
|
PlatformOrderNum string `json:"platformOrderNum"` // 平台订单号 |
|
SignType string `json:"signType"` // 签名类型(如:RSA) |
|
Sign string `json:"sign"` // 签名 |
|
} |
|
|
|
type QueryWithdrawResp struct { |
|
Code int `json:"code"` // 返回code【0-成功】【-1失败】 |
|
Msg string `json:"msg"` // 返回消息 |
|
MerchantOrderNum string `json:"merchantOrderNum"` // 商户订单号 |
|
PlatformOrderNum string `json:"platformOrderNum"` // 平台订单号 |
|
Amount string `json:"amount"` // 玩家实际支付金额 |
|
Fee string `json:"fee"` // 扣除的手续费 |
|
Status int `json:"status"` // 订单状态:0-支付中;1-支付成功;2-支付失败 |
|
UTR string `json:"utr"` // UTR 交易号(如适用) |
|
}
|
|
|