payment

package
v1.2.0-RELEASE Latest Latest
Warning

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

Go to latest
Published: Jan 7, 2026 License: Apache-2.0 Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const (
	APIKeyObjKey          = "payment_api_key_obj"
	CreateOrderRequestKey = "payment_create_order_request"
)
View Source
const (
	// OrderMerchantIDCacheKeyFormat Redis key 格式,用于存储订单号对应的商户ID
	OrderMerchantIDCacheKeyFormat = "payment:order:%s"
	// OrderExpireKeyFormat Redis key 格式,用于订单过期监听,key中包含订单ID
	OrderExpireKeyFormat = "payment:order:expire:%d"
)
View Source
const (
	OrderNotFound        = "订单不存在或已完成"
	OrderStatusInvalid   = "订单状态不允许支付"
	OrderExpired         = "订单已过期"
	MerchantInfoNotFound = "商户信息不存在"
	RecipientNotFound    = "收款人不存在"
	OrderNoFormatError   = "订单号格式错误"
	CannotTransferToSelf = "不能转账给自己"
	PayConfigNotFound    = "支付配置不存在"
)

Variables

This section is empty.

Functions

func CreateMerchantOrder

func CreateMerchantOrder(c *gin.Context)

CreateMerchantOrder 商户创建订单接口 @Tags payment @Accept x-www-form-urlencoded @Produce json @Param request body CreateOrderRequest true "request body" @Success 200 {object} util.ResponseAny @Router /pay/submit.php [post] @Router /pay/submit.php [get]

func GenerateSignature

func GenerateSignature(params map[string]string, secret string) string

GenerateSignature 生成MD5签名

func GetPaymentPageDetails

func GetPaymentPageDetails(c *gin.Context)

GetPaymentPageDetails 查询支付订单信息接口(用于收银台页面) @Tags payment @Accept json @Produce json @Param order_no query string true "订单号" @Success 200 {object} util.ResponseAny @Router /api/v1/merchant/payment/order [get]

func HandleMerchantPaymentNotify

func HandleMerchantPaymentNotify(ctx context.Context, t *asynq.Task) error

HandleMerchantPaymentNotify 处理商户支付回调任务

func HandleParseOrderNoError

func HandleParseOrderNoError(c *gin.Context, err error) bool

HandleParseOrderNoError 处理 ParseOrderNo 返回的错误,返回对应的 HTTP 响应

func MerchantDistribute

func MerchantDistribute(c *gin.Context)

MerchantDistribute 商户分发接口(商户向用户分发) @Tags payment @Accept json @Produce json @Param Authorization header string true "Basic Auth (base64(client_id:client_secret))" @Param request body MerchantDistributeRequest true "分发请求" @Success 200 {object} util.ResponseAny @Router /pay/distribute [post]

func PayMerchantOrder

func PayMerchantOrder(c *gin.Context)

PayMerchantOrder 用户支付订单接口 @Tags payment @Accept json @Produce json @Param request body PayOrderRequest true "支付订单请求" @Success 200 {object} util.ResponseAny @Router /api/v1/merchant/payment [post]

func QueryMerchantOrder

func QueryMerchantOrder(c *gin.Context)

QueryMerchantOrder 商户主动查询订单状态接口 @Tags payment @Accept json @Produce json @Param request query QueryOrderRequest true "查询参数" @Success 200 {object} QueryMerchantOrderResponse @Router /api.php [get]

func RefundMerchantOrder

func RefundMerchantOrder(c *gin.Context)

RefundMerchantOrder 商户退款接口 @Tags payment @Accept json @Produce json @Param request body RefundOrderRequest true "退款请求" @Success 200 {object} RefundMerchantOrderResponse @Router /api.php [post]

func RequireMerchantAuth

func RequireMerchantAuth() gin.HandlerFunc

RequireMerchantAuth 验证商户 ClientID/ClientSecret(Basic Auth)

func RequireSignatureAuth

func RequireSignatureAuth() gin.HandlerFunc

RequireSignatureAuth 验证签名

func Transfer

func Transfer(c *gin.Context)

Transfer 用户转账接口 @Tags payment @Accept json @Produce json @Param request body TransferRequest true "转账请求" @Success 200 {object} util.ResponseAny @Router /api/v1/payment/transfer [post]

Types

type CreateOrderRequest

type CreateOrderRequest struct {
	OrderName       string          `json:"order_name" binding:"required,max=64"`
	MerchantOrderNo *string         `json:"merchant_order_no" binding:"omitempty,min=1,max=64"`
	Amount          decimal.Decimal `json:"amount" binding:"required"`
	Remark          string          `json:"remark" binding:"max=100"`
	PaymentType     string          `json:"payment_type"`
}

CreateOrderRequest 商户创建订单统一请求

func VerifySignature

func VerifySignature(c *gin.Context, apiKey *model.MerchantAPIKey) (*CreateOrderRequest, error)

VerifySignature 验证MD5签名

type EPayRequest

