Documentation ¶
Index ¶
- Variables
- type BaseWxPayRequest
- type BaseWxPayResult
- type Coupon
- type EntPayRequest
- type EntPayResult
- type SignType
- type TradeType
- type WxEntPayService
- type WxEntPayServiceImpl
- type WxPayConfig
- type WxPayOrderCloseRequest
- type WxPayOrderCloseResult
- type WxPayOrderQueryRequest
- type WxPayOrderQueryResult
- type WxPaySandboxSignKeyResult
- type WxPayService
- type WxPayUnifiedOrderRequest
- type WxPayUnifiedOrderResult
- type WxPayV2ServiceImpl
- func (p *WxPayV2ServiceImpl) CloseOrder(request *WxPayOrderCloseRequest) (*WxPayOrderCloseResult, error)
- func (p *WxPayV2ServiceImpl) CloseOrderBy(outTradeNo string) (*WxPayOrderCloseResult, error)
- func (p *WxPayV2ServiceImpl) GetEntPayService() WxEntPayService
- func (p *WxPayV2ServiceImpl) GetPayBaseUr() string
- func (p *WxPayV2ServiceImpl) GetSandboxSignKey(request *BaseWxPayRequest) (*WxPaySandboxSignKeyResult, error)
- func (p *WxPayV2ServiceImpl) GetWxPayConfig() *WxPayConfig
- func (p *WxPayV2ServiceImpl) Post(url string, contentType string, data interface{}, args ...interface{}) ([]byte, error)
- func (p *WxPayV2ServiceImpl) PostFor(v interface{}, url string, contentType string, data interface{}, ...) error
- func (p *WxPayV2ServiceImpl) PostKey(url string, data interface{}, certPath, keyPath string, args ...interface{}) ([]byte, error)
- func (p *WxPayV2ServiceImpl) PostKeyFor(v interface{}, url string, data interface{}, certPath, keyPath string, ...) error
- func (p *WxPayV2ServiceImpl) QueryOrder(request *WxPayOrderQueryRequest) (*WxPayOrderQueryResult, error)
- func (p *WxPayV2ServiceImpl) QueryOrderBy(outTradeNo, transactionId string) (*WxPayOrderQueryResult, error)
- func (p *WxPayV2ServiceImpl) SetWxPayConfig(config *WxPayConfig)
- func (p *WxPayV2ServiceImpl) UnifyOrder(request *WxPayUnifiedOrderRequest) (*WxPayUnifiedOrderResult, error)
- func (p *WxPayV2ServiceImpl) UnifyPay(request *WxPayUnifiedOrderRequest) ([]byte, error)
Constants ¶
This section is empty.
Variables ¶
View Source
var Ignores = []string{"sign", "key", "xmlString", "xmlDoc", "couponList"}
Functions ¶
This section is empty.
Types ¶
type BaseWxPayRequest ¶
type BaseWxPayRequest struct { XMLName xml.Name `xml:"xml" json:"-"` // 公众号或者小程序appId AppId string `json:"appid" xml:"appid"` // 商户号. MchId string `json:"mch_id" xml:"mch_id"` // 服务商模式下的子商户公众账号ID. SubAppId string `json:"sub_app_id,omitempty" xml:"sub_app_id,omitempty"` // 服务商模式下的子商户号. SubMchId string `json:"sub_mch_id,omitempty" xml:"sub_mch_id,omitempty"` // 随机字符串.不长于32位。推荐随机数生成算法 NonceStr string `json:"nonce_str" xml:"nonce_str"` // 签名. Sign string `json:"sign,omitempty" xml:"sign,omitempty"` // 签名类型. SignType SignType `json:"sign_type" xml:"sign_type,omitempty"` // 企业微信签名 WorkWxSign string `json:"work_wx_sign,omitempty" xml:"work_wx_sign,omitempty"` }
type BaseWxPayResult ¶
type BaseWxPayResult struct { common.Err RetMsg string `json:"retmsg" xml:"retmsg"` ReturnCode string `json:"return_code" xml:"return_code"` ReturnMsg string `json:"return_msg" xml:"return_msg"` ResultCode string `json:"result_code" xml:"result_code"` ErrCode string `json:"err_code" xml:"err_code"` ErrCodeDes string `json:"err_code_des" xml:"err_code_des"` AppId string `json:"appid" xml:"appid"` MchId string `json:"mch_id" xml:"mch_id"` SubAppId string `json:"sub_app_id" xml:"sub_app_id"` SubMchId string `json:"sub_mch_id" xml:"sub_mch_id"` NonceStr string `json:"nonce_str" xml:"nonce_str"` Sign string `json:"sign" xml:"sign"` }
type Coupon ¶
type Coupon struct { CouponType string `json:"coupon_type" xml:"coupon_type"` CouponId string `json:"coupon_id" xml:"coupon_id"` CouponFee int `json:"coupon_fee" xml:"coupon_fee"` }
func ComposeCoupons ¶
type EntPayRequest ¶
type EntPayRequest struct { }
type EntPayResult ¶
type EntPayResult struct { }
type WxEntPayService ¶
type WxEntPayService interface {
EntPay(*EntPayRequest) *EntPayResult
}
type WxEntPayServiceImpl ¶
type WxEntPayServiceImpl struct {
// contains filtered or unexported fields
}
func (*WxEntPayServiceImpl) EntPay ¶
func (w *WxEntPayServiceImpl) EntPay(*EntPayRequest) *EntPayResult
type WxPayConfig ¶
type WxPayConfig struct { AppId string `json:"app_id"` // 公众号/小程序 appid MchId string `json:"mch_id"` // 微信支付商户号. MchKey string `json:"mch_key"` // 微信支付商户密钥. NotifyUrl string `json:"notify_url"` // 微信支付异步回掉地址,通知url必须为直接可访问的url,不能携带参数. KeyPath string `json:"key_path"` // apiclient_cert.p12文件的绝对路径,或者如果放在项目中,请以classpath:开头指定. SubAppId string `json:"sub_app_id"` // 服务商模式下的子商户公众账号ID,普通模式请不要配置,请在配置文件中将对应项删除. SubMchId string `json:"sub_mch_id"` // 服务商模式下的子商户号,普通模式请不要配置,最好是请在配置文件中将对应项删除. TradeType TradeType `json:"trade_type"` // 交易类型. SignType SignType `json:"sign_type"` // 签名方式. EntPayKey string `json:"ent_pay_key"` // 企业支付密钥. PrivateKeyPath string `json:"private_key_path"` // apiv3 商户apiclient_key.pem PrivateCertPath string `json:"private_cert_path"` // apiv3 商户apiclient_cert.pem ApiV3Key string `json:"api_v_3_key"` // apiV3 秘钥值. CertSerialNo string `json:"cert_serial_no"` // apiV3 证书序列号值 ServiceId string `json:"service_id"` // 微信支付分serviceId PayScoreNotifyUrl string `json:"pay_score_notify_url"` // 微信支付分回调地址 PrivateKey string `json:"private_key"` // 私钥信息 ApiV3HttpClient string `json:"api_v_3_http_client"` CertAutoUpdateTime int `json:"cert_auto_update_time"` // 证书自动更新时间差(分钟),默认一分钟 KeyContent []byte `json:"key_content"` // p12证书文件内容的字节数组. PayBaseUrl string `json:"pay_base_url"` // 微信支付接口请求地址域名部分. HttpConnectionTimeout int `json:"http_connection_timeout"` // http请求连接超时时间 5000 HttpTimeout int `json:"http_timeout"` // http请求数据读取等待时间 10000 UseSandboxEnv bool `json:"use_sandbox_env"` IfSaveApiData bool `json:"if_save_api_data"` HttpProxyHost string `json:"http_proxy_host"` HttpProxyPort string `json:"http_proxy_port"` HttpProxyUsername string `json:"http_proxy_username"` HttpProxyPassword string `json:"http_proxy_password"` }
func NewBaseV2Config ¶
func NewBaseV2Config(appId, mchId, mchKey, notifyUrl, keyPath string) *WxPayConfig
func (*WxPayConfig) GetPayBaseUrl ¶
func (c *WxPayConfig) GetPayBaseUrl() string
type WxPayOrderCloseRequest ¶
type WxPayOrderCloseRequest struct { BaseWxPayRequest OutTradeNo string `json:"out_trade_no" xml:"out_trade_no"` }
type WxPayOrderCloseResult ¶
type WxPayOrderCloseResult struct { BaseWxPayResult // 业务结果描述 ResultMsg string `json:"result_msg" xml:"result_msg"` }
type WxPayOrderQueryRequest ¶
type WxPayOrderQueryRequest struct { BaseWxPayRequest Version string `json:"version" xml:"version"` TransactionId string `json:"transaction_id" xml:"transaction_id"` OutTradeNo string `json:"out_trade_no" xml:"out_trade_no"` }
type WxPayOrderQueryResult ¶
type WxPayOrderQueryResult struct { BaseWxPayResult PromotionDetail string `json:"promotion_detail" xml:"promotion_detail"` DeviceInfo string `json:"device_info" xml:"device_info"` Openid string `json:"openid" xml:"openid"` IsSubscribe string `json:"is_subscribe" xml:"is_subscribe"` SubOpenid string `json:"sub_openid" xml:"sub_openid"` IsSubscribeSub string `json:"is_subscribe_sub" xml:"is_subscribe_sub"` TradeType string `json:"trade_type" xml:"trade_type"` TradeState string `json:"trade_state" xml:"trade_state"` BankType string `json:"bank_type" xml:"bank_type"` Detail string `json:"detail" xml:"detail"` TotalFee int `json:"total_fee" xml:"total_fee"` FeeType string `json:"fee_type" xml:"fee_type"` SettlementTotalFee int `json:"settlement_total_fee" xml:"settlement_total_fee"` CashFee int `json:"cash_fee" xml:"cash_fee"` CashFeeType string `json:"cash_fee_type" xml:"cash_fee_type"` CouponFee int `json:"coupon_fee" xml:"coupon_fee"` CouponCount int `json:"coupon_count" xml:"coupon_count"` Coupons []*Coupon `json:"coupons" xml:"coupons"` TransactionId string `json:"transaction_id" xml:"transaction_id"` OutTradeNo string `json:"out_trade_no" xml:"out_trade_no"` Attach string `json:"attach" xml:"attach"` TimeEnd string `json:"time_end" xml:"time_end"` TradeStateDesc string `json:"trade_state_desc" xml:"trade_state_desc"` }
type WxPaySandboxSignKeyResult ¶
type WxPaySandboxSignKeyResult struct { BaseWxPayResult SandboxSignkey string `json:"sandbox_signkey" xml:"sandbox_signkey"` }
type WxPayService ¶
type WxPayService interface { // 执行Post请求 Post(url string, contentType string, data interface{}, args ...interface{}) ([]byte, error) // Post 执行Post请求并将结果转成对象 PostFor(v interface{}, url string, contentType string, data interface{}, args ...interface{}) error // Post 携带证书执行Post请求 PostKey(url string, data interface{}, certPath, keyPath string, args ...interface{}) ([]byte, error) // Post 携带证书执行Post请求并将结果转成对象 PostKeyFor(v interface{}, url string, data interface{}, certPath, keyPath string, args ...interface{}) error // 获取微信支付请求url前缀,沙箱环境可能不一样. GetPayBaseUr() string // 统一支付 // 调用统一下单接口,并组装生成支付所需参数对象. UnifyPay(*WxPayUnifiedOrderRequest) ([]byte, error) /** 统一下单 (详见https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1) 在发起微信支付前,需要调用统一下单接口,获取"预支付交易会话标识" 接口地址:https://api.mch.weixin.qq.com/pay/unifiedorder */ UnifyOrder(*WxPayUnifiedOrderRequest) (*WxPayUnifiedOrderResult, error) /* 关闭订单. 应用场景 以下情况需要调用关单接口: 1. 商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付; 2. 系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口。 注意:订单生成后不能马上调用关单接口,最短调用时间间隔为5分钟。 接口地址:https://api.mch.weixin.qq.com/pay/closeorder 是否需要证书: 不需要。 */ CloseOrderBy(string) (*WxPayOrderCloseResult, error) /* 关闭订单. 应用场景 以下情况需要调用关单接口: 1. 商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付; 2. 系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口。 注意:订单生成后不能马上调用关单接口,最短调用时间间隔为5分钟。 接口地址:https://api.mch.weixin.qq.com/pay/closeorder 是否需要证书: 不需要。 */ CloseOrder(*WxPayOrderCloseRequest) (*WxPayOrderCloseResult, error) /* 查询订单(适合于需要自定义子商户号和子商户appid的情形). 详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_2 该接口提供所有微信支付订单的查询,商户可以通过查询订单接口主动查询订单状态,完成下一步的业务逻辑。 需要调用查询接口的情况: ◆ 当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知; ◆ 调用支付接口后,返回系统错误或未知交易状态情况; ◆ 调用被扫支付API,返回USERPAYING的状态; ◆ 调用关单或撤销接口API之前,需确认支付状态; */ QueryOrderBy(outTradeNo, transactionId string) (*WxPayOrderQueryResult, error) /* 查询订单(适合于需要自定义子商户号和子商户appid的情形). 详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_2 该接口提供所有微信支付订单的查询,商户可以通过查询订单接口主动查询订单状态,完成下一步的业务逻辑。 需要调用查询接口的情况: ◆ 当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知; ◆ 调用支付接口后,返回系统错误或未知交易状态情况; ◆ 调用被扫支付API,返回USERPAYING的状态; ◆ 调用关单或撤销接口API之前,需确认支付状态; */ QueryOrder(*WxPayOrderQueryRequest) (*WxPayOrderQueryResult, error) // 获取配置 GetWxPayConfig() *WxPayConfig // 设置配置 SetWxPayConfig(*WxPayConfig) // 获取提现接口 GetEntPayService() WxEntPayService GetSandboxSignKey(*BaseWxPayRequest) (*WxPaySandboxSignKeyResult, error) }
func NewWxPayService ¶
func NewWxPayService(appId, mchId, mchKey, notifyUrl, keyPath string) WxPayService
func NewWxPayServiceFor ¶
func NewWxPayServiceFor(config *WxPayConfig) WxPayService
type WxPayUnifiedOrderRequest ¶
type WxPayUnifiedOrderRequest struct { XMLName xml.Name `xml:"xml" json:"-"` BaseWxPayRequest /* 总金额. 订单总金额,单位为分,详见支付金额 */ TotalFee uint64 `json:"total_fee" xml:"total_fee"` /* 通知地址. 接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。 */ NotifyUrl string `json:"notify_url" xml:"notify_url"` /* 用户标识. trade_type=JSAPI,此参数必传,用户在商户appid下的唯一标识。 openid如何获取,可参考【获取openid】。 企业号请使用【企业号OAuth2.0接口】获取企业号内成员userid,再调用【企业号userid转openid接口】进行转换 */ Openid string `json:"openid" xml:"openid"` // 商品描述. Body string `json:"body" xml:"body"` /* 商户订单号. 商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号 */ OutTradeNo string `json:"out_trade_no" xml:"out_trade_no"` /* 附加数据. 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据 */ Attach string `json:"attach,omitempty" xml:"attach,omitempty"` /* 终端IP. APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP。 */ SpbillCreateIp string `json:"spbill_create_ip,omitempty" xml:"spbill_create_ip,omitempty"` /* 接口版本号. 是否必填:单品优惠必填 类型:String(32) 示例值:1.0 描述:单品优惠新增字段,接口版本号,区分原接口,默认填写1.0。 入参新增version后,则支付通知接口也将返回单品优惠信息字段promotion_detail,请确保支付通知的签名验证能通过。 更多信息,详见文档:https://pay.weixin.qq.com/wiki/doc/api/danpin.php?chapter=9_102&index=2 */ Version string `json:"version,omitempty" xml:"version,omitempty"` /* 设备号. 类型:String(32) 终端设备号(门店号或收银设备Id),注意:PC网页或公众号内支付请传"WEB" */ DeviceInfo string `json:"device_info,omitempty" xml:"device_info,omitempty"` // 商品详情. Detail string `json:"detail,omitempty" xml:"detail,omitempty"` /* 货币类型. 符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型 */ FeeType string `json:"fee_type,omitempty" xml:"fee_type,omitempty"` /* 交易起始时间. 订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则 */ TimeStart string `json:"time_start,omitempty" xml:"time_start,omitempty"` /* 交易结束时间. 订单失效时间,格式为yyyyMMddHHmmss,如2009年12月27日9点10分10秒表示为20091227091010。其他详见时间规则 注意:最短失效时间间隔必须大于5分钟 */ TimeExpire string `json:"time_expire,omitempty" xml:"time_expire,omitempty"` GoodsTag string `json:"goods_tag,omitempty" xml:"goods_tag,omitempty"` /* 交易类型. 取值如下: JSAPI--公众号支付、 NATIVE --原生扫码支付、 APP--app支付,统一下单接口trade_type的传参可参考这里 */ TradeType TradeType `json:"trade_type" xml:"trade_type"` ProductId string `json:"product_id,omitempty" xml:"product_id,omitempty"` LimitPay string `json:"limit_pay,omitempty" xml:"limit_pay,omitempty"` SubOpenid string `json:"sub_openid,omitempty" xml:"sub_openid,omitempty"` Receipt string `json:"receipt,omitempty" xml:"receipt,omitempty"` SceneInfo string `json:"scene_info,omitempty" xml:"scene_info,omitempty"` Fingerprint string `json:"fingerprint,omitempty" xml:"fingerprint,omitempty"` ProfitSharing string `json:"profit_sharing,omitempty" xml:"profit_sharing,omitempty"` }
type WxPayUnifiedOrderResult ¶
type WxPayUnifiedOrderResult struct { BaseWxPayResult // 微信生成的预支付回话标识,用于后续接口调用中使用,该值有效期为2小时 PrepayId string `json:"prepay_id" xml:"prepay_id"` // 交易类型,取值为:JSAPI,NATIVE,APP等 TradeType TradeType `json:"trade_type" xml:"trade_type"` // mweb_url 支付跳转链接 MwebUrl string `json:"mweb_url" xml:"mweb_url"` // trade_type为NATIVE时有返回,用于生成二维码,展示给用户进行扫码支付 CodeURL string `json:"code_url" xml:"code_url"` }
type WxPayV2ServiceImpl ¶
type WxPayV2ServiceImpl struct {
// contains filtered or unexported fields
}
func (*WxPayV2ServiceImpl) CloseOrder ¶
func (p *WxPayV2ServiceImpl) CloseOrder(request *WxPayOrderCloseRequest) (*WxPayOrderCloseResult, error)
func (*WxPayV2ServiceImpl) CloseOrderBy ¶
func (p *WxPayV2ServiceImpl) CloseOrderBy(outTradeNo string) (*WxPayOrderCloseResult, error)
func (*WxPayV2ServiceImpl) GetEntPayService ¶
func (p *WxPayV2ServiceImpl) GetEntPayService() WxEntPayService
func (*WxPayV2ServiceImpl) GetPayBaseUr ¶
func (p *WxPayV2ServiceImpl) GetPayBaseUr() string
func (*WxPayV2ServiceImpl) GetSandboxSignKey ¶
func (p *WxPayV2ServiceImpl) GetSandboxSignKey(request *BaseWxPayRequest) (*WxPaySandboxSignKeyResult, error)
func (*WxPayV2ServiceImpl) GetWxPayConfig ¶
func (p *WxPayV2ServiceImpl) GetWxPayConfig() *WxPayConfig
func (*WxPayV2ServiceImpl) Post ¶
func (p *WxPayV2ServiceImpl) Post(url string, contentType string, data interface{}, args ...interface{}) ([]byte, error)
func (*WxPayV2ServiceImpl) PostFor ¶
func (p *WxPayV2ServiceImpl) PostFor(v interface{}, url string, contentType string, data interface{}, args ...interface{}) error
func (*WxPayV2ServiceImpl) PostKey ¶
func (p *WxPayV2ServiceImpl) PostKey(url string, data interface{}, certPath, keyPath string, args ...interface{}) ([]byte, error)
func (*WxPayV2ServiceImpl) PostKeyFor ¶
func (p *WxPayV2ServiceImpl) PostKeyFor(v interface{}, url string, data interface{}, certPath, keyPath string, args ...interface{}) error
func (*WxPayV2ServiceImpl) QueryOrder ¶
func (p *WxPayV2ServiceImpl) QueryOrder(request *WxPayOrderQueryRequest) (*WxPayOrderQueryResult, error)
func (*WxPayV2ServiceImpl) QueryOrderBy ¶
func (p *WxPayV2ServiceImpl) QueryOrderBy(outTradeNo, transactionId string) (*WxPayOrderQueryResult, error)
func (*WxPayV2ServiceImpl) SetWxPayConfig ¶
func (p *WxPayV2ServiceImpl) SetWxPayConfig(config *WxPayConfig)
func (*WxPayV2ServiceImpl) UnifyOrder ¶
func (p *WxPayV2ServiceImpl) UnifyOrder(request *WxPayUnifiedOrderRequest) (*WxPayUnifiedOrderResult, error)
func (*WxPayV2ServiceImpl) UnifyPay ¶
func (p *WxPayV2ServiceImpl) UnifyPay(request *WxPayUnifiedOrderRequest) ([]byte, error)
Click to show internal directories.
Click to hide internal directories.