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.
156 lines
8.5 KiB
156 lines
8.5 KiB
|
2 months ago
|
package richpay
|
||
|
|
|
||
|
|
import (
|
||
|
|
"sync"
|
||
|
|
"time"
|
||
|
|
)
|
||
|
|
|
||
|
|
const (
|
||
|
|
baseURL = "https://uat-pf.dtpaypro.com"
|
||
|
|
tokenURL = "/auth/def/oauth/token"
|
||
|
|
refreshTokenURL = "/auth/def/oauth/refresh_token"
|
||
|
|
payURL = "/open/payin"
|
||
|
|
withdrawURL = "/open/payout"
|
||
|
|
queryWithdrawURL = "/open/payout/findByNo"
|
||
|
|
queryPayURL = "/open/payin/findByNo"
|
||
|
|
// mid = "105"
|
||
|
|
// privateKey = "MIIBSwIBADCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoEFgIUHhk46MaXhu9X287/tCNZpMAGPno="
|
||
|
|
// secret = "Qw!5@Sa%9$Ay"
|
||
|
|
// mid = "236"
|
||
|
|
// privateKey = "MIIBSgIBADCCASsGByqGSM44BAEwggEeAoGBANjZuuQIywjCbV2OilNYQjW618jcwicZBycv9e8Q/ikHoiy1ShvVlKmZWwhSZSz4dAXlniHcDfE6Nt4fPPoBxfwfzgy0T1IfsdrMmpy02tXO+ZyLKSRk6bNHD4y+9HIqeaR4QbADR0/TdSVpTRcL9S3qV8UsZqBmu+xnyzsVFy6NAhUA8GZwmQl14WTu6iGJeMsJvg0WErUCgYBXpHCOx74DgMGh7gGnxVXcX9C1xb3HxSLsixsTfrxGzLBHL1Jsa+wE4Y/Ff1Zga8YGLTcEwCN9YO5fRa17Ry1TPsCnxoobxdPK8+gNcjP8u1DYvT9HHeh9NwbsCX0gs77JhvgDLD8TXkE8wnt7CwZZK6mEJkoLu5rJgPcMyqDQdwQWAhQ8ItMfC4ofwIyZzdg++oYplXPrNQ=="
|
||
|
|
// secret = "0nhH9O8X"
|
||
|
|
publicKey = "MIIBuDCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoDgYUAAoGBAKl3DccrLszwepoc3uy+kzQywHcoOJ6UPsGsuGYIjVfFn50BotjGo6niEMBHlrp39cGcZJrhHYyishS1Z2rNNAKx3UvEPwkdeJSiNpx2xSk+uM3x9srfk7uIoZUnv3680Koua6EFFSYmSzotYE0RZChx1wQ5K+xG1F3qcQF68K6d"
|
||
|
|
)
|
||
|
|
|
||
|
|
var (
|
||
|
|
accessToken = ""
|
||
|
|
refreshToken = ""
|
||
|
|
tokenTimer *time.Timer
|
||
|
|
tokenTimerLock = &sync.Mutex{}
|
||
|
|
)
|
||
|
|
|
||
|
|
type TokenResp struct {
|
||
|
|
AccessToken string `json:"access_token"`
|
||
|
|
RefreshToken string `json:"refresh_token"`
|
||
|
|
ExpiresIn int64 `json:"expires_in"`
|
||
|
|
Code int `json:"code"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type PayReq struct {
|
||
|
|
MerchantID string `json:"merchant_id"` // 商户号
|
||
|
|
MerchantOrderNo string `json:"merchant_order_no"` // 商户订单号
|
||
|
|
OrderAmount string `json:"order_amount"` // 订单金额(卢比)
|
||
|
|
Email string `json:"email"` // 邮箱
|
||
|
|
Name string `json:"name"` // 姓名(英文)
|
||
|
|
Phone string `json:"phone"` // 手机号
|
||
|
|
DeeplinkSwitch string `json:"deeplink_switch"` // 深度链接开关(0 开,1 关)
|
||
|
|
NotifyURL string `json:"notify_url"` // 回调地址(可选)
|
||
|
|
NonceStr string `json:"noncestr"` // 随机数(6位)
|
||
|
|
Action string `json:"action"` // 操作类型
|
||
|
|
Timestamp string `json:"timestamp"` // 时间戳(秒)
|
||
|
|
Sign string `json:"sign"` // DSA签名
|
||
|
|
}
|
||
|
|
|
||
|
|
type PayResp struct {
|
||
|
|
Code int `json:"code"` // 请求返回码(200:成功)
|
||
|
|
BusCode string `json:"busCode"`
|
||
|
|
Success bool `json:"success"` // 请求是否成功
|
||
|
|
Msg string `json:"msg"` // 请求提示
|
||
|
|
Data struct {
|
||
|
|
OrderNo string `json:"order_no"` // 平台单号
|
||
|
|
MerchantOrderNo string `json:"merchant_order_no"` // 商户单号
|
||
|
|
OrderAmount float64 `json:"order_amount"` // 订单金额
|
||
|
|
PayURL string `json:"pay_url"` // 支付 UPI 链接
|
||
|
|
PayURLH5 string `json:"pay_url_H5"` // 支付 H5 链接
|
||
|
|
} `json:"data"` // 返回数据
|
||
|
|
}
|
||
|
|
|
||
|
|
type PayCallbackReq struct {
|
||
|
|
Status string `json:"status"` // 0:待支付;1:处理中;2:成功;3:失败;4:拒绝;5:撤销
|
||
|
|
Message string `json:"message"` // 信息提示
|
||
|
|
OrderAmount string `json:"order_amount"` // 实际支付金额(单位:卢比)
|
||
|
|
OrderNo string `json:"order_no"` // 平台订单号
|
||
|
|
MerchantOrderNo string `json:"merchant_order_no"` // 商户订单号
|
||
|
|
UTR string `json:"utr"` // 银行交易号(UTR)
|
||
|
|
NonceStr string `json:"noncestr"` // 随机码
|
||
|
|
Timestamp string `json:"timestamp"` // 时间戳
|
||
|
|
Sign string `json:"sign"` // DSA签名
|
||
|
|
}
|
||
|
|
|
||
|
|
type QueryPayReq struct {
|
||
|
|
MerchantOrderNo string `json:"merchant_order_no"` // 商户订单号
|
||
|
|
}
|
||
|
|
|
||
|
|
type QueryPayResp struct {
|
||
|
|
Code int `json:"code"` // 返回码(200表示成功)
|
||
|
|
BusCode string `json:"busCode"`
|
||
|
|
Success bool `json:"success"` // 是否成功
|
||
|
|
Msg string `json:"msg"` // 提示信息
|
||
|
|
Data struct {
|
||
|
|
UTR string `json:"utr"` // 银行交易参考号
|
||
|
|
MerchantOrderNo string `json:"merchant_order_no"` // 商户订单号
|
||
|
|
OrderAmount float64 `json:"order_amount"` // 订单金额
|
||
|
|
Status string `json:"status"` // 订单状态:0:待支付;1:处理中;2:成功;3:失败;4:拒绝;5:撤销
|
||
|
|
} `json:"data"` // 返回数据
|
||
|
|
}
|
||
|
|
|
||
|
|
type WithdrawReq struct {
|
||
|
|
MerchantID string `json:"merchant_id"` // 商户号
|
||
|
|
MerchantOrderNo string `json:"merchant_order_no"` // 商户订单号,保证唯一性
|
||
|
|
OrderAmount int64 `json:"order_amount"` // 订单金额(单位:卢比)
|
||
|
|
Name string `json:"name"` // 姓名(英文,5~20个字符)
|
||
|
|
Email string `json:"email"` // 邮箱(推荐使用 Gmail)
|
||
|
|
Phone string `json:"phone"` // 手机号(真实或符合格式)
|
||
|
|
NotifyURL string `json:"notify_url"` // 回调地址(可选)
|
||
|
|
NonceStr string `json:"noncestr"` // 随机数(6位)
|
||
|
|
Action string `json:"action"` // 操作类型
|
||
|
|
Timestamp string `json:"timestamp"` // 时间戳(秒)
|
||
|
|
Sign string `json:"sign"` // DSA 签名
|
||
|
|
Type string `json:"type"` // 支付类型:BANK/UPI(可选)
|
||
|
|
VPA string `json:"vpa"` // UPI ID(type=UPI 时必填)
|
||
|
|
Account string `json:"account"` // 银行账号(type=BANK 时必填)
|
||
|
|
IFSC string `json:"ifsc"` // 银行 IFSC(type=BANK 时必填)
|
||
|
|
}
|
||
|
|
|
||
|
|
type WithdrawResp struct {
|
||
|
|
Code int `json:"code"` // 请求返回码,200 表示成功
|
||
|
|
BusCode string `json:"busCode"`
|
||
|
|
Success bool `json:"success"` // 请求是否成功
|
||
|
|
Msg string `json:"msg"` // 提示信息
|
||
|
|
Data struct {
|
||
|
|
OrderNo string `json:"order_no"` // 平台订单号
|
||
|
|
MerchantOrderNo string `json:"merchant_order_no"` // 商户订单号
|
||
|
|
OrderAmount float64 `json:"order_amount"` // 订单金额
|
||
|
|
Status string `json:"status"` // 订单状态
|
||
|
|
} `json:"data"` // 返回数据(可能为空)
|
||
|
|
}
|
||
|
|
|
||
|
|
type WithdrawCallbackReq struct {
|
||
|
|
Status string `json:"status"` // 订单状态:0:待支付;1:处理中;2:成功;3:失败;4:拒绝;5:撤销
|
||
|
|
Message string `json:"message"` // 提示信息
|
||
|
|
OrderAmount string `json:"order_amount"` // 订单金额(单位:卢比,字符串格式)
|
||
|
|
OrderNo string `json:"order_no"` // 平台订单号
|
||
|
|
MerchantOrderNo string `json:"merchant_order_no"` // 商户订单号
|
||
|
|
UTR string `json:"utr"` // 银行交易参考号
|
||
|
|
NonceStr string `json:"noncestr"` // 随机码
|
||
|
|
Timestamp string `json:"timestamp"` // 时间戳
|
||
|
|
Sign string `json:"sign"` // DSA 签名
|
||
|
|
}
|
||
|
|
|
||
|
|
type QueryWithdrawReq struct {
|
||
|
|
MerchantOrderNo string `json:"merchant_order_no"` // 商户订单号
|
||
|
|
}
|
||
|
|
|
||
|
|
type QueryWithdrawResp struct {
|
||
|
|
Code int `json:"code"` // 请求返回码,200表示成功
|
||
|
|
BusCode string `json:"busCode"`
|
||
|
|
Success bool `json:"success"` // 请求是否成功
|
||
|
|
Msg string `json:"msg"` // 请求提示
|
||
|
|
Data struct {
|
||
|
|
UTR string `json:"utr"` // 银行交易参考号
|
||
|
|
MerchantOrderNo string `json:"merchant_order_no"` // 商户订单号
|
||
|
|
OrderAmount float64 `json:"order_amount"` // 订单金额
|
||
|
|
Status string `json:"status"` // 订单状态:0:待支付;1:处理中;2:成功;3:失败;4:拒绝;5:撤销
|
||
|
|
} `json:"data"` // 请求返回数据
|
||
|
|
}
|