type EPayRequest struct {
	ClientID        string          `form:"pid" binding:"required"`
	OrderName       string          `form:"name" binding:"required,max=64"`
	MerchantOrderNo *string         `form:"out_trade_no" binding:"required,min=1,max=64"`
	Amount          decimal.Decimal `form:"money" binding:"required"`
	NotifyURL       string          `form:"notify_url"`
	ReturnURL       string          `form:"return_url"`
	Device          string          `form:"device"`
	Sign            string          `form:"sign" binding:"required"`
	PayType         string          `form:"type" binding:"required"`
	SignType        string          `form:"sign_type"`
}

EPayRequest 易支付请求

func (*EPayRequest) ToCreateOrderRequest

func (r *EPayRequest) ToCreateOrderRequest() *CreateOrderRequest

ToCreateOrderRequest 转换为通用创建订单请求

type GetOrderRequest

type GetOrderRequest struct {
	OrderNo string `form:"order_no" json:"order_no" binding:"required"`
}

GetOrderRequest 查询订单请求

type GetOrderResponse

type GetOrderResponse struct {
	Order    *model.Order    `json:"order"`
	FeeRate  decimal.Decimal `json:"fee_rate"`
	Merchant MerchantInfo    `json:"merchant"`
}

GetOrderResponse 查询订单响应

type MerchantDistributeRequest

type MerchantDistributeRequest struct {
	RecipientID       uint64          `json:"user_id" binding:"required"`
	RecipientUsername string          `json:"username" binding:"required"`
	Amount            decimal.Decimal `json:"amount" binding:"required"`
	MerchantOrderNo   *string         `json:"out_trade_no" binding:"omitempty,min=1,max=64"`
	Remark            string          `json:"remark" binding:"max=100"`
}

MerchantDistributeRequest 商户分发请求

type MerchantInfo

type MerchantInfo struct {
	AppName     string `json:"app_name"`
	RedirectURI string `json:"redirect_uri"`
}

MerchantInfo 商户信息

type OrderContext

type OrderContext struct {
	OrderID           uint64
	MerchantUser      *model.User
	CurrentUser       *model.User
	PayerPayConfig    *model.UserPayConfig
	MerchantPayConfig *model.UserPayConfig
	MerchantAPIKey    *model.MerchantAPIKey
}

OrderContext 订单上下文信息

func ParseOrderNo

func ParseOrderNo(c *gin.Context, orderNo string) (*OrderContext, error)

ParseOrderNo 解析订单号,获取订单上下文信息

type PayOrderRequest

type PayOrderRequest struct {
	OrderNo string `json:"order_no" binding:"required"`
	PayKey  string `json:"pay_key" binding:"required,max=6"`
}

PayOrderRequest 用户支付订单请求

type QueryMerchantOrderResponse

type QueryMerchantOrderResponse struct {
	Code       int    `json:"code" example:"1"`
	Msg        string `json:"msg" example:"查询订单号成功!"`
	TradeNo    string `json:"trade_no" example:"123456"`
	OutTradeNo string `json:"out_trade_no" example:"M202312080001"`
	Type       string `json:"type" example:"epay"`
	Pid        string `json:"pid" example:"1001"`
	AddTime    string `json:"addtime" example:"2023-12-08 12:00:00"`
	EndTime    string `json:"endtime" example:"2023-12-08 12:05:00"`
	Name       string `json:"name" example:"商品名称"`
	Money      string `json:"money" example:"10.00"`
	Status     int    `json:"status" example:"1"`
}

QueryMerchantOrderResponse 查询订单响应

type QueryOrderRequest

type QueryOrderRequest struct {
	Act             string  `form:"act" json:"act"`
	ClientID        string  `form:"pid" json:"pid" binding:"required"`
	ClientSecret    string  `form:"key" json:"key" binding:"required"`
	MerchantOrderNo *string `form:"out_trade_no" json:"out_trade_no" binding:"required,min=1,max=64"`
}

QueryOrderRequest 商户查询订单请求

type RefundMerchantOrderResponse

type RefundMerchantOrderResponse struct {
	Code int    `json:"code" example:"1"`
	Msg  string `json:"msg" example:"退款成功"`
}

RefundMerchantOrderResponse 退款响应

type RefundOrderRequest

type RefundOrderRequest struct {
	ClientID        string          `form:"pid" json:"pid" binding:"required"`
	ClientSecret    string          `form:"key" json:"key" binding:"required"`
	MerchantOrderNo string          `form:"out_trade_no" json:"out_trade_no"`
	TradeNo         uint64          `form:"trade_no" json:"trade_no" binding:"required"`
	Amount          decimal.Decimal `form:"money" json:"money" binding:"required"`
}

RefundOrderRequest 商户退款请求

type TransferRequest

type TransferRequest struct {
	RecipientID       uint64          `json:"recipient_id,string" binding:"required"`
	RecipientUsername string          `json:"recipient_username" binding:"required"`
	Amount            decimal.Decimal `json:"amount" binding:"required"`
	PayKey            string          `json:"pay_key" binding:"required,max=6"`
	Remark            string          `json:"remark" binding:"max=100"`
}

TransferRequest 转账请求

Jump to

Keyboard shortcuts

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