wepay

package
v1.4.8 Latest Latest
Warning

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

Go to latest
Published: Mar 20, 2026 License: MIT Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Fail                        = "FAIL"
	Success                     = "SUCCESS"
	HMACSHA256                  = "HMAC-SHA256"
	MD5                         = "MD5"
	Sign                        = "sign"
	MicroPayUrl                 = "https://api.mch.weixin.qq.com/pay/micropay"
	UnifiedOrderUrl             = "https://api.mch.weixin.qq.com/pay/unifiedorder"
	OrderQueryUrl               = "https://api.mch.weixin.qq.com/pay/orderquery"
	ReverseUrl                  = "https://api.mch.weixin.qq.com/secapi/pay/reverse"
	CloseOrderUrl               = "https://api.mch.weixin.qq.com/pay/closeorder"
	RefundUrl                   = "https://api.mch.weixin.qq.com/secapi/pay/refund"
	RefundQueryUrl              = "https://api.mch.weixin.qq.com/pay/refundquery"
	DownloadBillUrl             = "https://api.mch.weixin.qq.com/pay/downloadbill"
	ReportUrl                   = "https://api.mch.weixin.qq.com/payitil/report"
	ShortUrl                    = "https://api.mch.weixin.qq.com/tools/shorturl"
	AuthCodeToOpenidUrl         = "https://api.mch.weixin.qq.com/tools/authcodetoopenid"
	ProfitSharingUrl            = "https://api.mch.weixin.qq.com/secapi/pay/profitsharing"       //请求单次分账
	MultiProfitSharingUrl       = "https://api.mch.weixin.qq.com/secapi/pay/multiprofitsharing"  //请求多次分账
	ProfitSharingFinishUrl      = "https://api.mch.weixin.qq.com/secapi/pay/profitsharingfinish" //完结分账
	ProfitSharingQueryUrl       = "https://api.mch.weixin.qq.com/pay/profitsharingquery"         //查询分账结果
	ProfitSharingReturnUrl      = "https://api.mch.weixin.qq.com/secapi/pay/profitsharingreturn" //分账回退
	ProfitSharingReturnQueryUrl = "https://api.mch.weixin.qq.com/pay/profitsharingreturnquery"   //分账回退结果查询
	SandboxMicroPayUrl          = "https://api.mch.weixin.qq.com/sandboxnew/pay/micropay"
	SandboxUnifiedOrderUrl      = "https://api.mch.weixin.qq.com/sandboxnew/pay/unifiedorder"
	SandboxOrderQueryUrl        = "https://api.mch.weixin.qq.com/sandboxnew/pay/orderquery"
	SandboxReverseUrl           = "https://api.mch.weixin.qq.com/sandboxnew/secapi/pay/reverse"
	SandboxCloseOrderUrl        = "https://api.mch.weixin.qq.com/sandboxnew/pay/closeorder"
	SandboxRefundUrl            = "https://api.mch.weixin.qq.com/sandboxnew/secapi/pay/refund"
	SandboxRefundQueryUrl       = "https://api.mch.weixin.qq.com/sandboxnew/pay/refundquery"
	SandboxDownloadBillUrl      = "https://api.mch.weixin.qq.com/sandboxnew/pay/downloadbill"
	SandboxReportUrl            = "https://api.mch.weixin.qq.com/sandboxnew/payitil/report"
	SandboxShortUrl             = "https://api.mch.weixin.qq.com/sandboxnew/tools/shorturl"
	SandboxAuthCodeToOpenidUrl  = "https://api.mch.weixin.qq.com/sandboxnew/tools/authcodetoopenid"
)

常量

Variables

View Source
var (
	//RandChar 随机字串
	RandChar = []byte("abcdefghijklmnopqrstuvwxyz0123456789")
	//RandCharLen 随机字串长度
	RandCharLen int32 = 36
	//TradeNumStr 商户订单号前缀
	TradeNumStr = "WX"
)

Functions

