gowe

package module
v1.1.2 Latest Latest
Warning

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

Go to latest
Published: Jul 9, 2021 License: Apache-2.0 Imports: 24 Imported by: 0

README

介绍

golang 多微信号SDK,readygo子项目 API文档

感谢 https://gitee.com/xiaochengtech/wechat 提供的基础代码

go get gitee.com/chunanyong/gowe 
  • 支持境内普通商户和境内服务商(境外和银行服务商没有条件测试)
  • 全部参数和返回值均使用struct类型传递
  • 缓存前置,使用项目现有的缓存体系
  • 原生支持多微信号
  • 支持跳板请求微信API服务.例如内网服务器没有网络出口权限,可以使用Nginx跳板请求微信API服务
  • 原生支持集群部署

初始化

type WxConfig struct {
	Id     string
	AppId  string
	Secret string
}

var wxConfig = &WxConfig{
	Id:     "test",
	AppId:  "XXXXXXXXXXXXXXxxx",
	Secret: "XXXXXXXXXXXXXXX",
}

func (wxConfig *WxConfig) GetId() string {
	return wxConfig.Id
}

func (wxConfig *WxConfig) GetAppId() string {
	return wxConfig.AppId
}

func (wxConfig *WxConfig) GetAccessToken() string {
	//从缓存中获取wxAccessToken,这里只是演示
	wxAccessToken, err := gowe.GetAccessToken(wxConfig)
	if err == nil && wxAccessToken.ErrCode == 0 {
		return wxAccessToken.AccessToken
	}
	return ""
}

func (wxConfig *WxConfig) GetSecret() string {
	return wxConfig.Secret
}

使用

以下是通用的接口,WxConfig 设置为全局变量,使用gowe.XXX调用

使用样例:


func TestGetAccessToken(t *testing.T)  {
	token, err := gowe.GetAccessToken(wx)
	if err != nil {
		t.Log("error:" ,err)
	}
	t.Log("token:",token)
}

微信支付

  • 提交付款码支付 WxPayMicropay
  • 统一下单:WxPayUnifiedOrder
  • 查询订单:WxPayQueryOrder
  • 关闭订单:WxPayCloseOrder
  • 撤销订单:WxPayReverse
  • 申请退款:WxPayRefund
  • 查询退款:WxPayQueryRefund
  • 下载对账单:WxPayDownloadBill
  • 交易保障(JSAPI):WxPayReportJsApi
  • 交易保障(MICROPAY):WxPayReportMicropay

微信红包

  • 发送现金红包 WxPaySendRedPack
  • 发送裂变红包 WxPaySendGroupRedPack
  • 发送小程序红包 WxPaySendMiniProgramHB
  • 查询红包记录 WxPayGetHBInfo

企业付款

  • 企业付款到零钱 WxPayPromotionMktTransfers
  • 查询企业付款 WxPayQueryMktTransfer

微信支付回调

  • 支付回调:WxPayNotifyPay
  • 退款回调:WxPayNotifyRefund

微信公众号

  • 获取基础支持的AccessToken:WxMpWebAuthAccessToken
  • 获取用户基本信息(UnionId机制):WxMpGetUserInfo
  • 获取H5支付签名:WxPayH5Sign
  • 临时二维码:WxMpQrCreateTemporary
  • 永久二维码:WxMpQrCreatePermanent
  • 发送模板消息:WxMpTemplateMsgSend
  • 发送订阅消息: WxMpSubscribeMsgSend

微信小程序

  • 获取小程序支付签名:WxPayMaSign
  • 获取小程序码:WxMaCodeGetUnlimited
  • 发送订阅消息:WxMaSubscribeMessageSend

文档

Documentation

Index

Constants

View Source
const (

	//ServiceTypeNormalDomestic 服务模式-境内普通商户
	ServiceTypeNormalDomestic = 1
	//ServiceTypeNormalAbroad 服务模式-境外普通商户
	ServiceTypeNormalAbroad = 2
	//ServiceTypeFacilitatorDomestic 服务模式-境内服务商
	ServiceTypeFacilitatorDomestic = 3
	//ServiceTypeFacilitatorAbroad 服务模式-境外服务商
	ServiceTypeFacilitatorAbroad = 4
	//ServiceTypeBankServiceProvidor 服务模式-银行服务商
	ServiceTypeBankServiceProvidor = 5

	//TradeTypeMiniApp 支付类型-小程序支付
	TradeTypeMiniApp = "JSAPI"
	//TradeTypeJsApi 支付类型-JSAPI支付
	TradeTypeJsApi = "JSAPI"
	//TradeTypeApp 支付类型-APP支付
	TradeTypeApp = "APP"
	//TradeTypeH5 支付类型-H5支付
	TradeTypeH5 = "MWEB"
	//TradeTypeNative 支付类型-Native支付
	TradeTypeNative = "NATIVE"
	//TradeTypeMicropay 支付类型-付款码支付
	TradeTypeMicropay = "MICROPAY"

	//SignTypeMD5 签名方式-默认MD5
	SignTypeMD5 = "MD5"
	//SignTypeHmacSHA256 签名方式-HMAC-SHA256
	SignTypeHmacSHA256 = "HMAC-SHA256"
)

Variables

View Source
var FuncGenerateRandomString func(int) string = generateRandomString

FuncGenerateRandomString 生成指定位数的随机字符串

View Source
var WxMpAPIURL = "https://api.weixin.qq.com"

微信API的服务器域名,方便处理请求代理跳转的情况

View Source
var WxMpOpenURL = "https://open.weixin.qq.com"
View Source
var WxMpWeiXinURL = "https://mp.weixin.qq.com"
View Source
var WxPayAppURL = "https://payapp.weixin.qq.com"
View Source
var WxPayMchAPIURL = "https://api.mch.weixin.qq.com"
View Source
var WxPayReporMchtURL = "http://report.mch.weixin.qq.com"
View Source
var WxPaySanBoxAPIURL = "https://api.mch.weixin.qq.com/sandboxnew"
View Source
var WxQyAPIURL = "https://qyapi.weixin.qq.com"

Functions

func WxJSSDKTicketSign added in v1.0.4

func WxJSSDKTicketSign(nonceStr, ticket, timeStamp, url string) (ticketSign string)

WxJSSDKTicketSign 生成JS-SDK权限验证的签名 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#62

func WxMpQrShowQrCodeUrl

func WxMpQrShowQrCodeUrl(wxMpConfig IWxMpConfig, ticket string) (string, error)

WxMpQrShowQrCodeUrl 通过ticket换取二维码地址

func WxMpSubscribeMsgURL added in v1.0.6

func WxMpSubscribeMsgURL(body *WxMpSubscribeMsgURLBody) (string, error)

WxMpSubscribeMsgURL 构造订阅模板消息的授权URL

func WxMpWrapAuthorizeURL

func WxMpWrapAuthorizeURL(wxMpConfig IWxMpConfig, redirectUri string, snsapiBase bool) (string, error)

WxMpWrapAuthorizeURL 包装网页授权的url

func WxPayAppSign

func WxPayAppSign(appId, nonceStr, partnerId, prepayId, signType, timeStamp, apiKey string) (paySign string)

WxPayAppSign APP支付,统一下单获取支付参数后,再次计算APP支付所需要的的sign https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_3

func WxPayJSAPISign added in v1.0.4

func WxPayJSAPISign(appId, nonceStr, packages, signType, timeStamp, apiKey string) (paySign string)

WxPayJSAPISign 统一下单获取prepay_id参数后,再次计算出JSAPI需要的sign https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6

func WxPayMaSign added in v1.0.4

func WxPayMaSign(appId, nonceStr, packages, signType, timeStamp, apiKey string) (paySign string)

WxPayMaSign 统一下单获取prepay_id参数后,再次计算出小程序需要的sign https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=5

func WxPayNotifyPay

func WxPayNotifyPay(wxPayConfig IWxPayConfig, requestBody []byte, handler func(wxPayNotifyPayBody WxPayNotifyPayBody) error) (rspBody string, err error)

WxPayNotifyPay 支付结果通知

Types

type IWxConfig

type IWxConfig interface {
	//Id 数据库记录的Id
	GetId() string
	//AppId 微信号的appId
	GetAppId() string
	//AccessToken 获取到AccessToken
	GetAccessToken() string
	//Secret 微信号的secret
	GetSecret() string
}

IWxConfig 微信的基础配置

type IWxMaConfig

type IWxMaConfig interface {
	IWxConfig
}

IWxMaConfig 微信小程序配置

type IWxMpConfig

type IWxMpConfig interface {
	IWxConfig
	//Token 获取token
	GetToken() string
	//AesKey 获取aesKey
	GetAesKey() string
	//开启oauth2.0认证,是否能够获取openId,0是关闭,1是开启
	GetOauth2() bool
}

IWxMpConfig 公众号的配置

