base

package
v0.1.15 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 27, 2023 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ServiceMugglePay = "mugglepay"

	DispatcherMuggleCallback = "DispatcherMuggleCallback"
)
View Source
const (
	MuggleHeaderToken = "token"

	MugglePayStatusNEW     = "NEW"
	MugglePayStatusPENDING = "PENDING"

	MugglePayStatusFinalCANCELED = "CANCELED"
	MugglePayStatusFinalEXPIRED  = "EXPIRED"

	MugglePayStatusFinalUNRESOLVED = "UNRESOLVED"
	MugglePayStatusFinalRESOLVED   = "RESOLVED"

	MugglePayStatusFinalPAID     = "PAID"
	MugglePayStatusFinalREFUNDED = "REFUNDED"

	MugglePayCurrencyWechat       = "WECHAT"
	MugglePayCurrencyAlipay       = "ALIPAY"
	MugglePayCurrencyAlipayGlobal = "ALIGLOBAL"
	MugglePayCurrencyUSDT         = "USDT"
)
View Source
const (
	PaymentMiniProgram = "miniprogram"
	PaymentWechat      = "wechat"
	PaymentAlipay      = "alipay"
)
View Source
const (
	PaymentTypeWechatMiniProgram = PaymentMiniProgram
	PaymentTypeAlipayScan        = "alipay_scan"
	PaymentTypeAlipayPage        = "alipay_page"
	PaymentTypeAlipayWap         = "alipay_wap"
)
View Source
const (
	// 支付成功
	PaymentStatusSuccess = "success"

	// 转入退款
	PaymentStatusRefund = "refund"

	// 未支付
	PaymentStatusNotPay = "notpay"

	// 已关闭
	PaymentStatusClosed = "closed"

	// 已撤销
	PaymentStatusRevoked = "revoked"

	// 支付中
	PaymentStatusPaying = "paying"

	// 其他错误
	PaymentStatusUnKnown = "unknown"

	// 交易结束
	PaymentStatusFinished = "finished"
)
View Source
const (
	// 转账成功
	TransferStatusSuccess = "success"

	// 转账失败
	TransferStatusFailed = "failed"

	// 转账处理中
	TransferStatusProcessing = "processing"
)
View Source
const (
	// 退款成功
	RefundStatusSuccess = "success"

	// 退款处理中
	RefundStatusProcessing = "processing"

	// 退款关闭
	RefundStatusClosed = "closed"

	// 退款异常
	RefundStatusException = "exception"
)
View Source
const (
	ErrorUnknown = "ErrorUnknown"
)
View Source
const (
	PaymentNotifyLen = 4096
)
View Source
const (
	ServicePayment = "payment"
)

Variables

This section is empty.

Functions

func GetIPByHost

func GetIPByHost(host string, defaultIP string) string

Types

type BasePaymentProvider

type BasePaymentProvider struct {
	IPaymentProvider
	Endpoint   *PaymentEndpoint
	PaymentUrl string
	// contains filtered or unexported fields
}

func (*BasePaymentProvider) Close

func (s *BasePaymentProvider) Close(payment *Payment) error

func (*BasePaymentProvider) CreatePayment

func (s *BasePaymentProvider) CreatePayment(payment *Payment) (*CreatePaymentResp, error)

func (*BasePaymentProvider) GetNotifyController

func (s *BasePaymentProvider) GetNotifyController() *PaymentNotifyController

func (*BasePaymentProvider) GetPayment

func (s *BasePaymentProvider) GetPayment(query *PaymentQuery) (*PaymentNotify, error)

func (*BasePaymentProvider) GetReqIP

func (s *BasePaymentProvider) GetReqIP() string

func (*BasePaymentProvider) Init

func (s *BasePaymentProvider) Init(paymentUrl string, endpoint *PaymentEndpoint) error

func (*BasePaymentProvider) PostNotify

func (s *BasePaymentProvider) PostNotify(notify *PaymentNotify)

func (*BasePaymentProvider) QueryRefund

func (s *BasePaymentProvider) QueryRefund(query *QueryRefund) (*QueryRefundResp, error)

func (*BasePaymentProvider) QueryTransfer

func (s *BasePaymentProvider) QueryTransfer(query *QueryTransfer) (*QueryTransferResp, error)

func (*BasePaymentProvider) Refund

func (s *BasePaymentProvider) Refund(payment *Payment) error

func (*BasePaymentProvider) Release

func (s *BasePaymentProvider) Release()

func (*BasePaymentProvider) SetupNotify

func (s *BasePaymentProvider) SetupNotify(handler PaymentNotifyHandler)

func (*BasePaymentProvider) Transfer

func (s *BasePaymentProvider) Transfer(transfer *PaymentTransfer) error

type CreatePaymentResp

type CreatePaymentResp struct {
	Type       string `json:"type"`
	PrePayID   string `json:"prepay_id"`
	TimeStamp  int64  `json:"timestamp"`
	NonceStr   string `json:"nonce_str"`
	SignType   string `json:"sign_type"`
	Sign       string `json:"sign"`
	PaymentUrl string `json:"payment_url"`
}

type IPaymentProvider