func MapToXML

func MapToXML(params Params) string

MapToXML MapToXML 使用mxj第三方库,转换map2xml

Types

type AppPayResp

type AppPayResp struct {
	AppID     string `json:"appid"`     //appid
	PartnerID string `json:"partnerid"` //商户ID
	PrepayID  string `json:"prepayid"`  //prepayid
	Package   string `json:"package"`   //package
	NonceStr  string `json:"noncestr"`  //随机字串
	Timestamp string `json:"timestamp"` //时间
	Sign      string `json:"sign"`      //签名
}

AppPayResp App支付时,返回的结构体 包括prepayID和Sign等其他信息

type AppletPayResp

type AppletPayResp struct {
	Timestamp string `json:"timeStamp"` //时间
	NonceStr  string `json:"nonceStr"`  //随机字串
	Package   string `json:"package"`   //package
	SignType  string `json:"signType"`
	Sign      string `json:"paySign"` //签名
}

AppletPayResp 微信小程序支付时,返回的结构体 包括prepayID和Sign等其他信息

type Client

type Client struct {
	*WxConfig
	// contains filtered or unexported fields
}

Client 请求与返回的封装

func (*Client) AuthCodeToOpenid

func (c *Client) AuthCodeToOpenid(params Params) (Params, error)

AuthCodeToOpenid 授权码查询OPENID接口

func (*Client) CloseOrder

func (c *Client) CloseOrder(params Params) (Params, error)

CloseOrder 关闭订单

func (*Client) DownloadBill

func (c *Client) DownloadBill(params Params) (Params, error)

DownloadBill 对账单下载

func (*Client) MicroPay

func (c *Client) MicroPay(params Params) (Params, error)

MicroPay 刷卡支付

func (*Client) MultiProfitSharing added in v1.3.8

func (c *Client) MultiProfitSharing(params Params) (Params, error)

MultiProfitSharing 请求多次分账

func (*Client) Notify

func (c *Client) Notify(req *http.Request) (Params, error)

Notify 异步通知处理

func (*Client) OrderQuery

func (c *Client) OrderQuery(params Params) (Params, error)

OrderQuery 订单查询

func (*Client) ProfitSharing added in v1.3.8

func (c *Client) ProfitSharing(params Params) (Params, error)

ProfitSharing 请求单次分账

func (*Client) ProfitSharingFinish added in v1.3.8

func (c *Client) ProfitSharingFinish(params Params) (Params, error)

ProfitSharingFinish 完结分账

func (*Client) ProfitSharingQuery added in v1.3.8

func (c *Client) ProfitSharingQuery(params Params) (Params, error)

ProfitSharingQuery 查询分账结果

func (*Client) ProfitSharingReturn added in v1.3.8

func (c *Client) ProfitSharingReturn(params Params) (Params, error)

ProfitSharingReturn 分账回退

func (*Client) ProfitSharingReturnQuery added in v1.3.8

func (c *Client) ProfitSharingReturnQuery(params Params) (Params, error)

ProfitSharingReturnQuery 分账回退结果查询

func (*Client) Refund

func (c *Client) Refund(params Params) (Params, error)

Refund 退款

func (*Client) RefundNotify added in v1.0.8

func (c *Client) RefundNotify(req *http.Request) (Params, error)

RefundNotify 退款异步通知处理

func (*Client) RefundQuery

func (c *Client) RefundQuery(params Params) (Params, error)

RefundQuery 退款查询

func (*Client) Report

func (c *Client) Report(params Params) (Params, error)

Report 交易保障

func (*Client) Reverse

func (c *Client) Reverse(params Params) (Params, error)

Reverse 撤销订单

func (*Client) SetHTTPConnectTimeoutMs

func (c *Client) SetHTTPConnectTimeoutMs(ms int)

SetHTTPConnectTimeoutMs ...

func (*Client) SetHTTPReadTimeoutMs

func (c *Client) SetHTTPReadTimeoutMs(ms int)