type IWxPayConfig

type IWxPayConfig interface {
	IWxConfig
	//证数文件路径
	GetCertificateFile() string
	//支付的mchId
	GetMchId() string
	GetSubAppId() string // 微信分配的子商户公众账号ID
	GetSubMchId() string // 微信支付分配的子商户号,开发者模式下必填
	//获取 API 密钥
	GetAPIKey() string
	//支付通知回调的地址
	GetNotifyUrl() string
	//摘要加密类型
	GetSignType() string
	GetServiceType() int // 服务模式
	IsProd() bool        // 是否是生产环境

}

IWxPayConfig 公众号的配置

type ResponseBase

type ResponseBase struct {
	ErrCode int    `json:"errcode"` // 错误码
	ErrMsg  string `json:"errmsg"`  // 错误信息
}

ResponseBase 返回结果的通信标识

type SessionKey

type SessionKey struct {
	OpenId     string `json:"openid"`      // 用户唯一标识
	SessionKey string `json:"session_key"` // 会话密钥
	UnionId    string `json:"unionid"`     // 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段.
	ErrCode    int    `json:"errcode"`     // 错误码
	ErrMsg     string `json:"errmsg"`      // 错误信息
}

SessionKey jsCode换取用户信息,获得sessionKey

func WxMaCode2Session

func WxMaCode2Session(wxMaConfig IWxMaConfig, jsCode string) (*SessionKey, error)

WxMaCode2Session 登录凭证校验.通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程 https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html

type WxAccessToken

type WxAccessToken struct {
	AccessToken            string `json:"access_token"`  // 获取到的凭证
	ExpiresIn              int    `json:"expires_in"`    // SessionKey超时时间(秒)
	RefreshToken           string `json:"refresh_token"` // 用户刷新access_tokenOpenId
	OpenId                 string `json:"openid"`        // 用户唯一标识
	Scope                  string `json:"scope"`         // 用户授权的作用域
	ErrCode                int    `json:"errcode"`       // 错误码
	ErrMsg                 string `json:"errmsg"`        // 错误信息
	AccessTokenExpiresTime int64  //过期的时间,验证是否过期
}

WxAccessToken 微信accessToken

func GetAccessToken

func GetAccessToken(wxConfig IWxConfig) (*WxAccessToken, error)

GetAccessToken 获取 access token,如果未取到或者 access token 不可用则先更新再获取

func WxMpWebAuthAccessToken

func WxMpWebAuthAccessToken(wxMpConfig IWxMpConfig, code string) (*WxAccessToken, error)

WxMpWebAuthAccessToken 用code换取accessToken. 认证的accessToken 和API的accessToken不一样,暂时使用同一个struct进行接收

func WxMpWebAuthRefreshAccessToken

func WxMpWebAuthRefreshAccessToken(wxMpConfig IWxMpConfig, refreshToken string) (*WxAccessToken, error)

WxMpWebAuthRefreshAccessToken 刷新认证的AccessToken.认证的accessToken 和API的accessToken不一样,暂时使用同一个struct进行接收

func (*WxAccessToken) IsAccessTokenExpired

func (wxAccessToken *WxAccessToken) IsAccessTokenExpired() bool

IsAccessTokenExpired token是否过期

type WxCardTicket

type WxCardTicket struct {
	CardTicket            string `json:"ticket"`     // 获取到的凭证
	ExpiresIn             int    `json:"expires_in"` // SessionKey超时时间(秒)
	ErrCode               int    `json:"errcode"`    // 错误码
	ErrMsg                string `json:"errmsg"`     // 错误信息
	CardTicketExpiresTime int64
}

WxCardTicket 微信卡券Ticket

func GetCardTicket

func GetCardTicket(wxConfig IWxConfig) (*WxCardTicket, error)

GetCardTicket 获取cardTicket

func (*WxCardTicket) IsCardTicketExpired

func (wxCardTicket *WxCardTicket) IsCardTicketExpired() bool

IsCardTicketExpired 微信卡券Ticket是否过期

type WxJsTicket

type WxJsTicket struct {
	JsTicket            string `json:"ticket"`     // 获取到的凭证
	ExpiresIn           int    `json:"expires_in"` // SessionKey超时时间(秒)
	ErrCode             int    `json:"errcode"`    // 错误码
	ErrMsg              string `json:"errmsg"`     // 错误信息
	JsTicketExpiresTime int64
}

WxJsTicket 微信WxJsTicket

func GetJsTicket

func GetJsTicket(wxConfig IWxConfig) (*WxJsTicket, error)

GetJsTicket 获取jsTicket

func (*WxJsTicket) IsJsTicketExpired

func (wxJsTicket *WxJsTicket) IsJsTicketExpired() bool

IsJsTicketExpired WxJsTicket 是否过期

type WxMaAuthGetPaidUnionIdResponse

type WxMaAuthGetPaidUnionIdResponse struct {
	UnionId string `json:"unionid"` // 用户唯一标识,调用成功后返回
	ErrCode int    `json:"errcode"` // 错误码
	ErrMsg  string `json:"errmsg"`  // 错误信息
}

WxMaAuthGetPaidUnionIdResponse 支付后获取用户unionid

func WxMaAuthGetPaidUnionId

func WxMaAuthGetPaidUnionId(wxMaConfig IWxMaConfig, openId string) (*WxMaAuthGetPaidUnionIdResponse, error)

WxMaAuthGetPaidUnionId 用户支付完成后,获取该用户的 UnionId,无需用户授权.本接口支持第三方平台代理查询

type WxMaCodeGetUnlimitedBody

type WxMaCodeGetUnlimitedBody struct {
	Scene      string `json:"scene"`                // 最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)
	Page       string `json:"page,omitempty"`       // 必须是已经发布的小程序存在的页面(否则报错),例如 pages/index/index, 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面
	Width      int64  `json:"width,omitempty"`      // 二维码的宽度,单位 px,最小 280px,最大 1280px
	AutoColor  bool   `json:"auto_color,omitempty"` // 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调,默认 false
	LineColorR uint8  `json:"-"`                    // auto_color为false时生效,使用rgb设置颜色
	LineColorG uint8  `json:"-"`                    // auto_color为false时生效,使用rgb设置颜色
	LineColorB uint8  `json:"-"`                    // auto_color为false时生效,使用rgb设置颜色
	IsHyaline  bool   `json:"is_hyaline,omitempty"` // 是否需要透明底色,为true时,生成透明底色的小程序
}

WxMaCodeGetUnlimitedBody 小程序码请求参数

type WxMaTemplateMsgSendBody

type WxMaTemplateMsgSendBody struct {
	Touser     string `json:"touser"`         // 接收者(用户)的 openid
	TemplateId string `json:"template_id"`    // 所需下发的模板消息的id
	Page       string `json:"page,omitempty"` // 点击模板卡片后的跳转页面,仅限本小程序内的页面.支持带参数,(示例index?foo=bar).该字段不填则模板无跳转.

	//发送订阅消息的属性
	MiniprogramState string `json:"miniprogram_state,omitempty"` //跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
	Lang             string `json:"lang,omitempty"`              //进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN
	// contains filtered or unexported fields
}

WxMaTemplateMsgSendBody 小程序模板消息的请求参数

func (*WxMaTemplateMsgSendBody) AddData

func (wxMaTemplateMsg *WxMaTemplateMsgSendBody) AddData(key string, value string)

AddData 模板内容,不填则下发空模板.具体格式请参考示例.

type WxMpQrCreateResponse

type WxMpQrCreateResponse struct {
	Ticket        string `json:"ticket"`         // 获取的二维码ticket,凭借此ticket可以在有效时间内换取二维码.
	ExpireSeconds int    `json:"expire_seconds"` // 该二维码有效时间,以秒为单位. 最大不超过2592000(即30天)
	URL           string `json:"url"`            //二维码图片解析后的地址,开发者可根据该地址自行生成需要的二维码图片
}

func WxMpQrCreatePermanent

func WxMpQrCreatePermanent(wxMpConfig IWxMpConfig, sceneStr string) (*WxMpQrCreateResponse, error)

WxMpQrCreatePermanent 创建永久的带参数二维码

func WxMpQrCreateTemporary

func WxMpQrCreateTemporary(wxMpConfig IWxMpConfig, sceneStr string, expireSeconds int) (*WxMpQrCreateResponse, error)

WxMpQrCreateTemporary 生成带参数的临时二维码 API https://developers.weixin.qq.com/doc/offiaccount/Account_Management/Generating_a_Parametric_QR_Code.html expireSeconds:该二维码有效时间,以秒为单位. 最大不超过2592000(即30天),默认2592000 sceneStr:场景值ID(字符串形式的ID),字符串类型,长度限制为1到64.这里只使用字符串了,用途更广

type WxMpSubscribeMsgSendBody added in v1.0.6

