Documentation ¶
Index ¶
- Constants
- Variables
- func PayCheck(reply WePayReply) (ok bool, err error)
- func PayNotifyCheck(reply FormWePayNotify) (ok bool, err error)
- func PayRefundCheck(reply WePayRefundReply) (ok bool, err error)
- func Random(n int) string
- func Sign(req map[string]interface{}, key string) (sign string)
- type Client
- func (wc Client) GetCodeURL(redirectURL, state string) (uri string)
- func (wc Client) GetMaterial(mtype string, offset, count int) (res Material, err error)
- func (wc Client) GetOpenID(code string) (res Response, err error)
- func (wc Client) GetSignPackage(uri, nonceStr string) (sign SignPackage, err error)
- func (wc Client) GetUserInfo(openid string) (res UserInfo, err error)
- func (wc Client) GetUserList(nextOpenID string) (res UserList, err error)
- func (wc Client) SendTemplateMessage(template TemplateMessage) (res Response, err error)
- type Entrust
- type EventTemplateReply
- type FormAuthorize
- type FormMaterial
- type FormOpenID
- type FormSignature
- type FormWePayNotify
- type List
- type Material
- type Message
- type MiniProgramPage
- type OrderQuery
- type PapPay
- type Response
- type ResponseMsg
- type Server
- type SignPackage
- type TemplateData
- type TemplateMessage
- type UnifiedOrder
- type UserInfo
- type UserList
- type ValueColor
- type WePayConfig
- type WePayRefund
- type WePayRefundReply
- type WePayReply
- func H5Entrust(config WePayConfig, order Entrust) (reply WePayReply, err error)
- func PapPayApply(config WePayConfig, order PapPay) (reply WePayReply, err error)
- func Pay(config WePayConfig, order UnifiedOrder) (reply WePayReply, err error)
- func PayQuery(cpyid int, config WePayConfig, order OrderQuery) (reply WePayReply, err error)
Constants ¶
const ( // WePayHost base host WePayHost = `https://api.mch.weixin.qq.com` // WePayURLUnifiedOrder pay 付款 WePayURLUnifiedOrder = `/pay/unifiedorder` // WePayURLUnifiedQuery order query 订单查询 WePayURLUnifiedQuery = `/pay/orderquery` // WePayURLPayRefund pay refund 退款 WePayURLPayRefund = `/secapi/pay/refund` // WePayURLPapPay 委托代扣申请扣款 WePayURLPapPay = `/pay/pappayapply` // WePayURLPapayEntrust H5 纯签约 WePayURLPapayEntrust = `/papay/h5entrustweb` // WePayTradeTypeJS JSAPI 公众号支付 WePayTradeTypeJS = `JSAPI` // WePayTradeTypeNative NATIVE 扫码支付 WePayTradeTypeNative = `NATIVE` // WePayTradeTypeAPP APP APP支付 WePayTradeTypeAPP = `APP` // WeOrderPaySuccess pay ok WeOrderPaySuccess = 0 )
const ( // TokenExpires token expires time 1 hours TokenExpires = 60 * 60 // BaseURL api host BaseURL = `https://api.weixin.qq.com` // OpenURL open host OpenURL = `https://open.weixin.qq.com` )
Variables ¶
var ( // WePayTradeState 交易状态 WePayTradeState = map[string]int{"SUCCESS": 0, "REFUND": 2, "NOTPAY": 3, "CLOSED": 4, "REVOKED": 5, "USERPAYING": 6, "PAYERROR": 7} )
Functions ¶
func PayNotifyCheck ¶
func PayNotifyCheck(reply FormWePayNotify) (ok bool, err error)
PayNotifyCheck check reply
func PayRefundCheck ¶
func PayRefundCheck(reply WePayRefundReply) (ok bool, err error)
PayRefundCheck check refund reply
Types ¶
type Client ¶
type Client struct { AppID string `json:"appid"` AppSecret string `json:"appsecret"` Token string `json:"token"` EncodingAESKey string `json:"encodingaeskey"` AccessToken string LastTokenTime int64 Ticket string LastTicketTime int64 }
Client wechat
func (Client) GetCodeURL ¶
GetCodeURL get code 授权获取 OpenID URL /connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 转向到 redirect_uri/?code=CODE&state=STATE
func (Client) GetMaterial ¶
GetMaterial 永久资料
func (Client) GetOpenID ¶
GetOpenID 获取 OpenID /sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
func (Client) GetSignPackage ¶
func (wc Client) GetSignPackage(uri, nonceStr string) (sign SignPackage, err error)
GetSignPackage JS 签名
uri 当前 URL nonceStr 随机字符串
func (Client) GetUserInfo ¶
GetUserInfo user info
func (Client) GetUserList ¶
GetUserList user list
func (Client) SendTemplateMessage ¶
func (wc Client) SendTemplateMessage(template TemplateMessage) (res Response, err error)
SendTemplateMessage send template message POST /cgi-bin/message/template/send?access_token=ACCESS_TOKEN
type Entrust ¶
type Entrust struct { XMLName xml.Name `xml:"xml"` AppID string `xml:"appid"` MchID string `xml:"mch_id"` PlanID string `xml:"plan_id"` // 协议模板id ContractCode string `xml:"contract_code"` // 签约协议号 RequestSerial int64 `xml:"request_serial"` // 商户请求签约时的序列号,要求唯一性。序列号主要用于排序,不作为查询条件 Name string `xml:"contract_display_account"` // 签约用户的名称 NotifyURL string `xml:"notify_url"` // 接受扣款结果异步回调通知的url,传输需要url encode //Ver string `xml:"ver"` // 版本号, 固定值1.0 Sign string `xml:"sign"` // 签名 Timestamp int `xml:"timestamp"` // 时间戳, 10位时间戳 IP string `xml:"clientip"` // 用户客户端的真实IP地址 }
Entrust 申请签约
type EventTemplateReply ¶
type EventTemplateReply struct { XMLName xml.Name `xml:"xml"` ToUserName string `xml:"ToUserName"` FromUserName string `xml:"FromUserName"` CreateTime string `xml:"CreateTime"` MsgType string `xml:"MsgType"` Event string `xml:"Event"` MsgID string `xml:"MsgID"` Status string `xml:"Status"` }
EventTemplateReply event reply
type FormAuthorize ¶
type FormAuthorize struct { Code string `form:"code"` State string `form:"state"` URL string `form:"url"` }
FormAuthorize get code
type FormMaterial ¶
type FormMaterial struct { Type string `form:"type"` Offset int `form:"offset"` Count int `form:"count"` }
FormMaterial Material
type FormSignature ¶
type FormSignature struct { TimeStamp string `form:"timestamp" json:"timestamp"` Nonce string `form:"nonce" json:"nonce"` Signature string `form:"signature" json:"signature"` Echostr string `form:"echostr" json:"echostr"` }
FormSignature signature
type FormWePayNotify ¶
type FormWePayNotify struct { XMLName xml.Name `xml:"xml" json:"_,omitempty"` AppID string `form:"appid" xml:"appid"` Attach string `form:"attach" xml:"attach"` BankType string `form:"bank_type" xml:"bank_type"` CashFee int `form:"cash_fee" xml:"cash_fee"` FeeType string `form:"fee_type" xml:"fee_type"` MchID string `form:"mch_id" xml:"mch_id"` IsSubscribe string `form:"is_subscribe" xml:"is_subscribe"` NonceStr string `form:"nonce_str" xml:"nonce_str"` OpenID string `form:"openid" xml:"openid"` OutTradeNo string `form:"out_trade_no" xml:"out_trade_no"` ResultCode string `form:"result_code" xml:"result_code"` ReturnMsg string `form:"return_msg" xml:"return_msg"` ReturnCode string `form:"return_code" xml:"return_code"` ErrCodeDes string `form:"err_code_des" xml:"err_code_des"` ErrCode string `form:"err_code" xml:"err_code"` Sign string `form:"sign" xml:"sign"` TimeEnd string `form:"time_end" xml:"time_end"` TotalFee int `form:"total_fee" xml:"total_fee"` TradeType string `form:"trade_type" xml:"trade_type"` TransactionID string `form:"transaction_id" xml:"transaction_id"` ContractID string `form:"contract_id" xml:"contract_id"` }
FormWePayNotify notify
type Material ¶
type Material struct { TotalCount int `json:"total_count"` ItemCount int `json:"item_count"` Item []item `json:"item"` }
Material 素材
type Message ¶
type Message struct { XMLName xml.Name `xml:"xml"` ToUserName string `xml:"ToUserName" json:"ToUserName"` FromUserName string `xml:"FromUserName" json:"FromUserName"` CreateTime int32 `xml:"CreateTime" json:"CreateTime"` MsgType string `xml:"MsgType" json:"MsgType"` MsgID int64 `xml:"MsgId" json:"MsgId"` }
Message message
type MiniProgramPage ¶
type MiniProgramPage struct { AppID string `json:"appid,omitempty"` PagePath string `json:"pagepath,omitempty"` }
MiniProgramPage mini
type OrderQuery ¶
type OrderQuery struct { XMLName xml.Name `xml:"xml"` AppID string `xml:"appid"` MchID string `xml:"mch_id"` NonceStr string `xml:"nonce_str"` TransactionID string `xml:"transaction_id,omitempty"` OutTradeNo string `xml:"out_trade_no,omitempty"` Sign string `xml:"sign"` }
OrderQuery https://api.mch.weixin.qq.com/pay/orderquery
type PapPay ¶
type PapPay struct { XMLName xml.Name `xml:"xml"` AppID string `xml:"appid"` MchID string `xml:"mch_id"` NonceStr string `xml:"nonce_str"` // 随机字符串,不长于32位 Sign string `xml:"sign"` // 签名 Body string `xml:"body"` // 商品或支付单简要描述, max 32 Detail string `xml:"detail"` // 商品名称明细列表, 8192 Attach string `xml:"attach"` // 附加数据,在查询API和支付通知中原样返回 OutTradeNo string `xml:"out_trade_no"` // 商户系统内部的订单号, 32个字符内、可包含字母 TotalFee int `xml:"total_fee"` // 订单总金额,单位为分,只能为整数 SpbillCreateIP string `xml:"spbill_create_ip"` // 调用微信支付API的机器IP NotifyURL string `xml:"notify_url"` // 接受扣款结果异步回调通知的url ContractID string `xml:"contract_id"` // 委托代扣协议id OpenID string `xml:"openid"` // OpenID Mobile string `xml:"mobile"` // 手机号 Creid string `xml:"creid"` // 身份证号码 Timestamp int `xml:"timestamp"` // 时间戳, 10位时间戳 }
PapPay 委托代扣申请扣款
type Response ¶
type Response struct { ErrCode int `json:"errcode"` ErrMsg string `json:"errmsg"` // token AccessToken string `json:"access_token"` ExpiresIn int `json:"expires_in"` // openid RefreshToken string `json:"refresh_token"` OpenID string `json:"openid"` Scope string `json:"scope"` // user info NickName string `json:"nickname"` Sex string `json:"sex"` Province string `json:"province"` City string `json:"city"` Country string `json:"country"` HeadImgURL string `json:"headimgurl"` Privilege string `json:"privilege"` UnionID string `json:"unionid"` // template message MsgID int64 `json:"msgid"` // jsapi_ticket Ticket string `json:"ticket"` }
Response response
type ResponseMsg ¶
ResponseMsg response
type Server ¶
type Server struct { AppID string `json:"appid"` AppSecret string `json:"appsecret"` Token string `json:"token"` EncodingAESKey string `json:"encodingaeskey"` }
Server wechat
type SignPackage ¶
type SignPackage struct { AppID string `json:"appId"` NonceStr string `json:"nonceStr"` Timestamp int64 `json:"timestamp"` Signature string `json:"signature"` URL string `json:"url"` }
SignPackage sign package
type TemplateData ¶
type TemplateData struct { First *ValueColor `json:"first"` Keyword1 *ValueColor `json:"keyword1,omitempty"` Keyword2 *ValueColor `json:"keyword2,omitempty"` Keyword3 *ValueColor `json:"keyword3,omitempty"` Keyword4 *ValueColor `json:"keyword4,omitempty"` Keyword5 *ValueColor `json:"keyword5,omitempty"` Remark *ValueColor `json:"remark,omitempty"` }
TemplateData data
type TemplateMessage ¶
type TemplateMessage struct { ToUser string `json:"touser"` TemplateID string `json:"template_id"` URL string `json:"url"` MiniProgram *MiniProgramPage `json:"miniprogram,omitempty"` Data TemplateData `json:"data"` }
TemplateMessage template message
type UnifiedOrder ¶
type UnifiedOrder struct { XMLName xml.Name `xml:"xml"` AppID string `xml:"appid"` MchID string `xml:"mch_id"` Body string `xml:"body"` NonceStr string `xml:"nonce_str"` NotifyURL string `xml:"notify_url"` TradeType string `xml:"trade_type"` OpenID string `xml:"openid"` SpbillCreateIP string `xml:"spbill_create_ip"` TimeStart string `xml:"time_start"` TotalFee int `xml:"total_fee"` OutTradeNo string `xml:"out_trade_no"` Attach string `xml:"attach"` Sign string `xml:"sign"` }
UnifiedOrder https://api.mch.weixin.qq.com/pay/unifiedorder
type UserInfo ¶
type UserInfo struct { SubScribe int `json:"subscribe"` OpenID string `json:"openid"` NickName string `json:"nickname"` Sex int `json:"sex"` Language string `json:"language"` City string `json:"city"` Province string `json:"province"` Country string `json:"country"` HeadImgURL string `json:"headimgurl"` SubscribeTime int `json:"subscribe_time"` UnionID string `json:"unionid"` Remark string `json:"remark"` GroupID int `json:"groupid"` TagidList []int `json:"tagid_list"` SubscribeScene string `json:"subscribe_scene"` QrScene int `json:"qr_scene"` QrSceneStr string `json:"qr_scene_str"` }
UserInfo userinfo
type UserList ¶
type UserList struct { Total int `json:"total"` Count int `json:"count"` Data List `json:"data"` NextOpenID string `json:"next_openid"` }
UserList user list
type ValueColor ¶
ValueColor value color
type WePayConfig ¶
type WePayConfig struct { AppID string `json:"appid"` MchID string `json:"mchid"` Key string `json:"key"` AppSecret string `json:"appsecret"` SSLCert string `json:"sslcert"` SSLKey string `json:"sslkey"` ContractID string `json:"contractid"` NotifyURL string `json:"notify_url"` }
WePayConfig WeChat pay configure
type WePayRefund ¶
type WePayRefund struct { XMLName xml.Name `xml:"xml"` AppID string `xml:"appid"` // 公众账号 ID string(32) MchID string `xml:"mch_id"` // 商户号 string(32) NonceStr string `xml:"nonce_str"` // 随机字符串 string(32) Sign string `xml:"sign"` // 签名 string(32) //SignType string `xml:"sign_type"` // 签名类型, 默认 MD5 string(32), HMAC-SHA256 和 MD5 OutTradeNo string `xml:"out_trade_no"` // 商户订单号 OutRefundNo string `xml:"out_refund_no"` // 商户退款单号 TotalFee int `xml:"total_fee"` // 订单金额 RefundFee int `xml:"refund_fee"` // 退款金额 //RefundFeeType string `xml:"refund_fee_type"` // 退款货币种类, 款货币类型,需与支付一致,或者不填。符合ISO 4217标准的三位字母代码,默认人民币:CNY NotifyURL string `xml:"notify_url"` // 退款结果通知 url, 异步接收微信支付退款结果通知的回调地址,通知URL必须为外网可访问的url,不允许带参数。如果参数中传了notify_url,则商户平台上配置的回调地址将不会生效 }
WePayRefund https://api.mch.weixin.qq.com/secapi/pay/refund
type WePayRefundReply ¶
type WePayRefundReply struct { XMLName xml.Name `xml:"xml" json:"_,omitempty"` ReturnCode string `xml:"return_code"` ReturnMsg string `xml:"return_msg"` ResultCode string `xml:"result_code"` ErrCode string `xml:"err_code"` ErrCodeDes string `xml:"err_code_des"` AppID string `xml:"appid"` MchID string `xml:"mch_id"` NonceStr string `xml:"nonce_str"` Sign string `xml:"sign"` TransactionID string `xml:"transaction_id"` OutTradeNo string `xml:"out_trade_no"` OutRefundNo string `xml:"out_refund_no"` RefundFee int `xml:"refund_fee"` // 退款金额 TotalFee int `xml:"total_fee"` // 标价金额, 订单总金额,单位为分,只能为整数 FeeType int `xml:"fee_type"` // 退款货币种类, 款货币类型,需与支付一致,或者不填。符合ISO 4217标准的三位字母代码,默认人民币:CNY CashFee int `xml:"cash_fee"` // 现金支付金额 }
WePayRefundReply pay refund reply
func PayRefund ¶
func PayRefund(config WePayConfig, order WePayRefund) (reply WePayRefundReply, err error)
PayRefund 退款
type WePayReply ¶
type WePayReply struct { XMLName xml.Name `xml:"xml" json:"_,omitempty"` ReturnCode string `xml:"return_code"` ReturnMsg string `xml:"return_msg"` AppID string `xml:"appid"` MchID string `xml:"mch_id"` NonceStr string `xml:"nonce_str"` Sign string `xml:"sign"` ResultCode string `xml:"result_code"` PrePayID string `xml:"prepay_id"` TradeType string `xml:"trade_type"` URL string `xml:"code_url"` ErrCode string `xml:"err_code"` ErrCodeDes string `xml:"err_code_des"` OpenID string `xml:"openid"` Attach string `xml:"attach"` IsSubscribe string `xml:"is_subscribe"` BankType string `xml:"bank_type"` CashFee string `xml:"cash_fee"` FeeType string `xml:"fee_type"` OutTradeNo string `xml:"out_trade_no"` TimeEnd string `xml:"time_end"` TotalFee string `xml:"total_fee"` TradeState string `xml:"trade_state"` TradeStateDesc string `xml:"trade_state_desc"` TransactionID string `xml:"transaction_id"` ContractID string `form:"contract_id" xml:"contract_id"` }
WePayReply pay reply
func H5Entrust ¶
func H5Entrust(config WePayConfig, order Entrust) (reply WePayReply, err error)
H5Entrust H5纯签约
func PapPayApply ¶
func PapPayApply(config WePayConfig, order PapPay) (reply WePayReply, err error)
PapPayApply 委托代扣申请扣款
func PayQuery ¶
func PayQuery(cpyid int, config WePayConfig, order OrderQuery) (reply WePayReply, err error)
PayQuery order query