pay

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: May 12, 2023 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CloseOrder

func CloseOrder(clt *core.Client, req map[string]string) (resp map[string]string, err error)

CloseOrder 关闭订单.

func CloseOrder2

func CloseOrder2(clt *core.Client, req *CloseOrderRequest) (err error)

CloseOrder2 关闭订单.

func DownloadBill

func DownloadBill(clt *core.Client, filepath string, req *DownloadBillRequest, httpClient *http.Client) (written int64, err error)

下载对账单到到文件.

func DownloadBillToWriter

func DownloadBillToWriter(clt *core.Client, writer io.Writer, req *DownloadBillRequest, httpClient *http.Client) (written int64, err error)

下载对账单到 io.Writer.

func MicroPay

func MicroPay(clt *core.Client, req map[string]string) (resp map[string]string, err error)

MicroPay 提交刷卡支付.

func OrderQuery

func OrderQuery(clt *core.Client, req map[string]string) (resp map[string]string, err error)

OrderQuery 查询订单.

func Refund

func Refund(clt *core.Client, req map[string]string) (resp map[string]string, err error)

Refund 申请退款.

NOTE: 请求需要双向证书.

func RefundQuery

func RefundQuery(clt *core.Client, req map[string]string) (resp map[string]string, err error)

RefundQuery 查询退款.

func Reverse

func Reverse(clt *core.Client, req map[string]string) (resp map[string]string, err error)

Reverse 撤销订单.

NOTE: 请求需要双向证书.

func UnifiedOrder

func UnifiedOrder(clt *core.Client, req map[string]string) (resp map[string]string, err error)

UnifiedOrder 统一下单.

Types

type CloseOrderRequest

type CloseOrderRequest struct {
	XMLName struct{} `xml:"xml" json:"-"`

	// 必选参数
	OutTradeNo string `xml:"out_trade_no"` // 商户系统内部订单号

	// 可选参数
	NonceStr string `xml:"nonce_str"` // 随机字符串,不长于32位。NOTE: 如果为空则系统会自动生成一个随机字符串。
	SignType string `xml:"sign_type"` // 签名类型,目前支持HMAC-SHA256和MD5,默认为MD5
}

type DownloadBillRequest

type DownloadBillRequest struct {
	XMLName struct{} `xml:"xml" json:"-"`

	// 必选参数
	BillDate string `xml:"bill_date"` // 下载对账单的日期,格式:20140603
	BillType string `xml:"bill_type"` // 账单类型

	// 可选参数
	DeviceInfo string `xml:"device_info"` // 微信支付分配的终端设备号
	NonceStr   string `xml:"nonce_str"`   // 随机字符串,不长于32位。推荐随机数生成算法
	SignType   string `xml:"sign_type"`   // 签名类型,目前支持HMAC-SHA256和MD5,默认为MD5
	TarType    string `xml:"tar_type"`    // 压缩账单
}

type MicroPayRequest

type MicroPayRequest struct {
	XMLName struct{} `xml:"xml" json:"-"`

	// 必选参数
	Body           string `xml:"body"`             // 商品或支付单简要描述
	OutTradeNo     string `xml:"out_trade_no"`     // 商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
	TotalFee       int64  `xml:"total_fee"`        // 订单总金额,单位为分,详见支付金额
	SpbillCreateIP string `xml:"spbill_create_ip"` // APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP。
	AuthCode       string `xml:"auth_code"`        // 扫码支付授权码,设备读取用户微信中的条码或者二维码信息

	// 可选参数
	DeviceInfo string `xml:"device_info"` // 终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传"WEB"
	NonceStr   string `xml:"nonce_str"`   // 随机字符串,不长于32位。NOTE: 如果为空则系统会自动生成一个随机字符串。
	SignType   string `xml:"sign_type"`   // 签名类型,默认为MD5,支持HMAC-SHA256和MD5。
	Detail     string `xml:"detail"`      // 商品名称明细列表
	Attach     string `xml:"attach"`      // 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
	FeeType    string `xml:"fee_type"`    // 符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
	GoodsTag   string `xml:"goods_tag"`   // 商品标记,代金券或立减优惠功能的参数,说明详见代金券或立减优惠
	LimitPay   string `xml:"limit_pay"`   // no_credit--指定不能使用信用卡支付
	SceneInfo  string `xml:"scene_info"`  // 场景信息
}