type WxMpSubscribeMsgSendBody struct {
	Scene string `json:"scene"` //订阅场景值
	Title string `json:"title"` // 消息标题,15字以内
	// contains filtered or unexported fields
}

WxMpSubscribeMsgSendBody 一次订阅消息的请求参数

func (*WxMpSubscribeMsgSendBody) AddData added in v1.0.6

func (wxMpTemplateMsg *WxMpSubscribeMsgSendBody) AddData(key string, value string, color string)

AddData 模板内容,不填则下发空模板.具体格式请参考示例,color默认#173177

type WxMpSubscribeMsgURLBody added in v1.0.6

type WxMpSubscribeMsgURLBody struct {
	AppId       string //公众号的唯一标识
	Scene       string //重定向后会带上scene参数,开发者可以填0-10000的整形值,用来标识订阅场景值
	TemplateId  string //订阅消息模板ID,登录公众平台后台,在接口权限列表处可查看订阅模板ID
	RedirectURL string //授权后重定向的回调地址,请使用UrlEncode对链接进行处理。 注:要求redirect_url的域名要跟登记的业务域名一致,且业务域名不能带路径。 业务域名需登录公众号,在设置-公众号设置-功能设置里面对业务域名设置。
	Reserved    string //用于保持请求和回调的状态,授权请后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验,开发者可以填写a-zA-Z0-9的参数值,最多128字节,要求做urlencode
}

用于生成授权URL的实体类

type WxMpTemplateMsgSendBody

type WxMpTemplateMsgSendBody struct {
	EmphasisKeyword string `json:"emphasis_keyword,omitempty"` // 模板需要放大的关键词,不填则默认无放大
	// contains filtered or unexported fields
}

WxMpTemplateMsgSendBody 模板消息的请求参数

func (*WxMpTemplateMsgSendBody) AddData

func (wxMpTemplateMsg *WxMpTemplateMsgSendBody) AddData(key string, value string, color string)

AddData 模板内容,不填则下发空模板.具体格式请参考示例,color默认#173177

type WxMpTemplateMsgSendResponse

type WxMpTemplateMsgSendResponse struct {
	MsgId   int64  `json:"msgid"`   // 用户唯一标识,调用成功后返回
	ErrCode int    `json:"errcode"` // 错误码
	ErrMsg  string `json:"errmsg"`  // 错误信息
}

WxMpTemplateMsgSendResponse 发送模板消息的返回值

func WxMpTemplateMsgSend

func WxMpTemplateMsgSend(wxMpConfig IWxMpConfig, body *WxMpTemplateMsgSendBody) (*WxMpTemplateMsgSendResponse, error)

WxMpTemplateMsgSend 发送模板消息

type WxMpUserInfo

type WxMpUserInfo struct {
	OpenId         string   `json:"openid"`          // 用户唯一标识
	Nickname       string   `json:"nickname"`        // 用户的昵称
	Sex            int      `json:"sex"`             // 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
	Language       string   `json:"language"`        // 用户的语言,简体中文为zh_CN
	Province       string   `json:"province"`        // 用户所在省份
	City           string   `json:"city"`            // 用户所在城市
	Country        string   `json:"country"`         // 用户所在国家
	HeadimgUrl     string   `json:"headimgurl"`      // 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空.若用户更换头像,原有头像URL将失效.
	Privilege      []string `json:"privilege"`       // 用户特权信息
	UnionId        string   `json:"unionid"`         // 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段.
	Subscribe      int      `json:"subscribe"`       // 用户是否订阅该公众号标识,值为0时,代表此用户没有关注该公众号,拉取不到其余信息.
	SubscribeTime  int      `json:"subscribe_time"`  // 用户关注时间,为时间戳.如果用户曾多次关注,则取最后关注时间
	SubscribeScene string   `json:"subscribe_scene"` // 返回用户关注的渠道来源,ADD_SCENE_SEARCH 公众号搜索,ADD_SCENE_ACCOUNT_MIGRATION 公众号迁移,ADD_SCENE_PROFILE_CARD 名片分享,ADD_SCENE_QR_CODE 扫描二维码,ADD_SCENEPROFILE LINK 图文页内名称点击,ADD_SCENE_PROFILE_ITEM 图文页右上角菜单,ADD_SCENE_PAID 支付后关注,ADD_SCENE_OTHERS 其他
	Remark         string   `json:"remark"`          // 公众号运营者对粉丝的备注,公众号运营者可在微信公众平台用户管理界面对粉丝添加备注
	GroupId        int      `json:"groupid"`         // 用户所在的分组ID(兼容旧的用户分组接口)
	TagidList      []int    `json:"tagid_list"`      // 用户被打上的标签ID列表
	QrScene        int      `json:"qr_scene"`        // 二维码扫码场景(开发者自定义)
	QrSceneStr     string   `json:"qr_scene_str"`    // 二维码扫码场景描述(开发者自定义)
	ErrCode        int      `json:"errcode"`         // 错误码
	ErrMsg         string   `json:"errmsg"`          // 错误信息
}

WxMpUserInfo 用户信息

func WxMpGetUserInfo

func WxMpGetUserInfo(wxMpConfig IWxMpConfig, openId, lang string) (*WxMpUserInfo, error)

WxMpGetUserInfo 获取用户基本信息,包括UnionID机制(授权机制) https://developers.weixin.qq.com/doc/offiaccount/User_Management/Get_users_basic_information_UnionID.html

type WxMpUserOpenIds added in v1.0.6

type WxMpUserOpenIds struct {
	Total      int                 `json:"total"`       //	关注该公众账号的总用户数
	Count      int                 `json:"count"`       //	拉取的OPENID个数,最大值为10000
	Data       map[string][]string `json:"data"`        //列表数据,OPENID的列表
	NextOpenid string              `json:"next_openid"` //拉取列表的最后一个用户的OPENID
	ErrCode    int                 `json:"errcode"`     // 错误码
	ErrMsg     string              `json:"errmsg"`      // 错误信息
}

func WxMpGetUserOpenIds added in v1.0.6

func WxMpGetUserOpenIds(wxMpConfig IWxMpConfig, openId string) (*WxMpUserOpenIds, error)

WxMpGetUserInfos 获取用户基本信息,包括UnionID机制(授权机制) https://developers.weixin.qq.com/doc/offiaccount/User_Management/Getting_a_User_List.html

type WxPayCloseOrderBody

type WxPayCloseOrderBody struct {
	SignType   string `json:"sign_type,omitempty"` // 签名类型,目前支持HMAC-SHA256和MD5,默认为MD5
	OutTradeNo string `json:"out_trade_no"`        // 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*且在同一个商户号下唯一.详见商户订单号
}

WxPayCloseOrderBody 关闭订单的参数

type WxPayCloseOrderResponse

type WxPayCloseOrderResponse struct {
	WxResponseModel
	// 当return_code为SUCCESS时
	WxPayPartnerResponseModel
	ResultMsg string `xml:"result_msg"` // 对业务结果的补充说明
}

WxPayCloseOrderResponse 关闭订单的返回值

type WxPayCouponResponseModel

type WxPayCouponResponseModel struct {
	CouponId   string // 代金券或立减优惠ID
	CouponType string // CASH-充值代金券 NO_CASH-非充值优惠券 开通免充值券功能,并且订单使用了优惠券后有返回
	CouponFee  int64  // 单个代金券或立减优惠支付金额
}

WxPayCouponResponseModel 返回结果中的优惠券条目信息

type WxPayDownloadBillBody

type WxPayDownloadBillBody struct {
	SignType string `json:"sign_type,omitempty"` // 签名类型,目前支持HMAC-SHA256和MD5,默认为MD5
	BillDate string `json:"bill_date"`           // 下载对账单的日期,格式:20140603
	BillType string `json:"bill_type,omitempty"` // ALL,返回当日所有订单信息,默认值 SUCCESS,返回当日成功支付的订单 REFUND,返回当日退款订单 RECHARGE_REFUND,返回当日充值退款订单
	TarType  string `json:"tar_type,omitempty"`  // 非必传参数,固定值:GZIP,返回格式为.gzip的压缩包账单.不传则默认为数据流形式.
}

WxPayDownloadBillBody 下载对账单的参数

type WxPayDownloadBillResponse

type WxPayDownloadBillResponse struct {
	WxResponseModel
	ErrCode string `xml:"err_code"` // 失败错误码,详见错误码列表 TODO
}

WxPayDownloadBillResponse 下载对账单的返回值

type WxPayGetHBInfoBody added in v1.0.7

type WxPayGetHBInfoBody struct {
	MchBillno string `json:"mch_billno"` //商户发放红包的商户订单号
	BillType  string `json:"bill_type"`  //MCHT:通过商户订单号获取红包信息
}

WxPayGetHBInfoBody 查看红包记录的请求参数

type WxPayGetHBInfoResponse added in v1.0.7