SetHTTPReadTimeoutMs ...

func (*Client) SetSignType

func (c *Client) SetSignType(signType string)

SetSignType SetSignType

func (*Client) ShortURL

func (c *Client) ShortURL(params Params) (Params, error)

ShortURL 转换短链接

func (*Client) Sign

func (c *Client) Sign(params Params) string

Sign 签名

func (*Client) UnifiedOrder

func (c *Client) UnifiedOrder(params Params) (Params, error)

UnifiedOrder 统一下单

func (*Client) ValidSign

func (c *Client) ValidSign(params Params) bool

ValidSign 验证签名

type CommonRet added in v1.4.4

type CommonRet struct {
	ReturnCode string `json:"return_code"`
	ReturnMsg  string `json:"return_msg"`
	ResultCode string `json:"result_code"`
	ErrCode    string `json:"err_code"`
}

返回

type Notifies

type Notifies struct{}

Notifies Notifies

func (*Notifies) NotOK

func (n *Notifies) NotOK(errMsg string) string

NotOK 通知不成功

func (*Notifies) OK

func (n *Notifies) OK() string

OK 通知成功

type NotifyRet

type NotifyRet struct {
	XMLName    xml.Name `xml:"xml"`
	ReturnCode string   `xml:"return_code"`
	ReturnMsg  string   `xml:"return_msg"`
}

NotifyRet 异步通知的返回值 返回

type Params

type Params map[string]interface{}

Params Params

func XMLToMap

func XMLToMap(xmlStr, key string) Params

XMLToMap XMLToMap 使用mxj第三方库,转换xml2map

func (Params) ContainsKey

func (p Params) ContainsKey(key string) bool

ContainsKey 判断key是否存在

func (Params) GetInt64

func (p Params) GetInt64(k string) int64

GetInt64 GetInt64

func (Params) GetString

func (p Params) GetString(k string) string

GetString GetString

func (Params) SetInt64

func (p Params) SetInt64(k string, i int64) Params

SetInt64 SetInt64

func (Params) SetString

func (p Params) SetString(k, s string) Params

SetString SetString

type ProfitSharingQueryReceiverData added in v1.3.8

type ProfitSharingQueryReceiverData struct {
	Type        string `json:"type"`        //分账接收方类型
	Account     string `json:"account"`     //接收方账号-【查询分账结果】接口返回
	Amount      int64  `json:"amount"`      //分账金额
	Description string `json:"description"` //分账描述
	FailReason  string `json:"fail_reason"` //分账失败原因
	/*
		分账失败原因,当分账结果result为CLOSED(已关闭)时,返回该字段
		枚举值:
		1、ACCOUNT_ABNORMAL : 分账接收账户异常
		2、NO_RELATION : 分账关系已解除
		3、RECEIVER_HIGH_RISK : 高风险接收方
		4、RECEIVER_REAL_NAME_NOT_VERIFIED : 接收方未实名
		5、NO_AUTH : 分账权限已解除
		6、RECEIVER_RECEIPT_LIMIT : 超出用户月收款限额
		7、PAYER_ACCOUNT_ABNORMAL : 分出方账户异常
		8、INVALID_REQUEST: 描述参数设置失败
	*/
	DetailId   string `json:"detail_id"`   //分账明细单号
	FinishTime string `json:"finish_time"` //完成时间
	Result     string `json:"result"`      //分账结果:PENDING:待分账,SUCCESS:分账成功,CLOSED:分账失败已关闭
}

ProfitSharingQueryReceiverData 查询分账结果 接收方信息

type ProfitSharingQueryResp added in v1.3.8

type ProfitSharingQueryResp struct {
	TransactionId string                            `json:"transaction_id"`
	OutOrderNo    string                            `json:"out_order_no"`
	OrderId       string                            `json:"order_id"`
	Status        string                            `json:"status"`
	Receivers     []*ProfitSharingQueryReceiverData `json:"receivers"`
}