type MicroPayResponse

type MicroPayResponse struct {
	XMLName struct{} `xml:"xml" json:"-"`

	// 必选返回
	OpenId        string    `xml:"openid"`         // 用户在商户appid下的唯一标识
	IsSubscribe   bool      `xml:"is_subscribe"`   // 用户是否关注公众账号
	TradeType     string    `xml:"trade_type"`     // 调用接口提交的交易类型,取值如下:JSAPI,NATIVE,APP,MICROPAY,详细说明见参数规定
	BankType      string    `xml:"bank_type"`      // 银行类型,采用字符串类型的银行标识
	TotalFee      int64     `xml:"total_fee"`      // 订单总金额,单位为分
	CashFee       int64     `xml:"cash_fee"`       // 现金支付金额订单现金支付金额,详见支付金额
	TransactionId string    `xml:"transaction_id"` // 微信支付订单号
	OutTradeNo    string    `xml:"out_trade_no"`   // 商户系统的订单号,与请求一致。
	TimeEnd       time.Time `xml:"time_end"`       // 订单支付时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则

	// 下面字段都是可选返回的(详细见微信支付文档), 为空值表示没有返回, 程序逻辑里需要判断
	DeviceInfo         string `xml:"device_info"`          // 微信支付分配的终端设备号
	SubOpenId          string `xml:"sub_openid"`           // 子商户appid下用户唯一标识,如需返回则请求时需要传sub_appid
	SubIsSubscribe     *bool  `xml:"sub_is_subscribe"`     // 用户是否关注子公众账号,仅在公众账号类型支付有效,取值范围:Y或N;Y-关注;N-未关注
	FeeType            string `xml:"fee_type"`             // 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
	SettlementTotalFee *int64 `xml:"settlement_total_fee"` // 应结订单金额=订单金额-非充值代金券金额,应结订单金额<=订单金额。
	CouponFee          *int64 `xml:"coupon_fee"`           // 代金券金额
	CashFeeType        string `xml:"cash_fee_type"`        // 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
	Attach             string `xml:"attach"`               // 附加数据,原样返回
	PromotionDetail    string `xml:"promotion_detail"`     // 营销详情
}

func MicroPay2

func MicroPay2(clt *core.Client, req *MicroPayRequest) (resp *MicroPayResponse, err error)

MicroPay2 提交刷卡支付.

type OrderQueryRequest

type OrderQueryRequest struct {
	XMLName struct{} `xml:"xml" json:"-"`

	// 下面这些参数至少提供一个
	TransactionId string `xml:"transaction_id"` // 微信的订单号,优先使用
	OutTradeNo    string `xml:"out_trade_no"`   // 商户系统内部的订单号,当没提供transaction_id时需要传这个。

	// 可选参数
	NonceStr string `xml:"nonce_str"` // 随机字符串,不长于32位。NOTE: 如果为空则系统会自动生成一个随机字符串。
	SignType string `xml:"sign_type"` // 签名类型,目前支持HMAC-SHA256和MD5,默认为MD5
}

type OrderQueryResponse