type WxPayGetHBInfoResponse struct {
	ReturnCode string `xml:"return_code"` // SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
	ReturnMsg  string `xml:"return_msg"`  // 返回信息,如非空,为错误原因:签名失败/参数格式校验错误

	//以下字段在return_code为SUCCESS的时候有返回
	ResultCode string `xml:"result_code"`  // SUCCESS/FAIL
	ErrCode    string `xml:"err_code"`     // 详细参见第6节错误列表
	ErrCodeDes string `xml:"err_code_des"` // 错误返回的信息描述

	//以下字段在return_code 和result_code都为SUCCESS的时候有返回
	MchBillno    string `xml:"mch_billno"`    // 商户使用查询API填写的商户单号的原路返回
	MchId        string `xml:"mch_id"`        // 微信支付分配的商户号
	DetailId     string `xml:"detail_id"`     // 使用API发放现金红包时返回的红包单号
	Status       string `xml:"status"`        // SENDING:发放中,SENT:已发放待领取,FAILED:发放失败,RECEIVED:已领取,RFUND_ING:退款中,REFUND:已退款
	SendType     string `xml:"send_type"`     // 发送类型 API:通过API接口发放,UPLOAD:通过上传文件方式发放,ACTIVITY:通过活动方式发放
	HBType       string `xml:"hb_type"`       // 红包类型 GROUP:裂变红包,NORMAL:普通红包
	TotalNum     int    `json:"total_num"`    // 红包个数
	TotalAmount  int    `xml:"total_amount"`  // 红包总金额(单位分)
	Reason       string `xml:"reason"`        // 发送失败原因
	SendTime     string `xml:"send_time"`     // 红包发送时间 2015-04-21 20:00:00
	RefundTime   string `xml:"refund_time"`   // 红包的退款时间(如果其未领取的退款) 2015-04-21 23:03:00
	RefundAmount int    `xml:"refund_amount"` // 红包退款金额(单位分)
	Wishing      string `xml:"wishing"`       // 红包祝福语
	ActName      string `xml:"act_name"`      // 活动名称
	Remark       string `xml:"remark"`        // 活动描述,低版本微信可见

	Openid  string             `xml:"openid"`   // 领取红包的openid
	Amount  int                `xml:"amount"`   // 领取金额(单位分)
	RcvTime string             `xml:"rcv_time"` // 领取红包的时间 2015-04-21 20:00:00
	HBList  []WxPayHBInfoModel `xml:"-"`        // 裂变红包的列表
}

WxPayGetHBInfoResponse 查看红包记录的返回值

func WxPayGetHBInfo added in v1.0.7

func WxPayGetHBInfo(wxPayConfig IWxPayConfig, body *WxPayGetHBInfoBody) (*WxPayGetHBInfoResponse, error)

WxPayGetHBInfo 查看红包记录,用于商户对已发放的红包进行查询红包的具体信息,可支持普通红包和裂变包. https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_6&index=5

type WxPayHBInfoModel added in v1.0.7

type WxPayHBInfoModel struct {
	Openid  string // 领取红包的openid
	Amount  int    // 领取金额(单位分)
	RcvTime string // 领取红包的时间 2015-04-21 20:00:00

}

WxPayHBInfoModel 返回的微信裂变红包信息

type WxPayMchServiceResponseModel

type WxPayMchServiceResponseModel struct {
	MchAppId   string `xml:"mch_appid"`    // 子商户公众账号ID
	MchId      string `xml:"mchid"`        // 子商户号
	NonceStr   string `xml:"nonce_str"`    // 随机字符串,不长于32位
	Sign       string `xml:"sign"`         // 签名,详见签名生成算法
	ResultCode string `xml:"result_code"`  // SUCCESS/FAIL
	ErrCode    string `xml:"err_code"`     // 详细参见第6节错误列表
	ErrCodeDes string `xml:"err_code_des"` // 错误返回的信息描述
}

WxPayMchServiceResponseModel 特殊商户接口业务返回结果的错误信息

type WxPayMicropayBody

type WxPayMicropayBody struct {
	SignType       string `json:"sign_type,omitempty"`   // 签名类型,目前支持HMAC-SHA256和MD5,默认为MD5
	DeviceInfo     string `json:"device_info,omitempty"` // 终端设备号(商户自定义,如门店编号)
	Body           string `json:"body"`                  // 商品或支付单简要描述,格式要求:门店品牌名-城市分店名-实际商品名称
	Detail         string `json:"detail,omitempty"`      // 单品优惠功能字段,需要接入请见详细说明
	Attach         string `json:"attach,omitempty"`      // 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
	OutTradeNo     string `json:"out_trade_no"`          // 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*且在同一个商户号下唯一.详见商户订单号
	TotalFee       int    `json:"total_fee"`             // 订单总金额,单位为分,只能为整数,详见支付金额
	FeeType        string `json:"fee_type,omitempty"`    // 符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
	SpbillCreateIP string `json:"spbill_create_ip"`      // 支持IPV4和IPV6两种格式的IP地址.调用微信支付API的机器IP
	GoodsTag       string `json:"goods_tag,omitempty"`   // 订单优惠标记,代金券或立减优惠功能的参数,说明详见代金券或立减优惠
	LimitPay       string `json:"limit_pay,omitempty"`   // no_credit:指定不能使用信用卡支付
	TimeStart      string `json:"time_start,omitempty"`  // 订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010.其他详见时间规则
	TimeExpire     string `json:"time_expire,omitempty"` // 订单失效时间,格式为yyyyMMddHHmmss,如2009年12月27日9点10分10秒表示为20091227091010.注意:最短失效时间间隔需大于1分钟
	AuthCode       string `json:"auth_code"`             // 扫码支付授权码,设备读取用户微信中的条码或者二维码信息 (注:用户付款码条形码规则:18位纯数字,以10、11、12、13、14、15开头)
	Receipt        string `json:"receipt,omitempty"`     // Y,传入Y时,支付成功消息和支付详情页将出现开票入口.需要在微信支付商户平台或微信公众平台开通电子发票功能,传此字段才可生效
	SceneInfoStr   string `json:"scene_info,omitempty"`  // 该字段用于上报场景信息,目前支持上报实际门店信息.该字段为JSON对象数据,对象格式为{"store_info":{"id": "门店ID","name": "名称","area_code": "编码","address": "地址" }} ,字段详细说明请点击行前的+展开
	// 用于生成SceneInfoStr
	SceneInfo *WxPaySceneInfoModel `json:"-"`
}

WxPayMicropayBody 付款码支付的参数

type WxPayMicropayResponse

type WxPayMicropayResponse struct {
	WxResponseModel
	// 当return_code为SUCCESS时
	WxPayPartnerResponseModel

	DeviceInfo string `xml:"device_info"` // 调用接口提交的终端设备号
	// 当return_code和result_code都为SUCCESS时
	OpenId             string `xml:"openid"`               // 用户在商户appid下的唯一标识
	IsSubscribe        string `xml:"is_subscribe"`         // 用户是否关注公众账号,仅在公众账号类型支付有效,取值范围:Y或N;Y-关注;N-未关注
	SubOpenId          string `xml:"sub_openid"`           // (服务商模式) 子商户appid下用户唯一标识,如需返回则请求时需要传sub_appid
	SubIsSubscribe     string `xml:"sub_is_subscribe"`     // (服务商模式) 用户是否关注子公众账号,仅在公众账号类型支付有效,取值范围:Y或N;Y-关注;N-未关注
	TradeType          string `xml:"trade_type"`           // 支付类型为MICROPAY(即扫码支付)
	BankType           string `xml:"bank_type"`            // 银行类型,采用字符串类型的银行标识,值列表详见银行类型
	FeeType            string `xml:"fee_type"`             // 符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
	TotalFee           int    `xml:"total_fee"`            // 订单总金额,单位为分,只能为整数,详见支付金额
	CashFeeType        string `xml:"cash_fee_type"`        // 符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
	CashFee            int    `xml:"cash_fee"`             // 订单现金支付金额,详见支付金额
	SettlementTotalFee int    `xml:"settlement_total_fee"` // 当订单使用了免充值型优惠券后返回该参数,应结订单金额=订单金额-免充值优惠券金额.
	CouponFee          int    `xml:"coupon_fee"`           // "代金券"金额<=订单金额,订单金额-"代金券"金额=现金支付金额,详见支付金额
	TransactionId      string `xml:"transaction_id"`       // 微信支付订单号
	OutTradeNo         string `xml:"out_trade_no"`         // 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*且在同一个商户号下唯一.
	Attach             string `xml:"attach"`               // 商家数据包,原样返回
	TimeEnd            string `xml:"time_end"`             // 订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010.详见时间规则
	PromotionDetail    string `xml:"promotion_detail"`     // TODO 单品优惠详情
}

WxPayMicropayResponse 付款码支付的返回值

