添加文件: hb/errors.go
This commit is contained in:
parent
91d9552172
commit
189ffc83fc
|
|
@ -0,0 +1,78 @@
|
|||
package hb
|
||||
|
||||
import "fmt"
|
||||
|
||||
// Error 自定义错误类型
|
||||
type Error struct {
|
||||
Code string `json:"code"`
|
||||
Message string `json:"message"`
|
||||
Err error `json:"-"`
|
||||
}
|
||||
|
||||
func (e *Error) Error() string {
|
||||
if e.Err != nil {
|
||||
return fmt.Sprintf("[%s] %s: %v", e.Code, e.Message, e.Err)
|
||||
}
|
||||
return fmt.Sprintf("[%s] %s", e.Code, e.Message)
|
||||
}
|
||||
|
||||
func (e *Error) Unwrap() error {
|
||||
return e.Err
|
||||
}
|
||||
|
||||
// NewError 创建新的错误
|
||||
func NewError(code, message string, err error) *Error {
|
||||
return &Error{
|
||||
Code: code,
|
||||
Message: message,
|
||||
Err: err,
|
||||
}
|
||||
}
|
||||
|
||||
// 预定义错误
|
||||
var (
|
||||
ErrSignTypeInvalid = NewError("SIGN_TYPE_INVALID", "不支持的签名方式,仅支持 MD5 或 RSA", nil)
|
||||
ErrSignVerifyFailed = NewError("SIGN_VERIFY_FAILED", "签名验证失败", nil)
|
||||
ErrPrivateKeyInvalid = NewError("PRIVATE_KEY_INVALID", "私钥格式无效", nil)
|
||||
ErrPublicKeyInvalid = NewError("PUBLIC_KEY_INVALID", "公钥格式无效", nil)
|
||||
ErrNetwork = NewError("NETWORK_ERROR", "网络请求失败", nil)
|
||||
ErrResponseParse = NewError("RESPONSE_PARSE_ERROR", "响应解析失败", nil)
|
||||
ErrMerchantIdEmpty = NewError("MERCHANT_ID_EMPTY", "商户编号不能为空", nil)
|
||||
ErrSignKeyEmpty = NewError("SIGN_KEY_EMPTY", "商户密钥不能为空", nil)
|
||||
ErrRequestIdEmpty = NewError("REQUEST_ID_EMPTY", "商户请求号不能为空", nil)
|
||||
ErrOrderIdEmpty = NewError("ORDER_ID_EMPTY", "商户订单号不能为空", nil)
|
||||
ErrAmountEmpty = NewError("AMOUNT_EMPTY", "退款金额不能为空", nil)
|
||||
)
|
||||
|
||||
// 错误码映射
|
||||
var ErrorCodeMap = map[string]string{
|
||||
"C01088": "退货金额域非法",
|
||||
"C01081": "产品名称域越界",
|
||||
"C01033": "产品名称域为空",
|
||||
"C01030": "有效期单位域不合法",
|
||||
"C01028": "有效期数量域为0",
|
||||
"C01027": "有效期数量域为空",
|
||||
"C01025": "订单日期域不合法",
|
||||
"C01024": "订单日期域为空",
|
||||
"C01019": "币种域取值不合法",
|
||||
"C01018": "币种域为空",
|
||||
"C01014": "订单金额域为空",
|
||||
"D99981": "订单已过期",
|
||||
"D23190": "退款日期超过最大有效期",
|
||||
"D22407": "退款金额大于可退款金额",
|
||||
"D22401": "退货金额大于可退货金额",
|
||||
"D22208": "订单状态异常",
|
||||
"D22201": "订单不存在",
|
||||
"D22224": "账户支付方式不正确",
|
||||
"D77040": "商户没有开通此类交易的权限",
|
||||
"IPS0008": "签名不符,一般都是由于中文编码引起",
|
||||
"IPS0001": "一般都是因为商户编号或者密钥不对引起",
|
||||
}
|
||||
|
||||
// GetErrorDescription 根据错误码获取错误描述
|
||||
func GetErrorDescription(code string) string {
|
||||
if desc, ok := ErrorCodeMap[code]; ok {
|
||||
return desc
|
||||
}
|
||||
return "未知错误码"
|
||||
}
|
||||
Loading…
Reference in New Issue