type ProfitSharingReceiverData added in v1.3.8

type ProfitSharingReceiverData struct {
	Type    string `json:"type"`    //分账接收方类型
	Account string `json:"account"` //接收方账号
	//开发文档(https://pay.weixin.qq.com/wiki/doc/api/allocation.php?chapter=27_1&index=1)的字段是receiver_account和receiver_mchid,经测试,返回的字段是account且没有receiver_mchid
	//ReceiverAccount string `json:"receiver_account"`
	//ReceiveMchId string `json:"receiver_mchid"`
	Amount      int64  `json:"amount"`      //分账金额
	Description string `json:"description"` //分账描述
	FailReason  string `json:"fail_reason"` //分账失败原因
	/*
		分账失败原因,当分账结果result为CLOSED(已关闭)时,返回该字段
		枚举值:
		1、ACCOUNT_ABNORMAL : 分账接收账户异常
		2、NO_RELATION : 分账关系已解除
		3、RECEIVER_HIGH_RISK : 高风险接收方
		4、RECEIVER_REAL_NAME_NOT_VERIFIED : 接收方未实名
		5、NO_AUTH : 分账权限已解除
		6、RECEIVER_RECEIPT_LIMIT : 接收方已达收款限额
		7、PAYER_ACCOUNT_ABNORMAL : 分出方账户异常
	*/
	DetailId   string `json:"detail_id"`   //分账明细单号
	FinishTime string `json:"finish_time"` //完成时间
	Result     string `json:"result"`      //分账结果:PENDING:待分账,SUCCESS:分账成功,CLOSED:分账失败已关闭
}

ProfitSharingReceiverData 请求分账相应接收方信息

type ProfitSharingReceiverReq added in v1.3.8

type ProfitSharingReceiverReq struct {
	Type        string `json:"type"`           //分账接收方类型-必传
	Account     string `json:"account"`        //分账接收方账号-必传
	Amount      int64  `json:"amount"`         //分账金额-必传,单位分
	Description string `json:"description"`    //分账描述-必传
	Name        string `json:"name,omitempty"` //分账个人接收方姓名-选填
}

ProfitSharingReceiverReq 请求分账接收方信息

type ProfitSharingResp added in v1.3.8

type ProfitSharingResp struct {
	TransactionId string                       `json:"transaction_id"`
	OutOrderNo    string                       `json:"out_order_no"`
	OrderId       string                       `json:"order_id"`
	Status        string                       `json:"status"` //PROCESSING:处理中  FINISHED:处理完成
	Receivers     []*ProfitSharingReceiverData `json:"receivers"`
}

type ProfitSharingReturnRet added in v1.3.8

type ProfitSharingReturnRet struct {
	OrderId           string `json:"order_id"`
	OutOrderNo        string `json:"out_order_no"`
	OutReturnNo       string `json:"out_return_no"`
	ReturnNo          string `json:"return_no"`
	ReturnAccountType string `json:"return_account_type"`
	ReturnAccount     string `json:"return_account"`
	ReturnAmount      int64  `json:"return_amount"`
	Description       string `json:"description"`
	Result            string `json:"result"`
	/*
		回退结果:
		PROCESSING:处理中
		SUCCESS:已成功
		FAILED: 已失败
		如果返回为处理中,请勿变更商户回退单号,使用相同的参数再次发起分账回退,否则会出现资金风险
		在处理中状态的回退单如果5天没有成功,会因为超时被设置为已失败
	*/
	FailReason string `json:"fail_reason"`
	FinishTime string `json:"finish_time"`
}

type TradeType

type TradeType string

TradeType 支付场景类型

const (
	// TradeTypeJSAPI 公众号支付
	TradeTypeJSAPI TradeType = "JSAPI"

	// TradeTypeNative 扫码支付
	TradeTypeNative TradeType = "NATIVE"

	// TradeTypeApp App支付
	TradeTypeApp TradeType = "APP"

	//TradeTypeH5 非微信浏览器的H5唤起支付
	TradeTypeH5 TradeType = "MWEB"

	//TradeTypeApplet 小程序
	TradeTypeApplet TradeType = ""
)