type WxPayNotifyPayBody

type WxPayNotifyPayBody struct {
	WxResponseModel
	// 当return_code为SUCCESS时
	WxPayPartnerResponseModel

	DeviceInfo         string `xml:"device_info"`          // 微信支付分配的终端设备号
	IsSubscribe        string `xml:"is_subscribe"`         // 用户是否关注公众账号(机构商户不返回)
	SubIsSubscribe     string `xml:"sub_is_subscribe"`     // (服务商模式) 用户是否关注子公众账号(机构商户不返回)
	OpenId             string `xml:"openid"`               // 用户在商户appid下的唯一标识
	SubOpenId          string `xml:"sub_openid"`           // (服务商模式) 用户在子商户appid下的唯一标识
	TradeType          string `xml:"trade_type"`           // 交易类型
	BankType           string `xml:"bank_type"`            // 银行类型,采用字符串类型的银行标识,银行类型见附表
	TotalFee           int    `xml:"total_fee"`            // 订单总金额,单位为分
	FeeType            string `xml:"fee_type"`             // 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
	CashFee            int    `xml:"cash_fee"`             // 现金支付金额订单现金支付金额,详见支付金额
	CashFeeType        string `xml:"cash_fee_type"`        // 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
	SettlementTotalFee int    `xml:"settlement_total_fee"` // 应结订单金额=订单金额-非充值代金券金额,应结订单金额<=订单金额.
	CouponFee          int    `xml:"coupon_fee"`           // 代金券或立减优惠金额<=订单总金额,订单总金额-代金券或立减优惠金额=现金支付金额,详见支付金额
	CouponCount        int    `xml:"coupon_count"`         // 代金券或立减优惠使用数量
	TransactionId      string `xml:"transaction_id"`       // 微信支付订单号
	OutTradeNo         string `xml:"out_trade_no"`         // 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*@ ,且在同一个商户号下唯一.
	Attach             string `xml:"attach"`               // 商家数据包,原样返回
	TimeEnd            string `xml:"time_end"`             // 支付完成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010.其他详见时间规则
	// 使用coupon_count的序号生成的优惠券项
	Coupons []WxPayCouponResponseModel `xml:"-"`
}

WxPayNotifyPayBody 支付结果通知的参数

type WxPayPartnerResponseModel added in v1.0.3

type WxPayPartnerResponseModel struct {
	AppId      string `xml:"appid"`        // 微信分配的公众账号ID
	MchId      string `xml:"mch_id"`       // 微信支付分配的商户号
	SubAppId   string `xml:"sub_appid"`    // (服务商模式) 微信分配的子商户公众账号ID
	SubMchId   string `xml:"sub_mch_id"`   // (服务商模式) 微信支付分配的子商户号
	NonceStr   string `xml:"nonce_str"`    // 随机字符串,不长于32位
	Sign       string `xml:"sign"`         // 签名,详见签名生成算法
	ResultCode string `xml:"result_code"`  // SUCCESS/FAIL
	ErrCode    string `xml:"err_code"`     // 详细参见第6节错误列表
	ErrCodeDes string `xml:"err_code_des"` // 错误返回的信息描述
}

WxPayPartnerResponseModel 业务返回结果的错误信息

type WxPayPromotionMktTransfersBody

type WxPayPromotionMktTransfersBody struct {
	DeviceInfo     string `json:"device_info,omitempty"`  // 终端设备号
	PartnerTradeNo string `json:"partner_trade_no"`       // 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*且在同一个商户号下唯一.详见商户订单号
	OpenId         string `json:"openid"`                 // 商品或支付单简要描述,格式要求:门店品牌名-城市分店名-实际商品名称
	CheckName      string `json:"check_name"`             // 校验用户姓名选项(见constant定义)
	ReUserName     string `json:"re_user_name,omitempty"` // 收款用户姓名
	Amount         int    `json:"amount"`                 // 企业找零金额,单位为分
	Desc           string `json:"desc"`                   // 企业付款备注
	SpbillCreateIP string `json:"spbill_create_ip"`       // IP可传用户端或者服务端的IP
}

WxPayPromotionMktTransfersBody 企业付款,微信找零的参数

type WxPayPromotionMktTransfersResponse

type WxPayPromotionMktTransfersResponse struct {
	WxResponseModel
	WxPayMchServiceResponseModel
	DeviceInfo     string `xml:"device_info"`      // 终端设备号
	PartnerTradeNo string `xml:"partner_trade_no"` // 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*且在同一个商户号下唯一.详见商户订单号
	PaymentNo      string `xml:"payment_no"`       // 企业付款成功,返回的微信付款单号
	PaymentTime    string `xml:"payment_time"`     // 企业付款成功时间
}

WxPayPromotionMktTransfersResponse 企业付款,微信找零的返回值

func WxPayPromotionMktTransfers

func WxPayPromotionMktTransfers(wxPayConfig IWxPayConfig, body *WxPayPromotionMktTransfersBody) (*WxPayPromotionMktTransfersResponse, error)

WxPayPromotionMktTransfers 企业付款到零钱(前提用户必须关注公众号)

type WxPayQueryMktTransferBody

type WxPayQueryMktTransferBody struct {
	PartnerTradeNo string `json:"partner_trade_no"` // 商户系统内部订单号
}

WxPayQueryMktTransferBody 企业付款,微信找零查询的参数

type WxPayQueryMktTransferResponse

type WxPayQueryMktTransferResponse struct {
	WxResponseModel
	WxPayMchServiceResponseModel
	PartnerTradeNo string `xml:"partner_trade_no"` // 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*且在同一个商户号下唯一.详见商户订单号
	DetailId       string `xml:"detail_id"`        // 调用企业付款API时,微信系统内部产生的单号
	Status         string `xml:"status"`           // 转账状态
	Reason         string `xml:"reason"`           // 失败原因
	OpenId         string `xml:"openid"`           // 转账的openid
	TransferName   string `xml:"transfer_name"`    // 收款用户姓名
	PaymentAmount  int64  `xml:"payment_amount"`   // 付款金额单位为“分”
	TransferTime   string `xml:"transfer_time"`    // 发起转账的时间
	PaymentTime    string `xml:"payment_time"`     // 企业付款成功时间
	Desc           string `xml:"desc"`             // 企业付款备注
}

WxPayQueryMktTransferResponse 企业付款,微信找零查询的返回值

func WxPayQueryMktTransfer

func WxPayQueryMktTransfer(wxPayConfig IWxPayConfig, body *WxPayQueryMktTransferBody) (*WxPayQueryMktTransferResponse, error)

WxPayQueryMktTransfer 企业付款到零钱的查询

type WxPayQueryOrderBody

type WxPayQueryOrderBody struct {
	SignType      string `json:"sign_type,omitempty"`      // 签名类型,目前支持HMAC-SHA256和MD5,默认为MD5
	TransactionId string `json:"transaction_id,omitempty"` // (非必填,二选一) 微信的订单号,优先使用
	OutTradeNo    string `json:"out_trade_no,omitempty"`   // (非必填,二选一) 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*且在同一个商户号下唯一.详见商户订单号
}

WxPayQueryOrderBody 查询订单的参数

type WxPayQueryOrderResponse

type WxPayQueryOrderResponse struct {
	WxResponseModel
	// 当return_code为SUCCESS时
	WxPayPartnerResponseModel
	// 当return_code、result_code、trade_state都为SUCCESS时有返回,如trade_state不为SUCCESS,则只返回out_trade_no(必传)和attach(选传).
	DeviceInfo         string `xml:"device_info"`          // 微信支付分配的终端设备号
	OpenId             string `xml:"openid"`               // 用户在商户appid下的唯一标识
	IsSubscribe        string `xml:"is_subscribe"`         // 用户是否关注公众账号,Y-关注,N-未关注(机构商户不返回)
	SubOpenId          string `xml:"sub_openid"`           // (服务商模式) 子商户appid下用户唯一标识,如需返回则请求时需要传sub_appid
	SubIsSubscribe     string `xml:"sub_is_subscribe"`     // (服务商模式) 用户是否关注子公众账号,仅在公众账号类型支付有效,取值范围:Y或N;Y-关注;N-未关注
	TradeType          string `xml:"trade_type"`           // 调用接口提交的交易类型,取值如下:JSAPI,NATIVE,APP,MICROPAY,详细说明见参数规定
	TradeState         string `xml:"trade_state"`          // SUCCESS—支付成功 REFUND—转入退款 NOTPAY—未支付 CLOSED—已关闭 REVOKED—已撤销(刷卡支付) USERPAYING--用户支付中 PAYERROR--支付失败(其他原因,如银行返回失败)
	BankType           string `xml:"bank_type"`            // 银行类型,采用字符串类型的银行标识
	Detail             string `xml:"detail"`               // 商品详细列表,使用Json格式,传输签名前请务必使用CDATA标签将JSON文本串保护起来.如果使用了单品优惠,会有单品优惠信息返回
	TotalFee           int    `xml:"total_fee"`            // 订单总金额,单位为分
	FeeType            string `xml:"fee_type"`             // 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
	SettlementTotalFee int    `xml:"settlement_total_fee"` // 当订单使用了免充值型优惠券后返回该参数,应结订单金额=订单金额-免充值优惠券金额.
	CashFee            int    `xml:"cash_fee"`             // 现金支付金额订单现金支付金额,详见支付金额
	CashFeeType        string `xml:"cash_fee_type"`        // 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
	CouponFee          int    `xml:"coupon_fee"`           // "代金券或立减优惠"金额<=订单总金额,订单总金额-"代金券或立减优惠"金额=现金支付金额,详见支付金额
	CouponCount        int    `xml:"coupon_count"`         // 代金券或立减优惠使用数量
	TransactionId      string `xml:"transaction_id"`       // 微信支付订单号
	OutTradeNo         string `xml:"out_trade_no"`         // 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*@ ,且在同一个商户号下唯一.
	Attach             string `xml:"attach"`               // 商家数据包,原样返回
	TimeEnd            string `xml:"time_end"`             // 订单支付时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010.其他详见时间规则
	TradeStateDesc     string `xml:"trade_state_desc"`     // 对当前查询订单状态的描述和下一步操作的指引
	// 使用coupon_count的序号生成的优惠券项
	Coupons []WxPayCouponResponseModel `xml:"-"`
}

