Documentation
¶
Index ¶
- Constants
- Variables
- func MapToXML(params Params) string
- type AppPayResp
- type AppletPayResp
- type Client
- func (c *Client) AuthCodeToOpenid(params Params) (Params, error)
- func (c *Client) CloseOrder(params Params) (Params, error)
- func (c *Client) DownloadBill(params Params) (Params, error)
- func (c *Client) MicroPay(params Params) (Params, error)
- func (c *Client) MultiProfitSharing(params Params) (Params, error)
- func (c *Client) Notify(req *http.Request) (Params, error)
- func (c *Client) OrderQuery(params Params) (Params, error)
- func (c *Client) ProfitSharing(params Params) (Params, error)
- func (c *Client) ProfitSharingFinish(params Params) (Params, error)
- func (c *Client) ProfitSharingQuery(params Params) (Params, error)
- func (c *Client) ProfitSharingReturn(params Params) (Params, error)
- func (c *Client) ProfitSharingReturnQuery(params Params) (Params, error)
- func (c *Client) Refund(params Params) (Params, error)
- func (c *Client) RefundNotify(req *http.Request) (Params, error)
- func (c *Client) RefundQuery(params Params) (Params, error)
- func (c *Client) Report(params Params) (Params, error)
- func (c *Client) Reverse(params Params) (Params, error)
- func (c *Client) SetHTTPConnectTimeoutMs(ms int)
- func (c *Client) SetHTTPReadTimeoutMs(ms int)
- func (c *Client) SetSignType(signType string)
- func (c *Client) ShortURL(params Params) (Params, error)
- func (c *Client) Sign(params Params) string
- func (c *Client) UnifiedOrder(params Params) (Params, error)
- func (c *Client) ValidSign(params Params) bool
- type CommonRet
- type Notifies
- type NotifyRet
- type Params
- type ProfitSharingQueryReceiverData
- type ProfitSharingQueryResp
- type ProfitSharingReceiverData
- type ProfitSharingReceiverReq
- type ProfitSharingResp
- type ProfitSharingReturnRet
- type TradeType
- type WXPayRefundSuccessNotifyResp
- type WxAPI
- func (m *WxAPI) AppTrade(body, outTradeNo string, totalFee int, clientIP string) (ret *AppPayResp, err error)
- func (m *WxAPI) AppletTrade(body, outTradeNo string, totalFee int, openID, clientIP string) (ret *AppletPayResp, err error)
- func (m *WxAPI) CloseOrder(outTradeNo string) (ret *CommonRet)
- func (m *WxAPI) H5Trade(body, outTradeNo string, totalFee int, clientIP string) (ret string, err error)
- func (m *WxAPI) JSAPITrade(body, outTradeNo string, totalFee int, openID, clientIP string) (ret string, err error)
- func (m *WxAPI) MultiProfitSharing(transactionID, outOrderNo string, receiver []*ProfitSharingReceiverReq) (ret *ProfitSharingResp, err error)
- func (m *WxAPI) NativeTrade(body, outTradeNo string, totalFee int) (ret string, err error)
- func (m *WxAPI) Notify(req *http.Request) (ret *NotifyRet, outTradeNo, tradeNo, openID string, err error)
- func (m *WxAPI) OrderQuery(transactionID, outTradeNo string) (state bool, tradeState, tradeNo string, err error)
- func (m *WxAPI) ProfitSharing(transactionID, outOrderNo string, receiver []*ProfitSharingReceiverReq) (ret *ProfitSharingResp, errCode string, err error)
- func (m *WxAPI) ProfitSharingFinish(transactionID, outOrderNo, description string) (ret *ProfitSharingResp, err error)
- func (m *WxAPI) ProfitSharingQuery(transactionID, outOrderNo string) (ret *ProfitSharingQueryResp, err error)
- func (m *WxAPI) ProfitSharingReturn(orderId, outOrderNo string, outReturnNo string, returnAccount string, ...) (ret *ProfitSharingReturnRet, err error)
- func (m *WxAPI) ProfitSharingReturnQuery(orderId, outOrderNo string, outReturnNo string) (ret *ProfitSharingReturnRet, err error)
- func (m *WxAPI) Refund(transactionID, outTradeNo, outRefundNo, refundDesc string, ...) (refundId string, err error)
- func (m *WxAPI) RefundNotify(req *http.Request) (ret *NotifyRet, refundData *WXPayRefundSuccessNotifyResp, err error)
- func (m *WxAPI) RefundQuery(transactionID, outTradeNo, outRefundNo, refundId string) (status string, recvName string, err error)
- func (m *WxAPI) UnifiedOrder(body string, outTradeNo string, totalFee int, openID string, clientIP string, ...) (Params, error)
- type WxConfig
Constants ¶
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 ¶
var ( //RandChar 随机字串 RandChar = []byte("abcdefghijklmnopqrstuvwxyz0123456789") //RandCharLen 随机字串长度 RandCharLen int32 = 36 //TradeNumStr 商户订单号前缀 TradeNumStr = "WX" )
Functions ¶
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 ¶
AuthCodeToOpenid 授权码查询OPENID接口
func (*Client) CloseOrder ¶
CloseOrder 关闭订单
func (*Client) DownloadBill ¶
DownloadBill 对账单下载
func (*Client) MultiProfitSharing ¶ added in v1.3.8
MultiProfitSharing 请求多次分账
func (*Client) OrderQuery ¶
OrderQuery 订单查询
func (*Client) ProfitSharing ¶ added in v1.3.8
ProfitSharing 请求单次分账
func (*Client) ProfitSharingFinish ¶ added in v1.3.8
ProfitSharingFinish 完结分账
func (*Client) ProfitSharingQuery ¶ added in v1.3.8
ProfitSharingQuery 查询分账结果
func (*Client) ProfitSharingReturn ¶ added in v1.3.8
ProfitSharingReturn 分账回退
func (*Client) ProfitSharingReturnQuery ¶ added in v1.3.8
ProfitSharingReturnQuery 分账回退结果查询
func (*Client) RefundNotify ¶ added in v1.0.8
RefundNotify 退款异步通知处理
func (*Client) RefundQuery ¶
RefundQuery 退款查询
func (*Client) SetHTTPConnectTimeoutMs ¶
SetHTTPConnectTimeoutMs ...
func (*Client) SetHTTPReadTimeoutMs ¶
SetHTTPReadTimeoutMs ...
func (*Client) UnifiedOrder ¶
UnifiedOrder 统一下单
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 NotifyRet ¶
type NotifyRet struct {
XMLName xml.Name `xml:"xml"`
ReturnCode string `xml:"return_code"`
ReturnMsg string `xml:"return_msg"`
}
NotifyRet 异步通知的返回值 返回
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 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 (*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 (*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 ¶
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
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 ¶
SetCertData 设置证书
func (*WxConfig) SetIsProfitSharing ¶ added in v1.3.8
func (*WxConfig) SetRefundNotifyUrl ¶ added in v1.0.8
SetRefundNotifyUrl 设置退款异步通知地址