type WXPayRefundSuccessNotifyResp added in v1.3.2

type WXPayRefundSuccessNotifyResp struct {
	TransactionId     string `json:"transaction_id"`
	OutTradeNo        string `json:"out_trade_no"`
	RefundId          string `json:"refund_id"`
	OutRefundNo       string `json:"out_refund_no"`
	RefundStatus      string `json:"refund_status"`
	RefundRecvAccount string `json:"refund_recv_account"`
	RefundFee         int64  `json:"refund_fee"`   //退款金额 单位为分
	SuccessTime       string `json:"success_time"` //资金退款至用户账号的时间,格式2017-12-15 09:46:01
}

微信退款成功通知 返回的信息

type WxAPI

type WxAPI struct {
	Client *Client
}

WxAPI 调用实体

func NewWxAPI

func NewWxAPI(wxConfig *WxConfig) *WxAPI

NewWxAPI init account基本的商户信息 notifyURL 异步通知地址 endMinute 订单有效期

func (*WxAPI) AppTrade

func (m *WxAPI) AppTrade(body, outTradeNo string, totalFee int, clientIP string) (ret *AppPayResp, err error)

AppTrade APP下单

func (*WxAPI) AppletTrade

func (m *WxAPI) AppletTrade(body, outTradeNo string, totalFee int, openID, clientIP string) (ret *AppletPayResp, err error)

AppletTrade 小程序支付 需要传入公众号对应用户的openID

func (*WxAPI) CloseOrder added in v1.4.4

func (m *WxAPI) CloseOrder(outTradeNo string) (ret *CommonRet)

func (*WxAPI) H5Trade

func (m *WxAPI) H5Trade(body, outTradeNo string, totalFee int, clientIP string) (ret string, err error)

H5Trade H5下单

func (*WxAPI) JSAPITrade

func (m *WxAPI) JSAPITrade(body, outTradeNo string, totalFee int, openID, clientIP string) (ret string, err error)

JSAPITrade 公众号支付 需要传入公众号对应用户的openID

func (*WxAPI) MultiProfitSharing added in v1.3.8

func (m *WxAPI) MultiProfitSharing(transactionID, outOrderNo string, receiver []*ProfitSharingReceiverReq) (ret *ProfitSharingResp, err error)

MultiProfitSharing 请求多次分账 多次分账请求仅会按照传入的分账接收方进行分账,不会对剩余的金额进行任何操作。故操作成功后,在待分账金额不等于零时,订单依旧能够再次进行分账。 调用多次分账接口后,需要解冻剩余资金时,调用[完结分账]的接口将剩余的分账金额全部解冻给本商户

func (*WxAPI) NativeTrade

func (m *WxAPI) NativeTrade(body, outTradeNo string, totalFee int) (ret string, err error)

NativeTrade 扫码支付下单 使用时把返回的code_url生成二维码,供前台用户扫码支付

func (*WxAPI) Notify

func (m *WxAPI) Notify(req *http.Request) (ret *NotifyRet, outTradeNo, tradeNo, openID string, err error)

Notify 异步通知 返回异步通知状态信息 调用方拿到返回值后,需要根据 outTradeNo tradeNo openID等值,做进一点检验,如果检验失败,设置ret.ReturnCode="FAIL"; 成功时,需要回写返回值到本地 最后以xml方式输出 ret

func (*WxAPI) OrderQuery

func (m *WxAPI) OrderQuery(transactionID, outTradeNo string) (state bool, tradeState, tradeNo string, err error)

OrderQuery 订单查询

返回是否成功,和错误信息

func (*WxAPI) ProfitSharing added in v1.3.8