WxPayQueryOrderResponse 查询订单的返回值

func WxPayQueryOrder

func WxPayQueryOrder(wxPayConfig IWxPayConfig, body *WxPayQueryOrderBody) (*WxPayQueryOrderResponse, error)

WxPayQueryOrder 查询订单

type WxPayQueryRefundBody

type WxPayQueryRefundBody struct {
	SignType      string `json:"sign_type,omitempty"`      // 签名类型,目前支持HMAC-SHA256和MD5,默认为MD5
	TransactionId string `json:"transaction_id,omitempty"` // (非必填,四选一) 微信订单号 查询的优先级是: refund_id > out_refund_no > transaction_id > out_trade_no
	OutTradeNo    string `json:"out_trade_no,omitempty"`   // (非必填,四选一) 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*@ ,且在同一个商户号下唯一.
	OutRefundNo   string `json:"out_refund_no,omitempty"`  // (非必填,四选一) 商户系统内部的退款单号,商户系统内部唯一,只能是数字、大小写字母_-|*@ ,同一退款单号多次请求只退一笔.
	RefundId      string `json:"refund_id,omitempty"`      // (非必填,四选一) 微信退款单号
	Offset        string `json:"offset,omitempty"`         // (非必填) 偏移量,当部分退款次数超过10次时可使用,表示返回的查询结果从这个偏移量开始取记录
}

WxPayQueryRefundBody 查询退款的参数

type WxPayQueryRefundResponse

type WxPayQueryRefundResponse struct {
	WxResponseModel
	// 当return_code为SUCCESS时
	WxPayPartnerResponseModel
	TransactionId      string `xml:"transaction_id"`       // 微信订单号
	OutTradeNo         string `xml:"out_trade_no"`         // 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*@ ,且在同一个商户号下唯一.
	TotalFee           int    `xml:"total_fee"`            // 订单总金额,单位为分,只能为整数,详见支付金额
	SettlementTotalFee int    `xml:"settlement_total_fee"` // 当订单使用了免充值型优惠券后返回该参数,应结订单金额=订单金额-免充值优惠券金额.
	FeeType            string `xml:"fee_type"`             // 订单金额货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
	CashFee            int    `xml:"cash_fee"`             // 现金支付金额,单位为分,只能为整数,详见支付金额
	RefundCount        int    `xml:"refund_count"`         // 当前返回退款笔数
	TotalRefundCount   int    `xml:"total_refund_count"`   // 订单总共已发生的部分退款次数,当请求参数传入offset后有返回
	// 使用refund_count的序号生成的当前退款项
	CurrentRefunds []WxPayQueryRefundResponseCurrentRefund `xml:"-"`
	// 使用total_refund_count的序号生成的总退款项
	TotalRefunds []WxPayQueryRefundResponseTotalRefund `xml:"-"`
}

WxPayQueryRefundResponse 查询退款的返回值

func WxPayQueryRefund

func WxPayQueryRefund(wxPayConfig IWxPayConfig, body *WxPayQueryRefundBody) (*WxPayQueryRefundResponse, error)

WxPayQueryRefund 查询退款

type WxPayQueryRefundResponseCurrentRefund

type WxPayQueryRefundResponseCurrentRefund struct {
	OutRefundNo   string // 商户系统内部的退款单号,商户系统内部唯一,只能是数字、大小写字母_-|*@ ,同一退款单号多次请求只退一笔.
	RefundId      string // 微信退款单号
	RefundChannel string // ORIGINAL—原路退款 BALANCE—退回到余额 OTHER_BALANCE—原账户异常退到其他余额账户 OTHER_BANKCARD—原银行卡异常退到其他银行卡
}

WxPayQueryRefundResponseCurrentRefund 使用refund_count的序号生成的当前退款项

type WxPayQueryRefundResponseTotalRefund

type WxPayQueryRefundResponseTotalRefund struct {
	RefundFee           int64  // 退款总金额,单位为分,可以做部分退款
	SettlementRefundFee int64  // 退款金额=申请退款金额-非充值代金券退款金额,退款金额<=申请退款金额
	CouponRefundFee     int64  // 代金券退款金额<=退款金额,退款金额-代金券或立减优惠退款金额为现金,说明详见代金券或立减优惠
	CouponRefundCount   int64  // 退款代金券使用数量 ,$n为下标,从0开始编号
	RefundStatus        string // 退款状态:SUCCESS—退款成功 REFUNDCLOSE—退款关闭 PROCESSING—退款处理中 CHANGE—退款异常,退款到银行发现用户的卡作废或者冻结了,导致原路退款银行卡失败,可前往商户平台(pay.weixin.qq.com)-交易中心,手动处理此笔退款.$n为下标,从0开始编号.
	RefundAccount       string // REFUND_SOURCE_RECHARGE_FUNDS---可用余额退款/基本账户 REFUND_SOURCE_UNSETTLED_FUNDS---未结算资金退款 $n为下标,从0开始编号.
	RefundRecvAccout    string // 取当前退款单的退款入账方 1)退回银行卡:{银行名称}{卡类型}{卡尾号} 2)退回支付用户零钱: 支付用户零钱 3)退还商户: 商户基本账户 商户结算银行账户 4)退回支付用户零钱通: 支付用户零钱通
	RefundSuccessTime   string // 退款成功时间,当退款状态为退款成功时有返回.$n为下标,从0开始编号.
	// 使用coupon_refund_count的序号生成的代金券项
	Coupons []WxPayCouponResponseModel
}

WxPayQueryRefundResponseTotalRefund 使用total_refund_count的序号生成的总退款项

type WxPayRefundBody

type WxPayRefundBody struct {
	TransactionId string `json:"transaction_id"`            // 微信支付订单号
	OutTradeNo    string `json:"out_trade_no"`              // 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*@ ,且在同一个商户号下唯一.
	OutRefundNo   string `json:"out_refund_no"`             // 商户系统内部的退款单号,商户系统内部唯一,只能是数字、大小写字母_-|*@ ,同一退款单号多次请求只退一笔.
	TotalFee      int    `json:"total_fee"`                 // 订单总金额,单位为分,只能为整数,详见支付金额
	RefundFee     int    `json:"refund_fee"`                // 退款总金额,单位为分,只能为整数,可部分退款.详见支付金额
	RefundFeeType string `json:"refund_fee_type,omitempty"` // 退款货币类型,需与支付一致,或者不填.符合ISO 4217标准的三位字母代码,默认人民币:CNY
	RefundDesc    string `json:"refund_desc,omitempty"`     // 现退款原因
	RefundAccount string `json:"refund_account,omitempty"`  // 退款资金来源(见constatnt定义)
	NotifyUrl     string `json:"notify_url,omitempty"`      // 异步接收微信支付退款结果通知的回调地址
}

WxPayRefundBody 申请退款的参数

type WxPayRefundResponse

type WxPayRefundResponse struct {
	WxResponseModel
	WxPayPartnerResponseModel
	TransactionId       string `xml:"transaction_id"`
	OutTradeNo          string `xml:"out_trade_no"`
	OutRefundNo         string `xml:"out_refund_no"`
	RefundId            string `xml:"refund_id"`
	RefundFee           int    `xml:"refund_fee"`
	SettlementRefundFee int    `xml:"settlement_refund_fee"`
	TotalFee            int    `xml:"total_fee"`
	SettlementTotalFee  int    `xml:"settlement_total_fee"`
	FeeType             string `xml:"fee_type"`
	CashFee             int    `xml:"cash_fee"`
	CashRefundFee       int    `xml:"cash_refund_fee"`
	CouponRefundFee     int    `xml:"coupon_refund_fee"`
	CouponRefundCount   int    `xml:"coupon_refund_count"`
	// 使用coupon_refund_count的序号生成的优惠券项
	RefundCoupons []WxPayCouponResponseModel `xml:"-"`
}