type IPaymentProvider interface {
	Init(paymentUrl string, endpoint *PaymentEndpoint) error

	Release()

	// 创建支付(下单)
	CreatePayment(payment *Payment) (*CreatePaymentResp, error)

	// 订单查询
	GetPayment(query *PaymentQuery) (*PaymentNotify, error)

	// 转账给个人
	Transfer(transfer *PaymentTransfer) error

	// 转账查询
	QueryTransfer(query *QueryTransfer) (*QueryTransferResp, error)

	// 退款
	Refund(payment *Payment) error

	// 退款查询
	QueryRefund(query *QueryRefund) (*QueryRefundResp, error)

	// 关闭订单
	Close(payment *Payment) error

	// 通知回调
	SetupNotify(handler PaymentNotifyHandler)

	GetNotifyController() *PaymentNotifyController
}

type ISerivceMuggle

type ISerivceMuggle interface {
	CreateOrder(req *MuggleReqOrder) (*MuggleRespOrderCreate, error)
	GetOrder(orderID string) (*MuggleRespOrderCreate, error)
}

type IServicePayment

type IServicePayment interface {
	CreatePayment(endpoint string, payment *Payment) (*CreatePaymentResp, error)
	GetPayment(endpoint string, query *PaymentQuery) (*PaymentNotify, error)
	Transfer(endpoint string, transfer *PaymentTransfer) error
	QueryTransfer(endpoint string, query *QueryTransfer) (*QueryTransferResp, error)
	Refund(endpoint string, payment *Payment) error
	QueryRefund(endpoint string, query *QueryRefund) (*QueryRefundResp, error)
	ClosePayment(endpoint string, payment *Payment) error
}

type MuggleReqOrder

type MuggleReqOrder struct {
	// 用户订单id
	MerchantOrderID string `json:"merchant_order_id"`

	// 必填
	PriceAmount float64 `json:"price_amount"`

	// 必填
	PriceCurrency string `json:"price_currency"`

	// 支付渠道
	PayCurrency string `json:"pay_currency"`

	// 支付结果回调
	CallbackUrl string `json:"callback_url"`

	// 取消支付跳转链接
	CancelUrl string `json:"cancel_url"`

	// 支付成功跳转链接
	SuccessUrl string `json:"success_url"`

	// 用户支付结果回调时的验证token
	Token string `json:"token"`

	// 支付标题
	Title string `json:"title"`

	// 支付描述
	Description string `json:"description"`

	// Based on PC or Mobile Wap, we provide different links, for Alipay / Alipay Global / Wechat only.
	Mobile bool `json:"mobile"`

	// Return the payment url directly, for Alipay / Alipay Global / Wechat only.
	Fast bool `json:"fast"`
}

type MuggleRespBase

type MuggleRespBase struct {
	Status    int    `json:"status"`
	Error     string `json:"error"`
	ErrorCode string `json:"error_code"`
}

type MuggleRespOrder

type MuggleRespOrder struct {
	MuggleReqOrder
	OrderID string `json:"order_id"`
	Status  string `json:"status"`
}

type MuggleRespOrderCreate

type MuggleRespOrderCreate struct {
	MuggleRespBase

	PaymentUrl string           `json:"payment_url"`
	Order      *MuggleRespOrder `json:"order"`
}

type Payment

type Payment struct {
	AppKey   string  `json:"app_key"`
	Type     string  `json:"type"`
	TradeNo  string  `json:"trade_no"`
	Desc     string  `json:"desc"`
	TotalFee float32 `json:"total_fee"`

	// 退款时使用,如果为0则表示全额退款
	RefundFee int `json:"refund_fee"`

	OpenID string `json:"openid"`

	ReturnUrl string `json:"return_url"`
}

type PaymentEndpoint

type PaymentEndpoint struct {
	Provider  string `yaml:"provider"`
	MchKey    string `yaml:"mch_key"`
	MchSecret string `yaml:"mch_secret"`
	CertFile  string `yaml:"cert_file"`
	KeyFile   string `yaml:"key_file"`
}

type PaymentNotify

type PaymentNotify struct {
	TradeNo string
	Status  string
	Msg     string
}

type PaymentNotifyController

type PaymentNotifyController struct {
	Method   string
	Endpoint string
	Handler  context.Handler
}

type PaymentNotifyHandler

type PaymentNotifyHandler func(notify *PaymentNotify)

type PaymentQuery

type PaymentQuery struct {
	TradeNo string `json:"trade_no"`
	AppKey  string `json:"app_key"`
}

type PaymentTransfer

type PaymentTransfer struct {
	AppKey   string `json:"app_key"`
	OpenID   string `json:"openid"`
	TotalFee int    `json:"total_fee"`
	Desc     string `json:"desc"`
	TradeNo  string `json:"trade_no"`
}

type QueryRefund

type QueryRefund struct {
	AppKey  string `json:"app_key"`
	TradeNo string `json:"trade_no"`
}

type QueryRefundResp

type QueryRefundResp struct {
	Status string `json:"status"`
	Reason string `json:"reason"`
}

type QueryTransfer

type QueryTransfer struct {
	AppKey  string `json:"app_key"`
	TradeNo string `json:"trade_no"`
}

type QueryTransferResp

type QueryTransferResp struct {
	Status string `json:"status"`
	Reason string `json:"reason"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL