wxpay

package
v1.0.3 Latest Latest
Warning

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

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

Documentation

Index

Constants

View Source
const (
	//企业付款-接口URL地址
	WXMXCHPAY_TRANSFERS_URL = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers" //企业付款,用于企业向微信用户个人付款
	//企业付款-接口URL地址(沙箱)
	WXMXCHPAY_SANDBOX_TRANSFERS_URL = "https://api.mch.weixin.qq.com/pay/unifiedorder" //企业付款,用于企业向微信用户个人付款
)
View Source
const (
	CHECK_NAME_NO_CHECK    = "NO_CHECK"    //不校验真实姓名
	CHECK_NAME_FORCE_CHECK = "FORCE_CHECK" //强校验真实姓名
)
View Source
const (
	WXPAY_UNIFIEDORDER_URL = "https://api.mch.weixin.qq.com/pay/unifiedorder" //统一下单
	WXPAY_MICROPAY_URL     = "https://api.mch.weixin.qq.com/pay/micropay"     //提交刷卡支付
	WXPAY_ORDERQUER_URL    = "https://api.mch.weixin.qq.com/pay/orderquery"   //查询订单
)

接口URL地址

View Source
const (
	WXPAY_SANDBOX_UNIFIEDORDER_URL = "https://api.mch.weixin.qq.com/pay/unifiedorder" //统一下单
	WXPAY_SANDBOX_MICROPAY_URL     = "https://api.mch.weixin.qq.com/pay/micropay"     //提交刷卡支付
	WXPAY_SANDBOX_ORDERQUER_URL    = "https://api.mch.weixin.qq.com/pay/orderquery"   //查询订单
)

接口URL地址(沙箱)

View Source
const (
	SUCCESS = "SUCCESS"
	FAIL    = "FAIL"
	OK      = "OK"
)

返回结果

View Source
const (
	SIGN_TYPE_MD5         = "MD5"
	SIGN_TYPE_HMAC_SHA256 = "HMAC-SHA256"
)

签名类型

View Source
const (
	TRADE_TYPE_MWEB     = "MWEB"     //H5支付
	TRADE_TYPE_JSAPI    = "JSAPI"    //小程序/公众号支付
	TRADE_TYPE_APP      = "APP"      //APP支付
	TRADE_TYPE_NATIVE   = "NATIVE"   //扫码支付
	TRADE_TYPE_MICROPAY = "MICROPAY" //刷卡支付
)

交易类型

View Source
const (
	DEVICEINFO_XXC = "XXC" //默认设备类型
	DEVICEINFO_WEB = "WEB" //H5支付或公众号支付
)

设备号

View Source
const (
	DEFAULT_ORDER_BODY  = "充值"
	DEFAULT_FEETYPE     = "CNY" //默认货币类型
	K_CONTENT_TYPE_FORM = "application/x-www-form-urlencoded;charset=utf-8"
	DEFAULT_TAG         = "xml"
	DEFAULT_EXPIRE      = "1h" //默认失效时间间隔1小时
)
View Source
const (
	NOAUTH                = "NOAUTH"                //商户无此接口权限
	NOTENOUGH             = "NOTENOUGH"             //用户帐号余额不足,请用户充值或更换支付卡后再支付
	ORDERPAID             = "ORDERPAID"             //商户订单已支付,无需更多操作
	ORDERCLOSED           = "ORDERCLOSED"           //当前订单已关闭,请重新下单
	SYSTEMERROR           = "SYSTEMERROR"           //系统异常,请用相同参数重新调用
	APPID_NOT_EXIST       = "APPID_NOT_EXIST"       //请检查APPID是否正确
	MCHID_NOT_EXIST       = "MCHID_NOT_EXIST"       //请检查MCHID是否正确
	APPID_MCHID_NOT_MATCH = "APPID_MCHID_NOT_MATCH" //请确认appid和mch_id是否匹配
	LACK_PARAMS           = "LACK_PARAMS"           //请检查参数是否齐全
	OUT_TRADE_NO_USED     = "OUT_TRADE_NO_USED"     //请核实商户订单号是否重复提交
	SIGNERROR             = "SIGNERROR"             //签名错误
	XML_FORMAT_ERROR      = "XML_FORMAT_ERROR"      //XML格式错误
	REQUIRE_POST_METHOD   = "REQUIRE_POST_METHOD"   //未使用post传递参数
	POST_DATA_EMPTY       = "POST_DATA_EMPTY"       //post数据不能为空
	NOT_UTF8              = "NOT_UTF8"              //未使用指定编码格式
	PARAM_ERROR           = "PARAM_ERROR"           //参数错误
	AUTHCODEEXPIRE        = "AUTHCODEEXPIRE"        //请收银员提示用户,请用户在微信上刷新条码
	NOTSUPORTCARD         = "NOTSUPORTCARD"         //该卡不支持当前支付,提示用户换卡支付或绑新卡支付
	ORDERREVERSED         = "ORDERREVERSED"         //订单已撤销
	BANKERROR             = "BANKERROR"             //请立即调用被扫订单结果查询API,查询当前订单的不同状态,决定下一步的操作。
	USERPAYING            = "USERPAYING"            //等待5秒,然后调用被扫订单结果查询API,查询当前订单的不同状态,决定下一步的操作。
	AUTH_CODE_ERROR       = "AUTH_CODE_ERROR"       //每个二维码仅限使用一次,请刷新再试
	AUTH_CODE_INVALID     = "AUTH_CODE_INVALID"     //请扫描微信支付被扫条码/二维码
	BUYER_MISMATCH        = "BUYER_MISMATCH"        //请确认支付方是否相同
	INVALID_REQUEST       = "INVALID_REQUEST"       //请确认商户系统是否正常,是否具有相应支付权限
	TRADE_ERROR           = "TRADE_ERROR"           //请确认帐号是否存在异常
)