WxResponseModel 申请退款的返回值

type WxPayReportJsAPIBody

type WxPayReportJsAPIBody struct {
	SignType     string `json:"sign_type,omitempty"`    // 签名类型,目前支持HMAC-SHA256和MD5,默认为MD5
	DeviceInfo   string `json:"device_info,omitempty"`  // (非必填) 微信支付分配的终端设备号,商户自定义
	InterfaceUrl string `json:"interface_url"`          // 上报对应的接口的完整URL,类似:https://api.mch.weixin.qq.com/pay/unifiedorder 对于刷卡支付,为更好的和商户共同分析一次业务行为的整体耗时情况,对于两种接入模式,请都在门店侧对一次刷卡行为进行一次单独的整体上报,上报URL指定为:https://api.mch.weixin.qq.com/pay/micropay/total 关于两种接入模式具体可参考本文档章节:刷卡支付商户接入模式 其它接口调用仍然按照调用一次,上报一次来进行.
	ExecuteTime  int64  `json:"execute_time"`           // 接口耗时情况,单位为毫秒
	ReturnCode   string `json:"return_code"`            // SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看trade_state来判断
	ReturnMsg    string `json:"return_msg,omitempty"`   // (非必填) 返回信息,如非空,为错误原因 签名失败 参数格式校验错误
	ResultCode   string `json:"result_code"`            // SUCCESS/FAIL
	ErrCode      string `json:"err_code,omitempty"`     // (非必填) ORDERNOTEXIST—订单不存在 SYSTEMERROR—系统错误
	ErrCodeDes   string `json:"err_code_des,omitempty"` // (非必填) 结果信息描述
	OutTradeNo   string `json:"out_trade_no,omitempty"` // (非必填) 商户系统内部的订单号,商户可以在上报时提供相关商户订单号方便微信支付更好的提高服务质量.
	UserIp       string `json:"user_ip"`                // 发起接口调用时的机器IP
	Time         string `json:"time,omitempty"`         // (非必填) 系统时间,格式为yyyyMMddHHmmss,如2009年12月27日9点10分10秒表示为20091227091010.其他详见时间规则
}

WxPayReportJsAPIBody 交易保障(JSAPI)的参数

type WxPayReportMicropayBody

type WxPayReportMicropayBody struct {
	SignType     string `json:"sign_type,omitempty"`   // 签名类型,目前支持HMAC-SHA256和MD5,默认为MD5
	DeviceInfo   string `json:"device_info,omitempty"` // (非必填) 微信支付分配的终端设备号,商户自定义
	InterfaceUrl string `json:"interface_url"`         // (不需要手动填写) 上报对应的接口的完整URL,类似:https://api.mch.weixin.qq.com/pay/unifiedorder 对于刷卡支付,为更好的和商户共同分析一次业务行为的整体耗时情况,对于两种接入模式,请都在门店侧对一次刷卡行为进行一次单独的整体上报,上报URL指定为:https://api.mch.weixin.qq.com/pay/micropay/total 关于两种接入模式具体可参考本文档章节:刷卡支付商户接入模式 其它接口调用仍然按照调用一次,上报一次来进行.
	UserIp       string `json:"user_ip"`               // 发起接口调用时的机器IP
	TradesStr    string `json:"trades"`                // POS机采集的交易信息列表,使用JSON格式的数组
	// 生成TradesStr
	Trades []WxPayReportMicropayBodyTrade `json:"-"`
}

WxPayReportMicropayBody 交易保障(MICROPAY)的参数

type WxPayReportMicropayBodyTrade

type WxPayReportMicropayBodyTrade struct {
	OutTradeNo string `json:"out_trade_no"`      // 商户订单号
	BeginTime  string `json:"begin_time"`        // 交易开始时间(扫码时间)
	EndTime    string `json:"end_time"`          // 交易完成时间
	State      string `json:"state"`             // 交易结果,OK-成功 FAIL-失败 CANCLE-取消
	ErrMsg     string `json:"err_msg,omitempty"` // 自定义的错误描述信息
}

WxPayReportMicropayBodyTrade 生成TradesStr

type WxPayReverseMicroOrderBody

type WxPayReverseMicroOrderBody struct {
	TransactionId string `json:"transaction_id,omitempty"` // 微信支付订单号
	OutTradeNo    string `json:"out_trade_no"`             // 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*@ ,且在同一个商户号下唯一.
}

WxPayReverseMicroOrderBody 撤销订单的参数

type WxPayReverseMicroOrderResponse

type WxPayReverseMicroOrderResponse struct {
	WxResponseModel
	WxPayPartnerResponseModel
	Recall string `xml:"recall"` // 是否需要继续调用撤销,Y-需要,N-不需要
}

WxPayReverseMicroOrderResponse 撤销订单的返回值

type WxPaySceneInfoModel

type WxPaySceneInfoModel struct {
	ID       string `json:"id"`        // 门店唯一标识
	Name     string `json:"name"`      // 门店名称
	AreaCode string `json:"area_code"` // 门店所在地行政区划码,详细见《最新县及县以上行政区划代码》
	Address  string `json:"address"`   // 门店详细地址
}

WxPaySceneInfoModel 场景信息模型

type WxPaySendGroupRedPackBody added in v1.0.7

type WxPaySendGroupRedPackBody struct {
	WxPaySendRedPackBody
	AmtType string `json:"amt_type"` //红包金额设置方式 ALL_RAND—全部随机,商户指定总金额和红包发放总人数,由微信支付随机计算出各红包金额
}

WxPaySendGroupRedPackBody 微信裂变红包参数

type WxPaySendGroupRedPackResponse added in v1.0.7

type WxPaySendGroupRedPackResponse struct {
	WxPaySendRedPackResponse
}

WxPaySendGroupRedPackResponse 微信裂变红包返回值

func WxPaySendGroupRedPack added in v1.0.7

func WxPaySendGroupRedPack(wxPayConfig IWxPayConfig, body *WxPaySendGroupRedPackBody) (*WxPaySendGroupRedPackResponse, error)

WxPaySendGroupRedPack 发送裂变红包 https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_5&index=4

type WxPaySendMiniProgramHBBody added in v1.0.7

type WxPaySendMiniProgramHBBody struct {
	WxPaySendRedPackBody
	NotifyWay string `json:"notify_way"` //通知用户形式	 通过JSAPI方式领取红包,小程序红包固定传MINI_PROGRAM_JSAPI
}

WxPaySendMiniProgramHBBody 微信发送小程序红包参数

type WxPaySendMiniProgramHBResponse added in v1.0.7

type WxPaySendMiniProgramHBResponse struct {
	WxPaySendRedPackResponse
	JSAPIPackage string `xml:"package"` // 返回jaspi的入参package的值
}

WxPaySendMiniProgramHBResponse 微信发送小程序红包返回值

func WxPaySendMiniProgramHB added in v1.0.7

func WxPaySendMiniProgramHB(wxPayConfig IWxPayConfig, body *WxPaySendMiniProgramHBBody) (*WxPaySendMiniProgramHBResponse, error)

WxPaySendMiniProgramHB 发送小程序红包 https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=18_2&index=3

type WxPaySendRedPackBody added in v1.0.7

type WxPaySendRedPackBody struct {
	MchBillno   string `json:"mch_billno"`          // 商户订单号(每个订单号必须唯一.取值范围:0~9,a~z,A~Z)	接口根据商户订单号支持重入,如出现超时可再调用.
	SendName    string `json:"send_name"`           // 红包发送者名称 注意:敏感词会被转义成字符*
	ReOpenid    string `json:"re_openid"`           // 接受红包的用户openid openid为用户在wxappid下的唯一标识(获取openid参见微信公众平台开发者文档:网页授权获取用户基本信息)
	TotalAmount int    `json:"total_amount"`        //付款金额,单位分
	TotalNum    int    `json:"total_num"`           //红包发放总人数 total_num=1
	Wishing     string `json:"wishing"`             //红包祝福语 注意:敏感词会被转义成字符*
	ClientIp    string `json:"client_ip,omitempty"` //调用接口的机器Ip地址
	ActName     string `json:"act_name"`            //活动名称 注意:敏感词会被转义成字符*
	Remark      string `json:"remark"`              //备注信息
	SceneId     string `json:"scene_id,omitempty"`  //发放红包使用场景,红包金额大于200或者小于1元时必传. PRODUCT_1:商品促, PRODUCT_2:抽奖, PRODUCT_3:虚拟物品兑奖, PRODUCT_4:企业内部福利, PRODUCT_5:渠道分润, PRODUCT_6:保险回馈, PRODUCT_7:彩票派奖, PRODUCT_8:税务刮奖
	RiskInfo    string `json:"risk_info,omitempty"` //活动信息 posttime:用户操作的时间戳 mobile:业务系统账号的手机号,国家代码-手机号.不需要+号 deviceid :mac 地址或者设备唯一标识 clientversion :用户操作的客户端版本 把值为非空的信息用key=value进行拼接,再进行urlencode urlencode(posttime=xx& mobile =xx&deviceid=xx)
}

