Versions in this module Expand all Collapse all v0 v0.1.3 Aug 20, 2020 Changes in this version + const URLBaseDefault + const URLBaseHK + const URLBaseUS + var DefaultOptions = &Options + var ErrCloseOrderMissingOutTradeNo = errors.New("Missing out_trade_no in CloseOrderRequest") + var ErrOrderQueryMissingID = errors.New("Missing transaction_id/out_trade_no in OrderQueryRequest") + var ErrOrderQueryNoBankType = errors.New("No bank_type is returned from OrderQueryResponse") + var ErrOrderQueryNoCashFee = errors.New("No cash_fee is returned from OrderQueryResponse") + var ErrOrderQueryNoOpenID = errors.New("No openid is returned from OrderQueryResponse") + var ErrOrderQueryNoOutTradeNo = errors.New("No out_trade_no is returned from OrderQueryResponse") + var ErrOrderQueryNoTimeEnd = errors.New("No time_end is returned from OrderQueryResponse") + var ErrOrderQueryNoTotalFee = errors.New("No total_fee is returned from OrderQueryResponse") + var ErrOrderQueryNoTradeState = errors.New("No trade_state is returned from OrderQueryResponse") + var ErrOrderQueryNoTradeType = errors.New("No trade_type is returned from OrderQueryResponse") + var ErrOrderQueryNoTransactionID = errors.New("No transaction_id is returned from OrderQueryResponse") + var ErrRefundMissingID = errors.New("Missing transaction_id/out_trade_no in RefundRequest") + var ErrRefundMissingOutRefundNo = errors.New("Missing out_refund_no in RefundRequest") + var ErrRefundMissingRefundFee = errors.New("Missing refund_fee in RefundRequest") + var ErrRefundMissingTotalFee = errors.New("Missing total_fee in RefundRequest") + var ErrRefundNoCashFee = errors.New("No cash_fee is returned from RefundResponse") + var ErrRefundNoCashRefundFee = errors.New("No cash_refund_fee is returned from RefundResponse") + var ErrRefundNoOutRefundNo = errors.New("No out_refund_no is returned from RefundResponse") + var ErrRefundNoOutTradeNo = errors.New("No out_trade_no is returned from RefundResponse") + var ErrRefundNoRefundFee = errors.New("No refund_fee is returned from RefundResponse") + var ErrRefundNoRefundID = errors.New("No refund_id is returned from RefundResponse") + var ErrRefundNoTotalFee = errors.New("No total_fee is returned from RefundResponse") + var ErrRefundNoTransactionID = errors.New("No transaction_id is returned from RefundResponse") + var ErrRefundQueryMissingID = errors.New(...) + var ErrRefundQueryNoCashFee = errors.New("No cash_fee is returned from RefundQueryResponse") + var ErrRefundQueryNoOutTradeNo = errors.New("No out_trade_no is returned from RefundQueryResponse") + var ErrRefundQueryNoRefundCount = errors.New("No refund_count is returned from RefundQueryResponse") + var ErrRefundQueryNoTotalFee = errors.New("No total_fee is returned from RefundQueryResponse") + var ErrRefundQueryNoTransactionID = errors.New("No transaction_id is returned from RefundQueryResponse") + var ErrUnifiedOrderBadTradeType = errors.New("Bad trade_type is returned from UnifiedOrderResponse") + var ErrUnifiedOrderMissingBody = errors.New("Missing body in UnifiedOrderRequest") + var ErrUnifiedOrderMissingNotifyUrl = errors.New("Missing notify_url in UnifiedOrderRequest") + var ErrUnifiedOrderMissingOpenID = errors.New("Missing openid in UnifiedOrderRequest since trade_type is JSAPI") + var ErrUnifiedOrderMissingOutTradeNo = errors.New("Missing out_trade_no in UnifiedOrderRequest") + var ErrUnifiedOrderMissingTotalFee = errors.New("Missing total_fee in UnifiedOrderRequest") + var ErrUnifiedOrderMissingTradeType = errors.New("Missing trade_type in UnifiedOrderRequest") + var ErrUnifiedOrderNoCodeUrl = errors.New("No code_url is returned from UnifiedOrderResponse") + var ErrUnifiedOrderNoMWebUrl = errors.New("No mweb_url is returned from UnifiedOrderResponse") + var ErrUnifiedOrderNoPrepayID = errors.New("No prepay_id is returned from UnifiedOrderResponse") + var RefundStatusCHANGE = RefundStatus + var RefundStatusInvalid = RefundStatus + var RefundStatusPROCESSING = RefundStatus + var RefundStatusREFUNDCLOSE = RefundStatus + var RefundStatusSUCCESS = RefundStatus + var SignTypeHMACSHA256 = SignType + var SignTypeInvalid = SignType + var SignTypeMD5 = SignType + var TradeStateCLOSED = TradeState + var TradeStateInvalid = TradeState + var TradeStateNOTPAY = TradeState + var TradeStatePAYERROR = TradeState + var TradeStateREFUND = TradeState + var TradeStateREVOKED = TradeState + var TradeStateSUCCESS = TradeState + var TradeStateUSERPAYING = TradeState + var TradeTypeAPP = TradeType + var TradeTypeInvalid = TradeType + var TradeTypeJSAPI = TradeType + var TradeTypeMWEB = TradeType + var TradeTypeNATIVE = TradeType + func CloseOrder(ctx context.Context, config conf.MchConfig, req *CloseOrderRequest, ...) error + func HandleMchXML(handler func(context.Context, MchXML) error, options *Options) http.Handler + func HandleSignedMchXML(handler func(context.Context, MchXML) error, selector conf.MchConfigSelector, ...) http.Handler + func JSReq(config conf.MchConfig, prepayID string) map[string]string + func JSReqEx(config conf.MchConfig, prepayID string, signType SignType) map[string]string + func OrderNotify(handler func(context.Context, *OrderQueryResponse) error, ...) http.Handler + func RefundNotify(handler func(context.Context, *RefundQueryResponse) error, ...) http.Handler + func SignMchXML(x MchXML, signType SignType, mchKey string) string + type CloseOrderRequest struct + OutTradeNo string + type MchBusinessError struct + ErrCode string + ErrCodeDes string + ResultCode string + func (err *MchBusinessError) Error() string + type MchXML map[string]string + func DecryptMchXML(mchKey string, cipherText string) (MchXML, error) + func PostMchXML(ctx context.Context, config conf.MchConfig, path string, reqXML MchXML, ...) (MchXML, error) + func (x MchXML) MarshalXML(e *xml.Encoder, start xml.StartElement) error + func (x MchXML) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error + type Option func(*Options) error + func UseClient(client utils.HTTPClient) Option + func UseMiddleware(middleware func(http.Handler) http.Handler) Option + func UseSignType(signType SignType) Option + func UseURLBase(urlBase string) Option + type Options struct + func MustOptions(opts ...Option) *Options + func NewOptions(opts ...Option) (*Options, error) + func (options *Options) Client() utils.HTTPClient + func (options *Options) Middleware() func(http.Handler) http.Handler + func (options *Options) SignType() SignType + func (options *Options) URLBase() string + type OrderQueryRequest struct + OutTradeNo string + TransactionID string + type OrderQueryResponse struct + Attach string + BankType string + CashFee uint64 + CashFeeType string + DeviceInfo string + FeeType string + IsSubscribe string + MchXML MchXML + OpenID string + OutTradeNo string + Rate uint64 + TimeEnd time.Time + TotalFee uint64 + TradeState TradeState + TradeStateDesc string + TradeType TradeType + TransactionID string + func OrderQuery(ctx context.Context, config conf.MchConfig, req *OrderQueryRequest, ...) (*OrderQueryResponse, error) + type RefundInfo struct + OutRefundNo string + RefundAccount string + RefundChannel string + RefundFee uint64 + RefundID string + RefundRecvAccout string + RefundStatus RefundStatus + RefundSuccessTime time.Time + type RefundQueryRequest struct + Offset uint + OutRefundNo string + OutTradeNo string + RefundID string + TransactionID string + type RefundQueryResponse struct + CashFee uint64 + CashFeeType string + FeeType string + MchXML MchXML + OutTradeNo string + Rate uint64 + RefundCount uint64 + Refunds []RefundInfo + TotalFee uint64 + TotalRefundCount uint64 + TransactionID string + func RefundQuery(ctx context.Context, config conf.MchConfig, req *RefundQueryRequest, ...) (*RefundQueryResponse, error) + type RefundRequest struct + NotifyUrl string + OutRefundNo string + OutTradeNo string + RefundDesc string + RefundFee uint64 + RefundFeeType string + TotalFee uint64 + TransactionID string + type RefundResponse struct + CashFee uint64 + CashFeeType string + CashRefundFee uint64 + CashRefundFeeType string + FeeType string + MchXML MchXML + OutRefundNo string + OutTradeNo string + Rate uint64 + RefundFee uint64 + RefundFeeType string + RefundID string + TotalFee uint64 + TransactionID string + func Refund(ctx context.Context, config conf.MchConfig, req *RefundRequest, opts ...Option) (*RefundResponse, error) + type RefundStatus struct + func ParseRefundStatus(v string) RefundStatus + func (rs RefundStatus) IsValid() bool + func (rs RefundStatus) String() string + type SignType struct + func ParseSignType(v string) SignType + func (st SignType) IsValid() bool + func (st SignType) String() string + type TradeState struct + func ParseTradeState(v string) TradeState + func (ts TradeState) IsValid() bool + func (ts TradeState) String() string + type TradeType struct + func ParseTradeType(v string) TradeType + func (tt TradeType) IsValid() bool + func (tt TradeType) String() string + type UnifiedOrderRequest struct + Attach string + Body string + Detail string + DeviceInfo string + FeeType string + GoodsTag string + LimitPay string + NotifyUrl string + OpenID string + OutTradeNo string + ProductID string + SpbillCreateIp string + TimeExpire time.Time + TimeStart time.Time + TotalFee uint64 + TradeType TradeType + type UnifiedOrderResponse struct + CodeUrl string + DeviceInfo string + MWebUrl string + MchXML MchXML + PrepayID string + TradeType TradeType + func UnifiedOrder(ctx context.Context, config conf.MchConfig, req *UnifiedOrderRequest, ...) (*UnifiedOrderResponse, error)