package grepay import ( "fmt" "server/config" "server/util" "sort" "github.com/liangdas/mqant/log" ) const ( payURL = "https://api.metagopayments.com/cashier/pay.ac" payCallbackURL = "/grepay/pay/callback" withdrawURL = "https://payout.metagopayments.com/cashier/TX0001.ac" withdrawCallbackURL = "/grepay/withdraw/callback" orgNo = "8240800022" mid = "24082600000022" // key = "FF5D557F6AC9EF26212B482B23AD7F07" ) type PayReq struct { Version string `json:"version"` OrgNo string `json:"orgNo"` CustId string `json:"custId"` CustOrderNo string `json:"custOrderNo"` TranType string `json:"tranType"` ClearType string `json:"clearType"` PayAmt int64 `json:"payAmt"` BackUrl string `json:"backUrl"` FrontUrl string `json:"frontUrl"` GoodsName string `json:"goodsName"` OrderDesc string `json:"orderDesc"` BuyIp string `json:"buyIp"` UserName string `json:"userName"` UserEmail string `json:"userEmail"` UserPhone string `json:"userPhone"` UserCitizenID string `json:"userCitizenId"` CountryCode string `json:"countryCode"` Currency string `json:"currency"` Sign string `json:"sign"` } type PayResp struct { OrgNo string `json:"orgNo"` CustId string `json:"custId"` Code string `json:"code"` // 000000 表示请求该接口正常 Msg string `json:"msg"` CustOrderNo string `json:"custOrderNo"` ContentType string `json:"contentType"` BusContent string `json:"busContent"` Sign string `json:"sign"` } type PayCallbackReq struct { Version string `json:"version" form:"version"` OrgNo string `json:"orgNo" form:"orgNo"` CustId string `json:"custId" form:"custId"` CustOrderNo string `json:"custOrderNo" form:"custOrderNo"` PrdOrdNo string `json:"prdOrdNo" form:"prdOrdNo"` OrdAmt string `json:"ordAmt" form:"ordAmt"` OrdTime string `json:"ordTime" form:"ordTime"` PayAmt string `json:"payAmt" form:"payAmt"` OrdStatus string `json:"ordStatus" form:"ordStatus"` // 00:未交易01:成功02:失败03:被拒绝04:处理中05:取消支付06:未支付07:已退款08:退款中 Sign string `json:"sign" form:"sign"` } type WithdrawReq struct { Version string `json:"version"` OrgNo string `json:"orgNo"` CustId string `json:"custId"` CustOrderNo string `json:"custOrdNo"` CasType string `json:"casType"` // 清算类型(请传数字编码)00(T0 结算)01(T1 结算)默认为00 Country string `json:"country"` Currency string `json:"currency"` CasAmt int64 `json:"casAmt"` DeductWay string `json:"deductWay"` CallBackUrl string `json:"callBackUrl"` Account string `json:"account"` PayoutType string `json:"payoutType"` // Card: 代付到银行卡UPI: 代付到UPI 账户 AccountName string `json:"accountName"` PayeeBankCode string `json:"payeeBankCode"` CardType string `json:"cardType"` // PayoutType为card时,填IMPS CnapsCode string `json:"cnapsCode"` // IFSC CardNo string `json:"cardNo"` UpiId string `json:"upiId"` Phone string `json:"phone"` Email string `json:"email"` Sign string `json:"sign"` } type WithdrawResp struct { OrgNo string `json:"orgNo"` OrdStatus string `json:"ordStatus"` // 00:未交易01:成功02:失败03:被拒绝04:处理中05:取消支付06:未支付07:已退款08:退款中 Code string `json:"code"` // 000000 表示请求该接口正常 Msg string `json:"msg"` CustId string `json:"custId"` CustOrderNo string `json:"custOrderNo"` CasOrdNo string `json:"casOrdNo"` CasAmt string `json:"casAmt"` CasTime string `json:"casTime"` Sign string `json:"sign"` } type WithdrawCallbackReq struct { OrgNo string `json:"orgNo" form:"orgNo"` CustId string `json:"custId" form:"custId"` CustOrderNo string `json:"custOrderNo" form:"custOrderNo"` PrdOrdNo string `json:"prdOrdNo" form:"prdOrdNo"` PayAmt int64 `json:"payAmt" form:"payAmt"` OrdStatus string `json:"ordStatus" form:"ordStatus"` // 00:未交易01:成功02:失败03:被拒绝04:处理中05:取消支付06:未支付07:已退款08:退款中 CasDesc string `json:"casDesc" form:"casDesc"` Sign string `json:"sign" form:"sign"` } func Sign(m map[string]interface{}) string { str := []string{} for i := range m { if i == "sign" { continue } str = append(str, i) } sort.Strings(str) signStr := "" for _, v := range str { mv := m[v] signStr += fmt.Sprintf("%v=%v", v, mv) signStr += "&" } signStr += "key=" + config.GetConfig().Pay.GrePay.Key log.Debug("signStr:%v", signStr) return util.CalculateMD5(signStr) }