func (m *WxAPI) ProfitSharing(transactionID, outOrderNo string, receiver []*ProfitSharingReceiverReq) (ret *ProfitSharingResp, errCode string, err error)

ProfitSharing 请求单次分账 outOrderNo 商户分账单号 单次分账请求按照传入的分账接收方账号和资金进行分账,同时会将订单剩余的待分账金额解冻给本商户。故操作成功后,订单不能再进行分账,也不能进行分账完结

func (*WxAPI) ProfitSharingFinish added in v1.3.8

func (m *WxAPI) ProfitSharingFinish(transactionID, outOrderNo, description string) (ret *ProfitSharingResp, err error)

ProfitSharingFinish 完结分账

func (*WxAPI) ProfitSharingQuery added in v1.3.8

func (m *WxAPI) ProfitSharingQuery(transactionID, outOrderNo string) (ret *ProfitSharingQueryResp, err error)

ProfitSharingQuery 查询分账结果

func (*WxAPI) ProfitSharingReturn added in v1.3.8

func (m *WxAPI) ProfitSharingReturn(orderId, outOrderNo string, outReturnNo string, returnAccount string, returnAmount int64, description string) (ret *ProfitSharingReturnRet, err error)

ProfitSharingReturn 分账回退 orderId:微信分账单号,outOrderNo:商户分账单号 二选一 outReturnNo:商户回退单号

func (*WxAPI) ProfitSharingReturnQuery added in v1.3.8

func (m *WxAPI) ProfitSharingReturnQuery(orderId, outOrderNo string, outReturnNo string) (ret *ProfitSharingReturnRet, err error)

ProfitSharingReturnQuery 查询回退结果 orderId:微信分账单号,outOrderNo:商户分账单号 二选一 outReturnNo:商户回退单号

func (*WxAPI) Refund added in v1.0.8

func (m *WxAPI) Refund(transactionID, outTradeNo, outRefundNo, refundDesc string, totalFee, refundFee int) (refundId string, err error)

Refund 申请退款

func (*WxAPI) RefundNotify added in v1.0.8

func (m *WxAPI) RefundNotify(req *http.Request) (ret *NotifyRet, refundData *WXPayRefundSuccessNotifyResp, err error)

RefundNotify 退款异步通知

返回异步通知状态信息
以xml方式输出 ret

func (*WxAPI) RefundQuery added in v1.0.8

func (m *WxAPI) RefundQuery(transactionID, outTradeNo, outRefundNo, refundId string) (status string, recvName string, err error)

RefundQuery 退款查询

func (*WxAPI) UnifiedOrder

func (m *WxAPI) UnifiedOrder(body string, outTradeNo string, totalFee int, openID string, clientIP string, tradeType TradeType) (Params, error)

UnifiedOrder 统一下单接口

type WxConfig

type WxConfig struct {
	AppId    string //传入的appID
	MchId    string //分配的mchID
	APIKey   string //分配的apiKey
	ServerIP string //服务器IP

	NotifyURL       string //异步通知地址
	RefundNotifyUrl string //订单退款异步通知地址
	OrderTime       int    //订单有效分钟数
	IsProfitSharing bool   //是否分账 默认为不分账
	// contains filtered or unexported fields
}

WxConfig 配置参数

func NewWxConfig

func NewWxConfig(appId, mchId, apiKey, serverIP string, isSandbox bool, notifyUrl string, orderTime int) *WxConfig

NewWxConfig 一个新的配置信息 也可以自己组装

func (*WxConfig) SetCertData

func (m *WxConfig) SetCertData(certPath string) (err error)

SetCertData 设置证书

func (*WxConfig) SetIsProfitSharing added in v1.3.8

func (m *WxConfig) SetIsProfitSharing(needProfitSharing bool)

func (*WxConfig) SetRefundNotifyUrl added in v1.0.8

func (m *WxConfig) SetRefundNotifyUrl(url string)

SetRefundNotifyUrl 设置退款异步通知地址

Jump to

Keyboard shortcuts

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