微信支付返回错误码

Variables

View Source
var (
	WXPAY_ERROR               = errors.New("请求失败")
	WXPAY_REQ_PARAMT_ERROR    = errors.New("缺少参数")
	WXPAY_JSON_MARSHA_ERROR   = errors.New("JSON生成错误")
	WXPAY_JSON_UNMARSHA_ERROR = errors.New("JSON解析错误")
	WXPAY_XML_MARSHA_ERROR    = errors.New("XML生成错误")
	WXPAY_XML_UNMARSHA_ERROR  = errors.New("XML解析错误")
	WXPAY_SIGN_CAL_ERROR      = errors.New("签名计算失败")
	WXPAY_SIGN_VERIFY_ERROR   = errors.New("签名验证失败")
)

请求参数错误

Functions

func CreateOutTradeNo

func CreateOutTradeNo() string

创建唯一订单号 yyyymmddhhssmm_18位随机序列

func GetRandomString

func GetRandomString(lens int) string

生成随机字符串 lens:生成字符串长度

func InitTransport

func InitTransport(certFilePath, keyFilePath, rootCaPath string) (httpTransport *http.Transport, err error)

初始化证书

func IsEmpty

func IsEmpty(a interface{}) bool

判断是否为空

Types

type CloseOrder

type CloseOrder struct {
	XMLName       struct{} `xml:"xml"`
	AppId         string   `xml:"appid"`          //小程序ID
	MchId         string   `xml:"mch_id"`         //商户号
	TransactionId string   `xml:"transaction_id"` //微信支付订单号
	OutTradeNo    string   `xml:"out_trade_no"`   //商户订单号
	NonceStr      string   `xml:"nonce_str"`      //随机字符串
	Sign          string   `xml:"sign"`           //签名
	SignType      string   `xml:"sign_type"`      //签名类型
}

关闭订单-请求信息

type CommonReturn

type CommonReturn struct {
	ReturnCode string `xml:"return_code"` //返回状态码
	ReturnMsg  string `xml:"return_msg"`  //返回信息
}

通用-请求返回信息

type MicropayResult

type MicropayResult struct {
	XMLName            struct{} `xml:"xml"`
	ReturnCode         string   `xml:"return_code"`          //返回状态码
	ReturnMsg          string   `xml:"return_msg"`           //返回信息
	AppId              string   `xml:"appid"`                //小程序ID
	SubAppId           string   `xml:"sub_appid"`            //子商户公众账号ID,否
	MchId              string   `xml:"mch_id"`               //商户号
	SubMchId           string   `xml:"sub_mch_id"`           //子商户号,微信支付分配的子商户号,开发者模式下必填
	DeviceInfo         string   `xml:"device_info"`          //设备号
	NonceStr           string   `xml:"nonce_str"`            //随机字符串
	Sign               string   `xml:"sign"`                 //签名
	ResultCode         string   `xml:"result_code"`          //业务结果
	ErrCode            string   `xml:"err_code"`             //错误代码
	ErrCodeDes         string   `xml:"err_code_des"`         //错误代码描述
	Openid             string   `xml:"openid"`               //用户标识
	IsSubscribe        string   `xml:"is_subscribe"`         //是否关注公众账号
	SubOpenid          string   `xml:"sub_openid"`           //子商户appid下用户唯一标识,如需返回则请求时需要传sub_appid
	TradeType          string   `xml:"trade_type"`           //交易类型
	BankType           string   `xml:"bank_type"`            //付款银行
	FeeType            string   `xml:"fee_type"`             //货币类型
	TotalFee           string   `xml:"total_fee"`            //订单金额
	SettlementTotalFee string   `xml:"settlement_total_fee"` //应结订单金额
	CouponFee          string   `xml:"coupon_fee"`           //代金券金额
	CashFeeType        string   `xml:"cash_fee_type"`        //现金支付币种
	CashFee            string   `xml:"cash_fee"`             //现金支付金额
	TransactionId      string   `xml:"transaction_id"`       //微信支付订单号
	OutTradeNo         string   `xml:"out_trade_no"`         //商户订单号
	Attach             string   `xml:"attach"`               //附加数据
	TimeEnd            string   `xml:"time_end"`             //支付完成时间
	PromotionDetail    string   `xml:"promotion_detail"`     //营销详情
}