type OrderQueryResponse struct {
	XMLName struct{} `xml:"xml" json:"-"`

	// 必选返回
	TradeState     string    `xml:"trade_state"`      // 交易状态
	TradeStateDesc string    `xml:"trade_state_desc"` // 对当前查询订单状态的描述和下一步操作的指引
	OpenId         string    `xml:"openid"`           // 用户在商户appid下的唯一标识
	TransactionId  string    `xml:"transaction_id"`   // 微信支付订单号
	OutTradeNo     string    `xml:"out_trade_no"`     // 商户系统的订单号,与请求一致。
	TradeType      string    `xml:"trade_type"`       // 调用接口提交的交易类型,取值如下:JSAPI,NATIVE,APP,MICROPAY,详细说明见参数规定
	BankType       string    `xml:"bank_type"`        // 银行类型,采用字符串类型的银行标识
	TotalFee       int64     `xml:"total_fee"`        // 订单总金额,单位为分
	CashFee        int64     `xml:"cash_fee"`         // 现金支付金额订单现金支付金额,详见支付金额
	TimeEnd        time.Time `xml:"time_end"`         // 订单支付时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则

	// 下面字段都是可选返回的(详细见微信支付文档), 为空值表示没有返回, 程序逻辑里需要判断
	DeviceInfo         string `xml:"device_info"`          // 微信支付分配的终端设备号
	IsSubscribe        *bool  `xml:"is_subscribe"`         // 用户是否关注公众账号
	SubOpenId          string `xml:"sub_openid"`           // 用户在子商户appid下的唯一标识
	SubIsSubscribe     *bool  `xml:"sub_is_subscribe"`     // 用户是否关注子公众账号
	SettlementTotalFee *int64 `xml:"settlement_total_fee"` // 应结订单金额=订单金额-非充值代金券金额,应结订单金额<=订单金额。
	FeeType            string `xml:"fee_type"`             // 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
	CashFeeType        string `xml:"cash_fee_type"`        // 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
	Detail             string `xml:"detail"`               // 商品详情
	Attach             string `xml:"attach"`               // 附加数据,原样返回
}

func OrderQuery2

func OrderQuery2(clt *core.Client, req *OrderQueryRequest) (resp *OrderQueryResponse, err error)

OrderQuery2 查询订单.

NOTE: 该函数不支持 代金券 功能, 如果有 代金券 功能请使用 OrderQuery 函数.

type RefundItem

type RefundItem struct {
	XMLName struct{} `xml:"xml" json:"-"`

	// 必选返回
	OutRefundNo      string `xml:"out_refund_no"`      // 商户退款单号
	RefundId         string `xml:"refund_id"`          // 微信退款单号
	RefundFee        int64  `xml:"refund_fee"`         // 申请退款金额
	RefundStatus     string `xml:"refund_status"`      // 退款状态
	RefundRecvAccout string `xml:"refund_recv_accout"` // 退款入账账户

	// 下面字段都是可选返回的(详细见微信支付文档), 为空值表示没有返回, 程序逻辑里需要判断
	RefundChannel       string    `xml:"refund_channel"`        // 退款渠道
	SettlementRefundFee *int64    `xml:"settlement_refund_fee"` // 退款金额
	RefundAccount       string    `xml:"refund_account"`        // 退款资金来源
	RefundSuccessTime   time.Time `xml:"refund_success_time"`   // 退款成功时间
}

type RefundQueryRequest

type RefundQueryRequest struct {
	XMLName struct{} `xml:"xml" json:"-"`

	// 必选参数, 四选一
	TransactionId string `xml:"transaction_id"` // 微信订单号
	OutTradeNo    string `xml:"out_trade_no"`   // 商户订单号
	OutRefundNo   string `xml:"out_refund_no"`  // 商户退款单号
	RefundId      string `xml:"refund_id"`      // 微信退款单号

	// 可选参数
	NonceStr string `xml:"nonce_str"` // 随机字符串,不长于32位。NOTE: 如果为空则系统会自动生成一个随机字符串。
	SignType string `xml:"sign_type"` // 签名类型,目前支持HMAC-SHA256和MD5,默认为MD5
}

type RefundQueryResponse

type RefundQueryResponse struct {
	XMLName struct{} `xml:"xml" json:"-"`

	// 必选返回
	TransactionId string       `xml:"transaction_id"` // 微信订单号
	OutTradeNo    string       `xml:"out_trade_no"`   // 商户系统内部的订单号
	TotalFee      int64        `xml:"total_fee"`      // 订单总金额,单位为分,只能为整数,详见支付金额
	CashFee       int64        `xml:"cash_fee"`       // 现金支付金额,单位为分,只能为整数,详见支付金额
	RefundCount   int          `xml:"refund_count"`   // 退款笔数
	RefundList    []RefundItem `xml:"refund_list"`    // 退款列表

	// 下面字段都是可选返回的(详细见微信支付文档), 为空值表示没有返回, 程序逻辑里需要判断
	SettlementTotalFee *int64 `xml:"settlement_total_fee"` // 应结订单金额=订单金额-非充值代金券金额,应结订单金额<=订单金额。
	FeeType            string `xml:"fee_type"`             // 订单金额货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
	CashFeeType        string `xml:"cash_fee_type"`        // 现金支付货币类型
}

