154 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			154 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package udunhelper
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								type VerifyRequest struct {
							 | 
						|||
| 
								 | 
							
									MerchantId   string `json:"merchantId"`
							 | 
						|||
| 
								 | 
							
									MainCoinType string `json:"mainCoinType"`
							 | 
						|||
| 
								 | 
							
									Address      string `json:"address"`
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								type CallbackRequest struct {
							 | 
						|||
| 
								 | 
							
									MerchantId   string `json:"merchantId"`   //商户号
							 | 
						|||
| 
								 | 
							
									MainCoinType int    `json:"mainCoinType"` //主幣種編號,使用獲取商戶幣種信息接口
							 | 
						|||
| 
								 | 
							
									CallUrl      string `json:"callUrl"`      //回調地址,通過該接口創建的地址,以後關於該地址的充幣信息會通過您指定的回調地址通知您
							 | 
						|||
| 
								 | 
							
									WalletId     string `json:"walletId"`     //錢包編號,默認根據主錢包生成地址,可不填写
							 | 
						|||
| 
								 | 
							
									Alias        string `json:"alias"`        //地址別名,可不填写
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								type WithdrawRequest struct {
							 | 
						|||
| 
								 | 
							
									/**
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
									        "address":"raadSxrUhG5EQVCY75CSGaVLWCeXd6yH6s",
							 | 
						|||
| 
								 | 
							
									        "amount":"0.11",
							 | 
						|||
| 
								 | 
							
									        "merchantId":"100109",
							 | 
						|||
| 
								 | 
							
									        "mainCoinType":"144",
							 | 
						|||
| 
								 | 
							
									        "coinType":"144",
							 | 
						|||
| 
								 | 
							
									        "callUrl":"http://localhost:8080/mch/callBack",
							 | 
						|||
| 
								 | 
							
									        "businessId":"15",
							 | 
						|||
| 
								 | 
							
									        "memo":"10112"
							 | 
						|||
| 
								 | 
							
									    }
							 | 
						|||
| 
								 | 
							
									*/
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									Address      string `json:"address"`      //提币地址
							 | 
						|||
| 
								 | 
							
									Amount       string `json:"amount"`       //提币数量
							 | 
						|||
| 
								 | 
							
									MerchantId   string `json:"merchantId"`   //商户号
							 | 
						|||
| 
								 | 
							
									MainCoinType string `json:"mainCoinType"` //主幣種編號,使用獲取商戶幣種信息接口
							 | 
						|||
| 
								 | 
							
									CoinType     string `json:"coinType"`     //子幣種編號,使用獲取商戶幣種信息接口
							 | 
						|||
| 
								 | 
							
									CallUrl      string `json:"callUrl"`      //回調地址,通過該callUrl告知您該筆提幣交易的狀態
							 | 
						|||
| 
								 | 
							
									BusinessId   string `json:"businessId"`   //業務編號,必須保證該字段在系統內唯一,如果重復,則該筆提幣錢包將不會進行接收
							 | 
						|||
| 
								 | 
							
									WalletId     string `json:"-"`
							 | 
						|||
| 
								 | 
							
									Memo         string `json:"memo"` //備註,XRP和EOS,這兩種幣的提幣申請該字段可選,其他類型幣種不填
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								type BaseRequest struct {
							 | 
						|||
| 
								 | 
							
									Timestamp int64 `json:"timestamp"`
							 | 
						|||
| 
								 | 
							
									Nonce     int   `json:"nonce"`
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								type HttpRequest struct {
							 | 
						|||
| 
								 | 
							
									Timestamp int64  `json:"timestamp"` //时间戳
							 | 
						|||
| 
								 | 
							
									Nonce     int    `json:"nonce"`     //随机数
							 | 
						|||
| 
								 | 
							
									Sign      string `json:"sign"`      //签名
							 | 
						|||
| 
								 | 
							
									Body      string `json:"body"`      //请求body
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								type BaseRes struct {
							 | 
						|||
| 
								 | 
							
									Code    int    `json:"code"`    //200才是返回成功调用
							 | 
						|||
| 
								 | 
							
									Message string `json:"message"` //
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								type BaseCoinsMerchant struct {
							 | 
						|||
| 
								 | 
							
									Code    int             `json:"code"`    //200才是返回成功调用
							 | 
						|||
| 
								 | 
							
									Message string          `json:"message"` //
							 | 
						|||
| 
								 | 
							
									Data    []CoinsMerchant `json:"data"`    //
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//CoinsMerchant 商家持仓的币种信息
							 | 
						|||
| 
								 | 
							
								type CoinsMerchant struct {
							 | 
						|||
| 
								 | 
							
									MainCoinType string `json:"mainCoinType"` //主幣種類型
							 | 
						|||
| 
								 | 
							
									CoinType     string `json:"coinType"`     // 幣種類型
							 | 
						|||
| 
								 | 
							
									Symbol       string `json:"symbol"`       //BTC
							 | 
						|||
| 
								 | 
							
									Name         string `json:"name"`         //幣種別名,BTC
							 | 
						|||
| 
								 | 
							
									Logo         string `json:"logo"`         //幣種log地址
							 | 
						|||
| 
								 | 
							
									CoinName     string `json:"coinName"`     //幣種全稱,Bitcoin
							 | 
						|||
| 
								 | 
							
									MainSymbol   string `json:"mainSymbol"`   //主幣種單位
							 | 
						|||
| 
								 | 
							
									Decimals     string `json:"decimals"`     //幣種精度,8
							 | 
						|||
| 
								 | 
							
									TokenStatus  int    `json:"tokenStatus"`  //0: 主幣 1:代幣
							 | 
						|||
| 
								 | 
							
									Balance      int64  `json:"balance"`      //幣種余額
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								type BaseCoinAddress struct {
							 | 
						|||
| 
								 | 
							
									Code    int         `json:"code"`    //200才是返回成功调用
							 | 
						|||
| 
								 | 
							
									Message string      `json:"message"` //
							 | 
						|||
| 
								 | 
							
									Data    CoinAddress `json:"data"`    //
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//CoinAddress 地址返回
							 | 
						|||
| 
								 | 
							
								type CoinAddress struct {
							 | 
						|||
| 
								 | 
							
									CoinType int    `json:"coinType"` // 幣種類型
							 | 
						|||
| 
								 | 
							
									Address  string `json:"address"`  //地址
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								type CallBackBase struct {
							 | 
						|||
| 
								 | 
							
									TimeStamp int64       `json:"timestamp"`
							 | 
						|||
| 
								 | 
							
									Nonce     int         `json:"nonce"`
							 | 
						|||
| 
								 | 
							
									Sign      string      `json:"sign"`
							 | 
						|||
| 
								 | 
							
									Body      CallBackRes `json:"body"` //
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//CallBackRes 回调结构体
							 | 
						|||
| 
								 | 
							
								type CallBackRes struct {
							 | 
						|||
| 
								 | 
							
									Address      string `json:"address"`      //地址
							 | 
						|||
| 
								 | 
							
									Amount       string `json:"amount"`       //交易數量,根據幣種精度獲取實際金額,實際金額=amount/pow(10,decimals),即實際金額等於amount除以10的decimals次方
							 | 
						|||
| 
								 | 
							
									Fee          string `json:"fee"`          //礦工費,根據幣種精度獲取實際金額,實際金額獲取同上
							 | 
						|||
| 
								 | 
							
									Decimals     string `json:"decimals"`     //幣種精度
							 | 
						|||
| 
								 | 
							
									CoinType     string `json:"coinType"`     //子幣種編號,使用獲取商戶幣種信息接口
							 | 
						|||
| 
								 | 
							
									MainCoinType string `json:"mainCoinType"` //主幣種類型
							 | 
						|||
| 
								 | 
							
									BusinessId   string `json:"businessId"`   //業務編號,提幣回調時為提幣請求時傳入的,充幣回調無值
							 | 
						|||
| 
								 | 
							
									BlockHigh    string `json:"blockHigh"`    //區塊高度
							 | 
						|||
| 
								 | 
							
									TradeId      string `json:"tradeId"`      //業務流水號
							 | 
						|||
| 
								 | 
							
									TxId         string `json:"txid"`         //區塊鏈交易哈希
							 | 
						|||
| 
								 | 
							
									Memo         string `json:"memo"`         //備註,XRP和EOS,使用獲取商戶幣種信息接口,這2種類型幣的充提幣可能有值
							 | 
						|||
| 
								 | 
							
									Status       int    `json:"status"`       //狀態,0待審核,1審核成功,2審核駁回,3交易成功,4交易失敗
							 | 
						|||
| 
								 | 
							
									TradeType    int    `json:"tradeType"`    //交易類型,1充幣回調,2提幣回調
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								func getWithDrawMsg(code int) string {
							 | 
						|||
| 
								 | 
							
									msg := ""
							 | 
						|||
| 
								 | 
							
									switch code {
							 | 
						|||
| 
								 | 
							
									case 200:
							 | 
						|||
| 
								 | 
							
										msg = "提币成功"
							 | 
						|||
| 
								 | 
							
									case 523:
							 | 
						|||
| 
								 | 
							
										msg = "参数为空"
							 | 
						|||
| 
								 | 
							
									case 581:
							 | 
						|||
| 
								 | 
							
										msg = "无效的提币金额"
							 | 
						|||
| 
								 | 
							
									case 4005:
							 | 
						|||
| 
								 | 
							
										msg = "非法参数"
							 | 
						|||
| 
								 | 
							
									case 4034:
							 | 
						|||
| 
								 | 
							
										msg = "未找到该币种信息"
							 | 
						|||
| 
								 | 
							
									case 4162:
							 | 
						|||
| 
								 | 
							
										msg = "签名异常"
							 | 
						|||
| 
								 | 
							
									case 4163:
							 | 
						|||
| 
								 | 
							
										msg = "签名错误"
							 | 
						|||
| 
								 | 
							
									case 4169:
							 | 
						|||
| 
								 | 
							
										msg = "商户已被禁用"
							 | 
						|||
| 
								 | 
							
									case 4183:
							 | 
						|||
| 
								 | 
							
										msg = "到账地址异常"
							 | 
						|||
| 
								 | 
							
									case 4193:
							 | 
						|||
| 
								 | 
							
										msg = "EOS金额小数点后超过4位长度"
							 | 
						|||
| 
								 | 
							
									case 4214:
							 | 
						|||
| 
								 | 
							
										msg = "暂无可用的币种"
							 | 
						|||
| 
								 | 
							
									case 4226:
							 | 
						|||
| 
								 | 
							
										msg = "商户普通账户被禁用"
							 | 
						|||
| 
								 | 
							
									case 4261:
							 | 
						|||
| 
								 | 
							
										msg = "商户管理员账户被禁用"
							 | 
						|||
| 
								 | 
							
									case 4284:
							 | 
						|||
| 
								 | 
							
										msg = "商户不存在"
							 | 
						|||
| 
								 | 
							
									case 4288:
							 | 
						|||
| 
								 | 
							
										msg = "业务编号重复,请勿重复申请"
							 | 
						|||
| 
								 | 
							
									case 4598:
							 | 
						|||
| 
								 | 
							
										msg = "传入body中的list对象中的所有merchantId必须保持一致"
							 | 
						|||
| 
								 | 
							
									case 4001:
							 | 
						|||
| 
								 | 
							
										msg = "商户不存在"
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									return msg
							 | 
						|||
| 
								 | 
							
								}
							 |