WxPaySendRedPackBody 微信发送红包参数

type WxPaySendRedPackResponse added in v1.0.7

type WxPaySendRedPackResponse struct {
	ReturnCode string `xml:"return_code"` // SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
	ReturnMsg  string `xml:"return_msg"`  // 返回信息,如非空,为错误原因:签名失败/参数格式校验错误

	//以下字段在return_code为SUCCESS的时候有返回
	ResultCode  string `xml:"result_code"`  // SUCCESS/FAIL
	ErrCode     string `xml:"err_code"`     // 详细参见第6节错误列表
	ErrCodeDes  string `xml:"err_code_des"` // 错误返回的信息描述
	MchBillno   string `xml:"mch_billno"`   // 商户订单号(每个订单号必须唯一.取值范围:0~9,a~z,A~Z)	接口根据商户订单号支持重入,如出现超时可再调用.
	MchId       string `xml:"mch_id"`       // 微信支付分配的商户号
	WxAppId     string `xml:"wxappid"`      // 微信分配的公众账号ID(企业号corpid即为此appId).在微信开放平台(open.weixin.qq.com)申请的移动应用appid无法使用该接口
	ReOpenid    string `xml:"re_openid"`    // 接受红包的用户openid openid为用户在wxappid下的唯一标识(获取openid参见微信公众平台开发者文档:网页授权获取用户基本信息)
	TotalAmount int    `xml:"total_amount"` // 付款金额,单位分
	SendListid  string `xml:"send_listid"`  // 红包订单的微信单号

}

WxPaySendRedPackResponse 微信发送红包返回值

type WxPayUnifiedOrderBody

type WxPayUnifiedOrderBody struct {
	SignType       string `json:"sign_type,omitempty"`   // 签名类型,目前支持HMAC-SHA256和MD5,默认为MD5
	DeviceInfo     string `json:"device_info,omitempty"` // (非必填) 终端设备号(门店号或收银设备ID),注意:PC网页或JSAPI支付请传"WEB"
	Body           string `json:"body"`                  // 商品描述交易字段格式根据不同的应用场景建议按照以下格式上传: (1)PC网站——传入浏览器打开的网站主页title名-实际商品名称,例如:腾讯充值中心-QQ会员充值;(2) 公众号——传入公众号名称-实际商品名称,例如:腾讯形象店- image-QQ公仔;(3) H5——应用在浏览器网页上的场景,传入浏览器打开的移动网页的主页title名-实际商品名称,例如:腾讯充值中心-QQ会员充值;(4) 线下门店——门店品牌名-城市分店名-实际商品名称,例如: image形象店-深圳腾大- QQ公仔)(5) APP——需传入应用市场上的APP名字-实际商品名称,天天爱消除-游戏充值.
	Detail         string `json:"detail,omitempty"`      // (非必填) TODO 商品详细描述,对于使用单品优惠的商户,该字段必须按照规范上传,详见"单品优惠参数说明"
	Attach         string `json:"attach,omitempty"`      // (非必填) 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
	OutTradeNo     string `json:"out_trade_no"`          // 商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*且在同一个商户号下唯一.详见商户订单号
	FeeType        string `json:"fee_type,omitempty"`    // (非必填) 符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
	TotalFee       int    `json:"total_fee"`             // 订单总金额,单位为分,只能为整数,详见支付金额
	SpbillCreateIP string `json:"spbill_create_ip"`      // 支持IPV4和IPV6两种格式的IP地址.调用微信支付API的机器IP
	TimeStart      string `json:"time_start,omitempty"`  // (非必填) 订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010.其他详见时间规则
	TimeExpire     string `json:"time_expire,omitempty"` // (非必填) 订单失效时间,格式为yyyyMMddHHmmss,如2009年12月27日9点10分10秒表示为20091227091010.订单失效时间是针对订单号而言的,由于在请求支付的时候有一个必传参数prepay_id只有两小时的有效期,所以在重入时间超过2小时的时候需要重新请求下单接口获取新的prepay_id.其他详见时间规则.建议:最短失效时间间隔大于1分钟
	GoodsTag       string `json:"goods_tag,omitempty"`   // (非必填) TODO 订单优惠标记,代金券或立减优惠功能的参数,说明详见代金券或立减优惠
	NotifyUrl      string `json:"notify_url"`            // 接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数.
	TradeType      string `json:"trade_type"`            // JSAPI-JSAPI支付 NATIVE-Native支付 APP-APP支付 说明详见参数规定
	ProductId      string `json:"product_id,omitempty"`  // (非必填) trade_type=NATIVE时,此参数必传.此id为二维码中包含的商品ID,商户自行定义.
	LimitPay       string `json:"limit_pay,omitempty"`   // (非必填) no_credit:指定不能使用信用卡支付
	OpenId         string `json:"openid,omitempty"`      // (非必填) trade_type=JSAPI,此参数必传,用户在主商户appid下的唯一标识.openid和sub_openid可以选传其中之一,如果选择传sub_openid,则必须传sub_appid.下单前需要调用【网页授权获取用户信息】接口获取到用户的Openid.
	SubOpenId      string `json:"sub_openid,omitempty"`  // (非必填) trade_type=JSAPI,此参数必传,用户在子商户appid下的唯一标识.openid和sub_openid可以选传其中之一,如果选择传sub_openid,则必须传sub_appid.下单前需要调用【网页授权获取用户信息】接口获取到用户的Openid.
	Receipt        string `json:"receipt,omitempty"`     // (非必填) Y,传入Y时,支付成功消息和支付详情页将出现开票入口.需要在微信支付商户平台或微信公众平台开通电子发票功能,传此字段才可生效
	SceneInfo      string `json:"scene_info,omitempty"`  // (非必填) 该字段用于上报场景信息,目前支持上报实际门店信息.该字段为JSON对象数据,对象格式为{"store_info":{"id": "门店ID","name": "名称","area_code": "编码","address": "地址" }} ,字段详细说明请点击行前的+展开
	// 用于生成SceneInfo
	SceneInfoModel *WxPaySceneInfoModel `json:"-"`
}

WxPayUnifiedOrderBody 统一下单的参数

type WxPayUnifiedOrderResponse

type WxPayUnifiedOrderResponse struct {
	WxResponseModel
	// 当return_code为SUCCESS时
	WxPayPartnerResponseModel

	DeviceInfo string `xml:"device_info"` // 调用接口提交的终端设备号
	// 当return_code 和result_code都为SUCCESS时
	TradeType string `xml:"trade_type"` // JSAPI-公众号支付 NATIVE-Native支付 APP-APP支付 说明详见参数规定
	PrepayId  string `xml:"prepay_id"`  // 微信生成的预支付回话标识,用于后续接口调用中使用,该值有效期为2小时
	CodeUrl   string `xml:"code_url"`   // trade_type=NATIVE时有返回,此url用于生成支付二维码,然后提供给用户进行扫码支付.注意:code_url的值并非固定,使用时按照URL格式转成二维码即可
	MWebUrl   string `xml:"mweb_url"`   // mweb_url为拉起微信支付收银台的中间页面,可通过访问该url来拉起微信客户端,完成支付,mweb_url的有效期为5分钟.
}

WxPayUnifiedOrderResponse 统一下单的返回值

type WxResponseModel

type WxResponseModel struct {
	ReturnCode string `xml:"return_code"` // SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
	ReturnMsg  string `xml:"return_msg"`  // 返回信息,如非空,为错误原因:签名失败/参数格式校验错误
	RetMsg     string `xml:"retmsg"`      // 沙盒时返回的错误信息
}

WxResponseModel 返回结果的通信标识

func WxPayReportJsApi

func WxPayReportJsApi(wxPayConfig IWxPayConfig, body *WxPayReportJsAPIBody) (*WxResponseModel, error)

WxPayReportJsApi 交易保障(JSAPI) https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_8&index=9

func WxPayReportMicropay

func WxPayReportMicropay(wxPayConfig IWxPayConfig, body *WxPayReportMicropayBody) (*WxResponseModel, error)

WxPayReportMicropay 交易保障(MICROPAY) https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_14&index=8

Jump to

Keyboard shortcuts

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