func RefundQuery2

func RefundQuery2(clt *core.Client, req *RefundQueryRequest) (resp *RefundQueryResponse, err error)

RefundQuery2 查询退款.

NOTE: 该函数不支持 代金券 功能, 如果有 代金券 功能请使用 RefundQuery 函数.

type RefundRequest

type RefundRequest struct {
	XMLName struct{} `xml:"xml" json:"-"`

	// 必选参数, TransactionId 和 OutTradeNo 二选一即可.
	TransactionId string `xml:"transaction_id"` // 微信生成的订单号,在支付通知中有返回
	OutTradeNo    string `xml:"out_trade_no"`   // 商户侧传给微信的订单号
	OutRefundNo   string `xml:"out_refund_no"`  // 商户系统内部的退款单号,商户系统内部唯一,同一退款单号多次请求只退一笔
	TotalFee      int64  `xml:"total_fee"`      // 订单总金额,单位为分,只能为整数,详见支付金额
	RefundFee     int64  `xml:"refund_fee"`     // 退款总金额,订单总金额,单位为分,只能为整数,详见支付金额

	// 可选参数
	NonceStr      string `xml:"nonce_str"`       // 随机字符串,不长于32位。NOTE: 如果为空则系统会自动生成一个随机字符串。
	SignType      string `xml:"sign_type"`       // 签名类型,目前支持HMAC-SHA256和MD5,默认为MD5
	RefundFeeType string `xml:"refund_fee_type"` // 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
	RefundDesc    string `xml:"refund_desc"`     // 若商户传入,会在下发给用户的退款消息中体现退款原因
	RefundAccount string `xml:"refund_account"`  // 退款资金来源
}

type RefundResponse

type RefundResponse struct {
	XMLName struct{} `xml:"xml" json:"-"`

	// 必选返回
	TransactionId string `xml:"transaction_id"` // 微信订单号
	OutTradeNo    string `xml:"out_trade_no"`   // 商户系统内部的订单号
	OutRefundNo   string `xml:"out_refund_no"`  // 商户退款单号
	RefundId      string `xml:"refund_id"`      // 微信退款单号
	RefundFee     int64  `xml:"refund_fee"`     // 退款总金额,单位为分,可以做部分退款
	TotalFee      int64  `xml:"total_fee"`      // 订单总金额,单位为分,只能为整数,详见支付金额
	CashFee       int64  `xml:"cash_fee"`       // 现金支付金额,单位为分,只能为整数,详见支付金额

	// 下面字段都是可选返回的(详细见微信支付文档), 为空值表示没有返回, 程序逻辑里需要判断
	SettlementRefundFee *int64 `xml:"settlement_refund_fee"` // 退款金额=申请退款金额-非充值代金券退款金额,退款金额<=申请退款金额
	SettlementTotalFee  *int64 `xml:"settlement_total_fee"`  // 应结订单金额=订单金额-非充值代金券金额,应结订单金额<=订单金额。
	FeeType             string `xml:"fee_type"`              // 订单金额货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
	CashFeeType         string `xml:"cash_fee_type"`         // 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
	CashRefundFee       *int64 `xml:"cash_refund_fee"`       // 现金退款金额,单位为分,只能为整数,详见支付金额
}

func Refund2

func Refund2(clt *core.Client, req *RefundRequest) (resp *RefundResponse, err error)

Refund2 申请退款.

NOTE:
1. 请求需要双向证书.
2. 该函数不支持 代金券 功能, 如果有 代金券 功能请使用 Refund 函数.

type ReverseRequest

type ReverseRequest struct {
	XMLName struct{} `xml:"xml" json:"-"`

	// 必选参数,二选一
	TransactionId string `xml:"transaction_id"` // 微信的订单号,优先使用
	OutTradeNo    string `xml:"out_trade_no"`   // 商户系统内部订单号

	// 可选参数
	NonceStr string `xml:"nonce_str"` // 随机字符串,不长于32位。NOTE: 如果为空则系统会自动生成一个随机字符串。
	SignType string `xml:"sign_type"` // 签名类型,目前支持HMAC-SHA256和MD5,默认为MD5
}