提交刷卡支付-返回结果

type MktTransfersResult

type MktTransfersResult struct {
	ReturnCode     string //返回状态码
	ReturnMsg      string //返回信息
	MchAppId       string //商户appid
	MchId          string //商户号
	DeviceInfo     string //设备号
	NonceStr       string //随机字符串
	ResultCode     string //业务结果
	ErrCode        string //错误代码
	ErrCodeDes     string //错误代码描述
	PartnerTradeNo string //商户订单号
	PaymentNo      string //微信付款单号
	PaymentTime    string //付款成功时间
}

企业付款-返回结果

type OrderqueryResult

type OrderqueryResult struct {
	XMLName            struct{} `xml:"xml"`
	ReturnCode         string   `xml:"return_code"`          //返回状态码
	ReturnMsg          string   `xml:"return_msg"`           //返回信息
	AppId              string   `xml:"appid"`                //小程序ID
	MchId              string   `xml:"mch_id"`               //商户号
	DeviceInfo         string   `xml:"device_info"`          //设备号
	NonceStr           string   `xml:"nonce_str"`            //随机字符串
	Sign               string   `xml:"sign"`                 //签名
	ResultCode         string   `xml:"result_code"`          //业务结果
	ErrCode            string   `xml:"err_code"`             //错误代码
	ErrCodeDes         string   `xml:"err_code_des"`         //错误代码描述
	Openid             string   `xml:"openid"`               //用户标识
	IsSubscribe        string   `xml:"is_subscribe"`         //是否关注公众账号
	TradeType          string   `xml:"trade_type"`           //交易类型
	TradeState         string   `xml:"trade_state"`          //交易状态
	BankType           string   `xml:"bank_type"`            //付款银行
	TotalFee           string   `xml:"total_fee"`            //订单金额
	SettlementTotalFee string   `xml:"settlement_total_fee"` //应结订单金额
	FeeType            string   `xml:"fee_type"`             //货币类型
	CashFeeType        string   `xml:"cash_fee_type"`        //现金支付币种
	CashFee            string   `xml:"cash_fee"`             //现金支付金额
	CouponFee          string   `xml:"coupon_fee"`           //代金券金额
	CouponCount        string   `xml:"coupon_count"`         //代金券使用数量
	TransactionId      string   `xml:"transaction_id"`       //微信支付订单号
	OutTradeNo         string   `xml:"out_trade_no"`         //商户订单号
	Attach             string   `xml:"attach"`               //附加数据
	TimeEnd            string   `xml:"time_end"`             //支付完成时间
	TradeStateDesc     string   `xml:"trade_state_desc"`     //交易状态描述
}

查询订单-返回信息

type UnifiedOrderNotifyResult

type UnifiedOrderNotifyResult struct {
	XMLName            struct{} `xml:"xml"`
	ReturnCode         string   `xml:"return_code"`          //返回状态码
	ReturnMsg          string   `xml:"return_msg"`           //返回信息
	AppId              string   `xml:"appid"`                //小程序ID
	MchId              string   `xml:"mch_id"`               //商户号
	DeviceInfo         string   `xml:"device_info"`          //设备号
	NonceStr           string   `xml:"nonce_str"`            //随机字符串
	Sign               string   `xml:"sign"`                 //签名
	ResultCode         string   `xml:"result_code"`          //业务结果
	ErrCode            string   `xml:"err_code"`             //错误代码
	ErrCodeDes         string   `xml:"err_code_des"`         //错误代码描述
	Openid             string   `xml:"openid"`               //用户标识
	IsSubscribe        string   `xml:"is_subscribe"`         //是否关注公众账号
	TradeType          string   `xml:"trade_type"`           //交易类型
	BankType           string   `xml:"bank_type"`            //付款银行
	TotalFee           string   `xml:"total_fee"`            //订单金额
	SettlementTotalFee string   `xml:"settlement_total_fee"` //应结订单金额
	FeeType            string   `xml:"fee_type"`             //标价币种
	CashFee            string   `xml:"cash_fee"`             //现金支付金额
	CashFeeType        string   `xml:"cash_fee_type"`        //现金支付币种
	CouponFee          string   `xml:"coupon_fee"`           //代金券金额
	CouponCount        string   `xml:"coupon_count"`         //代金券使用数量
	TransactionId      string   `xml:"transaction_id"`       //微信支付订单号
	OutTradeNo         string   `xml:"out_trade_no"`         //商户订单号
	Attach             string   `xml:"attach"`               //附加数据
	TimeEnd            string   `xml:"time_end"`             //支付完成时间
}

