印度包网
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

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"` // 请求返回数据
}