type ReverseResponse

type ReverseResponse struct {
	XMLName struct{} `xml:"xml" json:"-"`

	// 必选返回
	Recall bool `xml:"recall"` // 是否需要继续调用撤销
}

func Reverse2

func Reverse2(clt *core.Client, req *ReverseRequest) (resp *ReverseResponse, err error)

Reverse2 撤销订单.

NOTE: 请求需要双向证书.

type UnifiedOrderRequest

type UnifiedOrderRequest struct {
	XMLName struct{} `xml:"xml" json:"-"`

	// 必选参数
	Body           string `xml:"body"`             // 商品或支付单简要描述
	OutTradeNo     string `xml:"out_trade_no"`     // 商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
	TotalFee       int64  `xml:"total_fee"`        // 订单总金额,单位为分,详见支付金额
	SpbillCreateIP string `xml:"spbill_create_ip"` // APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP。
	NotifyURL      string `xml:"notify_url"`       // 接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
	TradeType      string `xml:"trade_type"`       // 取值如下:JSAPI,NATIVE,APP,详细说明见参数规定

	// 可选参数
	DeviceInfo string    `xml:"device_info"` // 终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传"WEB"
	NonceStr   string    `xml:"nonce_str"`   // 随机字符串,不长于32位。NOTE: 如果为空则系统会自动生成一个随机字符串。
	SignType   string    `xml:"sign_type"`   // 签名类型,默认为MD5,支持HMAC-SHA256和MD5。
	Detail     string    `xml:"detail"`      // 商品名称明细列表
	Attach     string    `xml:"attach"`      // 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
	FeeType    string    `xml:"fee_type"`    // 符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
	TimeStart  time.Time `xml:"time_start"`  // 订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则
	TimeExpire time.Time `xml:"time_expire"` // 订单失效时间,格式为yyyyMMddHHmmss,如2009年12月27日9点10分10秒表示为20091227091010。其他详见时间规则
	GoodsTag   string    `xml:"goods_tag"`   // 商品标记,代金券或立减优惠功能的参数,说明详见代金券或立减优惠
	ProductId  string    `xml:"product_id"`  // trade_type=NATIVE,此参数必传。此id为二维码中包含的商品ID,商户自行定义。
	LimitPay   string    `xml:"limit_pay"`   // no_credit--指定不能使用信用卡支付
	OpenId     string    `xml:"openid"`      // rade_type=JSAPI,此参数必传,用户在商户appid下的唯一标识。
	SubOpenId  string    `xml:"sub_openid"`  // trade_type=JSAPI,此参数必传,用户在子商户appid下的唯一标识。openid和sub_openid可以选传其中之一,如果选择传sub_openid,则必须传sub_appid。
	SceneInfo  string    `xml:"scene_info"`  // 该字段用于上报支付的场景信息,针对H5支付有以下三种场景,请根据对应场景上报,H5支付不建议在APP端使用,针对场景1,2请接入APP支付,不然可能会出现兼容性问题
}

type UnifiedOrderResponse

type UnifiedOrderResponse struct {
	XMLName struct{} `xml:"xml" json:"-"`

	// 必选返回
	PrepayId  string `xml:"prepay_id"`  // 微信生成的预支付回话标识,用于后续接口调用中使用,该值有效期为2小时
	TradeType string `xml:"trade_type"` // 调用接口提交的交易类型,取值如下:JSAPI,NATIVE,APP,详细说明见参数规定

	// 下面字段都是可选返回的(详细见微信支付文档), 为空值表示没有返回, 程序逻辑里需要判断
	DeviceInfo string `xml:"device_info"` // 调用接口提交的终端设备号。
	CodeURL    string `xml:"code_url"`    // trade_type 为 NATIVE 时有返回,可将该参数值生成二维码展示出来进行扫码支付
	MWebURL    string `xml:"mweb_url"`    // trade_type 为 MWEB 时有返回
}

func UnifiedOrder2

func UnifiedOrder2(clt *core.Client, req *UnifiedOrderRequest) (resp *UnifiedOrderResponse, err error)

UnifiedOrder2 统一下单.

Jump to

Keyboard shortcuts

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