Documentation
¶
Index ¶
- Constants
- func CreateMerchantOrder(c *gin.Context)
- func GenerateSignature(params map[string]string, secret string) string
- func GetPaymentPageDetails(c *gin.Context)
- func HandleMerchantPaymentNotify(ctx context.Context, t *asynq.Task) error
- func HandleParseOrderNoError(c *gin.Context, err error) bool
- func MerchantDistribute(c *gin.Context)
- func PayMerchantOrder(c *gin.Context)
- func QueryMerchantOrder(c *gin.Context)
- func RefundMerchantOrder(c *gin.Context)
- func RequireMerchantAuth() gin.HandlerFunc
- func RequireSignatureAuth() gin.HandlerFunc
- func Transfer(c *gin.Context)
- type CreateOrderRequest
- type EPayRequest
- type GetOrderRequest
- type GetOrderResponse
- type MerchantDistributeRequest
- type MerchantInfo
- type OrderContext
- type PayOrderRequest
- type QueryMerchantOrderResponse
- type QueryOrderRequest
- type RefundMerchantOrderResponse
- type RefundOrderRequest
- type TransferRequest
Constants ¶
const ( APIKeyObjKey = "payment_api_key_obj" CreateOrderRequestKey = "payment_create_order_request" )
const ( // OrderMerchantIDCacheKeyFormat Redis key 格式,用于存储订单号对应的商户ID OrderMerchantIDCacheKeyFormat = "payment:order:%s" // OrderExpireKeyFormat Redis key 格式,用于订单过期监听,key中包含订单ID OrderExpireKeyFormat = "payment:order:expire:%d" )
const ( OrderNotFound = "订单不存在或已完成" OrderStatusInvalid = "订单状态不允许支付" OrderExpired = "订单已过期" MerchantInfoNotFound = "商户信息不存在" RecipientNotFound = "收款人不存在" OrderNoFormatError = "订单号格式错误" CannotTransferToSelf = "不能转账给自己" PayConfigNotFound = "支付配置不存在" )
Variables ¶
This section is empty.
Functions ¶
func CreateMerchantOrder ¶
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 ¶
GenerateSignature 生成MD5签名
func GetPaymentPageDetails ¶
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 ¶
HandleMerchantPaymentNotify 处理商户支付回调任务
func HandleParseOrderNoError ¶
HandleParseOrderNoError 处理 ParseOrderNo 返回的错误,返回对应的 HTTP 响应
func MerchantDistribute ¶
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 ¶
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 ¶
QueryMerchantOrder 商户主动查询订单状态接口 @Tags payment @Accept json @Produce json @Param request query QueryOrderRequest true "查询参数" @Success 200 {object} QueryMerchantOrderResponse @Router /api.php [get]
func RefundMerchantOrder ¶
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)
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 转账请求