统一下单-支付结果通知

type UnifiedOrderResult

type UnifiedOrderResult struct {
	ReturnCode     string            //返回状态码
	ReturnMsg      string            //返回信息
	ResultCode     string            //业务结果
	ErrCode        string            //错误代码
	ErrCodeDes     string            //错误代码描述
	PrepayId       string            //预支付交易会话标识
	PrepayUrl      string            //二维码链接或者支付跳转链接
	RequestPayment *WXRequestPayment //小程序支付
}

统一下单-返回结果

type WXRequestPayment

type WXRequestPayment struct {
	AppId     string `xml:"appId"`     //小程序ID
	TimeStamp string `xml:"timeStamp"` //时间戳
	NonceStr  string `xml:"nonceStr"`  //随机字符串
	Package   string `xml:"package"`   //数据包
	SignType  string `xml:"signType"`  //签名方式
	Sign      string `xml:"sign"`      //签名
}

小程序调起支付信息

type WxMchPay

type WxMchPay struct {
	// contains filtered or unexported fields
}

微信企业付款

func NewWxMchPay

func NewWxMchPay(mchAppId, mchId, partnerKey, spBillCreateIp, deviceInfo string, useSandbox bool, httpTransport *http.Transport) (wx *WxMchPay)

创建微信支付对象

func (*WxMchPay) MktTransfers

func (wx *WxMchPay) MktTransfers(partnerTradeNo string, openId string, checkName string, reUserName string, amount int,
	desc string, nonceStr string) (result *MktTransfersResult, err error)

用于企业向微信用户个人付款 partnerTradeNo,商户订单号(必填) openId,用户openid(必填) checkName,校验用户姓名选项(必填) reUserName,收款用户姓名(非必填,如果check_name设置为FORCE_CHECK,则必填用户真实姓名) amount,金额,企业付款金额,单位为分(必填) desc,企业付款备注,(必填) nonceStr,随机字符串,不长于32位(必填)

type WxPay

type WxPay struct {
	AppId              string //小程序appId
	SubAppId           string //子商户公众账号ID,否
	MchId              string //商户号
	SubMchId           string //子商户号,微信支付分配的子商户号,开发者模式下必填
	PartnerKey         string //商户密钥
	DeviceInfo         string //设备号
	FeeType            string //货币类型
	SpBillCreateIp     string //终端IP
	SignType           string //签名类型
	MachCert           []byte //商户证书
	UseSandbox         bool   //是否是测试环境
	NotifyUrl          string //通知地址
	TradeType          string //交易类型
	HttpClient         *http.Client
	HttpClientWithCert *http.Client
}

微信支付

func New

func New(appId, subAppId, mchId, subMchId, partnerKey, notifyUrl, spBillCreateIp, tradeType, signType, deviceInfo string, useSandbox bool, machCert []byte) (wx *WxPay)

创建微信支付对象

func (*WxPay) CloseOrder

func (wx *WxPay) CloseOrder() (queryResult *OrderqueryResult, err error)

关闭订单 场景:公共号支付、扫码支付、APP支付

func (*WxPay) MicroPay

func (wx *WxPay) MicroPay(totalFee int64, outTradeNo, body, authCode, detail, attach, goodsTag,
	limitPay, sceneInfo string) (micropayResult *MicropayResult, err error)

提交刷卡支付 场景:刷卡支付

func (*WxPay) MicroPayWithPos

func (wx *WxPay) MicroPayWithPos(totalFee int64, outTradeNo, body, authCode, detail, attach, goodsTag,
	limitPay, sceneInfo string) (micropayResult *MicropayResult, err error)

提交刷卡支付 内置重试机制,最多60s

func (*WxPay) OrderQuery

func (wx *WxPay) OrderQuery(transactionId, outTradeNo string) (queryResult *OrderqueryResult, err error)

查询订单 场景:刷卡支付、公共号支付、扫码支付、APP支付

func (*WxPay) UnifiedOrder

func (wx *WxPay) UnifiedOrder(totalFee int64, outTradeNo, body, openId, detail, attach, goodsTag, productId,
	limitPay, sceneInfo string) (orderResult *UnifiedOrderResult, err error)

统一下单 场景:公共号支付、扫码支付、APP支付

func (*WxPay) UnifiedOrderNotify

func (wx *WxPay) UnifiedOrderNotify(result []byte) (unifiedOrderNotifyResult *UnifiedOrderNotifyResult, err error)

统一下单-支付结果通知

Jump to

Keyboard shortcuts

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