wxpay4go

package module
v0.0.0-...-e90eec1 Latest Latest
Warning

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

Go to latest
Published: Dec 1, 2021 License: Apache-2.0 Imports: 20 Imported by: 0

README

wxpay4go

介绍

微信支付SDK,基于全新的微信支付API v3的实现。支持小程序支付、JSAPI支付、Native支付、APP支付、H5支付,并支持直连商户模式和服务商商户模式。

安装说明

go get github.com/haming123/wxpay4go

服务商支付模式的使用
  1. 商户对象初始化
package main

import (
	"log"
	"wxpay4go"
)

var MchCtx *wxpay4go.MchWxapp = nil
func MchCtxInit() error {
	pem_cert, err := wxpay4go.LoadCertificateWithPath("/path/to/merchant/apiclient_cert.pem")
	if err != nil {
		return err
	}
	pem_key, err := wxpay4go.LoadPrivateKeyWithPath("/path/to/merchant/apiclient_key.pem")
	if err != nil {
		return err
	}
	MchCtx = wxpay4go.InitMidMch4Wxapp("mchID_string", "appID_string", "mchAPIv3Key_string", pem_cert, pem_key)
	return nil
}

func main() {
	//......
	err := MchCtxInit()
	if err != nil {
		log.Print(err)
		return
	}
	//......
}
  1. 支付下单
func HandlerPayCreateDemo(w http.ResponseWriter, r *http.Request) {
	//................(其他业务逻辑)
	var data_req wxpay4go.WxAppOrderData
	data_req.Description = "业务描述"
	data_req.Out_trade_no = "业务订单号"
	data_req.Notify_url = "接收支付通知的URL地址"
	data_req.Sub_mchid = "子商户号"
	data_req.Sub_appid = "小程序的APPID"
	data_req.Payer.Sub_openid = "用户在小程序中的OPENID"
	data_req.Amount.Total = 20
	param, err := MchCtx.CreateOrder(data_req)
	if err!= nil {
		log.Print(err)
		return
	}
	//................(其他业务逻辑)
}
  1. 支付订单查询
func HandlerPayQueryDemo(w http.ResponseWriter, r *http.Request) {
	//................(其他业务逻辑)
	out_trade_no := "业务订单号"
	sub_mchid := "子商户号"
	result, err := MchCtx.QueryByOutTradeNo(out_trade_no, sub_mchid)
	if err!= nil {
		log.Print(err)
		return
	}
	//................(其他业务逻辑)
}
  1. 支付回调处理
func HandlerPayCallBack(w http.ResponseWriter, r *http.Request) {
	//解析回调数据
	req_info, err := MchCtx.ParsePayCallBack(r)
	if err != nil {
		wxpay4go.HttpCallBackReturn(w, 500,"FAIL", "FAIL")
		return
	}

	//................(其他业务逻辑)

	//回调返回
	wxpay4go.HttpCallBackReturn(w, 200, "SUCCESS", "SUCCESS")
}
  1. 退款申请
func HandlerRefundDemo(w http.ResponseWriter, r *http.Request) {
	//................(其他业务逻辑)
	var data wxpay4go.RefundCreateReq
	data.Sub_mchid = "子商户号"
	data.Out_trade_no = "业务订单号"
	data.Out_refund_no = "商户的退款单号"
	data.Amount.Total = 20
	data.Amount.Refund = 20
	data.Notify_url = "退款结果回调的URL"
	result, err := MchCtx.RefundOrder(data)
	if err!= nil {
		log.Print(err)
	}
	//................(其他业务逻辑)
}
  1. 退款回调处理
func HandlerRefundCallBack(w http.ResponseWriter, r *http.Request) {
	//解析回调数据
	req_info, err := MchCtx.ParseRefundCallBack(r)
	if err != nil {
		wxpay4go.HttpCallBackReturn(w, 500,"FAIL", "FAIL")
		return
	}

	//................(其他业务逻辑)

	//回调返回
	wxpay4go.HttpCallBackReturn(w, 200, "SUCCESS", "SUCCESS")
}
其他支付方式的使用
  1. 直连商户商户对象初始化
//小程序
MchCtx = wxpay4go.InitEndMch4Wxapp("mchID_string", "appID_string", "mchAPIv3Key_string", pem_cert, pem_key)
//JsAPi
MchCtx = wxpay4go.InitEndMch4JsApi("mchID_string", "appID_string", "mchAPIv3Key_string", pem_cert, pem_key)
//H5
MchCtx = wxpay4go.InitEndMch4H5("mchID_string", "appID_string", "mchAPIv3Key_string", pem_cert, pem_key)
//Native
MchCtx = wxpay4go.InitEndMch4Native("mchID_string", "appID_string", "mchAPIv3Key_string", pem_cert, pem_key)
//App
MchCtx = wxpay4go.InitEndMch4Osapp("mchID_string", "appID_string", "mchAPIv3Key_string", pem_cert, pem_key)
  1. 服务商商户对象初始化
//小程序
MchCtx = wxpay4go.InitMidMch4Wxapp("mchID_string", "appID_string", "mchAPIv3Key_string", pem_cert, pem_key)
//JsAPi
MchCtx = wxpay4go.InitMidMch4JsApi("mchID_string", "appID_string", "mchAPIv3Key_string", pem_cert, pem_key)
//H5
MchCtx = wxpay4go.InitMidMch4H5("mchID_string", "appID_string", "mchAPIv3Key_string", pem_cert, pem_key)
//Native
MchCtx = wxpay4go.InitMidMch4Native("mchID_string", "appID_string", "mchAPIv3Key_string", pem_cert, pem_key)
//App
MchCtx = wxpay4go.InitMidMch4Osapp("mchID_string", "appID_string", "mchAPIv3Key_string", pem_cert, pem_key)
多商户的处理
//多商户管理代码示例
var mch_map_wxapp = make(map[string]*wxpay4go.MchWxapp)
var lock_mch_map_wxapp sync.RWMutex
func GetMchCtx(mch_id string) *wxpay4go.MchWxapp {
	lock_mch_map_wxapp.Lock()
	defer lock_mch_map_wxapp.Unlock()

	ent, ok := mch_map_wxapp[mch_id]
	if !ok {
		pem_cert, err := wxpay4go.LoadCertificateWithPath("/path/to/merchant/apiclient_cert.pem")
		if err != nil {
			log.Print("load merchant Certificate error")
		}
		pem_key, err := wxpay4go.LoadPrivateKeyWithPath("/path/to/merchant/apiclient_key.pem")
		if err != nil {
			log.Print("load merchant PrivateKey error")
		}
		ent = wxpay4go.InitEndMch4Wxapp("mchID_string", "appID_string", "mchAPIv3Key_string", pem_cert, pem_key)
		mch_map_wxapp[mch_id] = ent
	}

	return ent
}

//多商户模式下的统一下单示例代码
func HandlerPayCreateDemo(w http.ResponseWriter, r *http.Request) {
	//................(其他业务逻辑)
	mch_id := "直连商户的商户号"
	mch_ctx := GetMchCtx(mch_id)
	if mch_ctx == nil {
		log.Print("mch not find")
		return
	}

	var data_req wxpay4go.WxAppOrderData
	data_req.Description = "业务描述"
	data_req.Out_trade_no = "业务订单号"
	data_req.Notify_url = "接收支付通知的URL地址"
	data_req.Payer.Openid = "用户在小程序中的OPENID"
	data_req.Amount.Total = 20
	result, err := mch_ctx.CreateOrder(data_req)
	if err!= nil {
		log.Print(err)
	}
	//................(其他业务逻辑)
}

Documentation

Index

Constants

View Source
const NonceSymbols = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

生成32个字节的请求随机串

Variables

This section is empty.

Functions

func DecryptAES256GCM

func DecryptAES256GCM(aesKey, associatedData, nonce, ciphertext string) (string, error)

使用 AEAD_AES_256_GCM 算法进行解密 你可以使用此算法完成微信支付平台证书和回调报文解密

func GenerateNonce

func GenerateNonce() (string, error)

func GenerateWxPayReqHeader

func GenerateWxPayReqHeader(ctx *MchParam, method string, rawUrl string, signBody string) (authorization string, err error)

生成请求报文头中的Authorization信息 method:HTTP请求的方法(GET,POST) rawUrl:请求的绝对URL,用于获取除域名部分得到参与签名的URL signBody:请求报文主体

func GetPlatCertificate

func GetPlatCertificate(ctx *MchParam, serial_no string) *x509.Certificate

func HttpCallBackReturn

func HttpCallBackReturn(w http.ResponseWriter, status int, code string, message string)

支付通知返回

func LoadCertificate

func LoadCertificate(certificateStr string) (certificate *x509.Certificate, err error)

通过证书的文本内容加载证书

func LoadCertificateWithPath

func LoadCertificateWithPath(path string) (certificate *x509.Certificate, err error)

通过证书的文件路径加载证书

func LoadPrivateKey

func LoadPrivateKey(privateKeyStr string) (privateKey *rsa.PrivateKey, err error)

通过私钥的文本内容加载私钥

func LoadPrivateKeyWithPath

func LoadPrivateKeyWithPath(path string) (privateKey *rsa.PrivateKey, err error)

通过私钥的文件路径内容加载私钥

func LoadPublicKey

func LoadPublicKey(publicKeyStr string) (publicKey *rsa.PublicKey, err error)

LoadPublicKey 通过公钥的文本内容加载公钥

func LoadPublicKeyWithPath

func LoadPublicKeyWithPath(path string) (publicKey *rsa.PublicKey, err error)

通过公钥的文件路径加载公钥

func ResponseValidate

func ResponseValidate(sign_param *WxSignParam, certificate *x509.Certificate) error

对微信支付应答报文进行验证 resp_ent:微信支付应答报文数据 certificate:微信支付平台证书中,使用微信支付平台证书中的公钥验签

func SignSHA256WithRSA

func SignSHA256WithRSA(privateKey *rsa.PrivateKey, source string) (signature string, err error)

使用商户私钥对待签名串进行SHA256 with RSA签名,并对签名结果进行Base64编码

func WxPayGetV3

func WxPayGetV3(ctx *MchParam, url string) (string, error)

通过http GET方法调用支付接口 ctx:商户上下文对象 url:接口的调用地址

func WxPayPostV3

func WxPayPostV3(ctx *MchParam, url string, data []byte) (string, error)

通过http POST方法调用支付接口 ctx:商户上下文对象 url:接口的调用地址 data:报文主体的JSON数据

Types

type CloseOrderReq

type CloseOrderReq struct {
	//子商户的商户号(服务商)
	Sub_mchid string `json:"sub_mchid,omitempty"`
	//商户系统内部订单号
	Out_trade_no string `json:"out_trade_no"`
}

关闭支付订单参数

type JsApiOrderCreateReq

type JsApiOrderCreateReq struct {
	//应用ID(普通商户)
	Appid string `json:"appid,omitempty"`
	//直连商户号(普通商户)
	Mchid string `json:"mchid,omitempty"`
	//服务商用ID(服务商)
	Sp_appid string `json:"sp_appid,omitempty"`
	//服务商户号(服务商)
	Sp_mchid string `json:"sp_mchid,omitempty"`
	//订单数据
	JsApiOrderData
}

统一下单请求参数

type JsApiOrderCreateRet

type JsApiOrderCreateRet struct {
	//详细错误码
	Return_code string `json:"code"`
	//错误描述
	Return_msg string `json:"message"`
	//预支付交易会话标识。用于后续接口调用中使用,该值有效期为2小时
	Prepay_id string `json:"prepay_id"`
}

统一下单返回参数

type JsApiOrderData

type JsApiOrderData struct {
	//子商户用ID(服务商)
	Sub_appid string `json:"sub_appid,omitempty"`
	//子商户的商户号(服务商)
	Sub_mchid string `json:"sub_mchid,omitempty"`
	//商品描述
	Description string `json:"description"`
	//商户系统内部订单号
	Out_trade_no string `json:"out_trade_no"`
	//交易结束时间
	Time_expire string `json:"time_expire,omitempty"`
	//附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用
	Attach string `json:"attach,omitempty"`
	//通知URL必须为直接可访问的URL,不允许携带查询串
	Notify_url string `json:"notify_url"`
	//订单优惠标记
	Goods_tag string `json:"goods_tag,omitempty"`
	//订单金额信息
	Amount OrderCreateAmount `json:"amount"`
	//支付者信息
	Payer OrderPayer `json:"payer"`
	//统一下单结算信息
	Settle_info OrderCreateSettle `json:"settle_info"`
}

统一下单请求参数

type MchH5Pay

type MchH5Pay MchParam

创建并初始化商户对象

func InitEndMch4H5

func InitEndMch4H5(mchid string, appid string, mch_api_key string, pem_cert *x509.Certificate, pem_key *rsa.PrivateKey) *MchH5Pay

创建并初始化直连商户对象

func InitMidMch4H5

func InitMidMch4H5(mchid string, appid string, mch_api_key string, pem_cert *x509.Certificate, pem_key *rsa.PrivateKey) *MchH5Pay

创建并初始化服务商商户对象

func (*MchH5Pay) CloseOrder

func (ent *MchH5Pay) CloseOrder(out_trade_no string, mchid string) error

关闭支付订单 out_trade_no:业务订单号 mchid:商户号,若是服务商,mchid对应子商户号

func (*MchH5Pay) CreateOrder

func (ent *MchH5Pay) CreateOrder(data WxH5OrderData) (string, error)

支付统一下单

func (*MchH5Pay) ParsePayCallBack

func (ent *MchH5Pay) ParsePayCallBack(r *http.Request) (WxPayInfo, error)

支付回调请求处理,返回订单信息

func (*MchH5Pay) ParseRefundCallBack

func (ent *MchH5Pay) ParseRefundCallBack(r *http.Request) (RefundOrderInfoCB, error)

退款回调请求处理,返回退款信息

func (*MchH5Pay) QueryByOutTradeNo

func (ent *MchH5Pay) QueryByOutTradeNo(out_trade_no string, mchid string) (WxPayInfo, error)

支付订单查询 out_trade_no:业务订单号 mchid:商户号,若是服务商,mchid对应子商户号

func (*MchH5Pay) QueryByTransactionId

func (ent *MchH5Pay) QueryByTransactionId(transaction_id string, mchid string) (WxPayInfo, error)

支付订单查询 transaction_id:微信支付订单号 mchid:商户号,若是服务商,mchid对应子商户号

func (*MchH5Pay) QueryRefundOrder

func (ent *MchH5Pay) QueryRefundOrder(out_refund_no string, mchid string) (RefundOrderInfo, error)

查询单笔退款 out_refund_no:商户系统内部的退款单号 mchid:商户号,若是服务商,mchid对应子商户号

func (*MchH5Pay) RefundOrder

func (ent *MchH5Pay) RefundOrder(data RefundCreateReq) (RefundOrderInfo, error)

提交退款申请

type MchJsApi

type MchJsApi MchParam

创建并初始化商户对象

func InitEndMch4JsApi

func InitEndMch4JsApi(mchid string, appid string, mch_api_key string, pem_cert *x509.Certificate, pem_key *rsa.PrivateKey) *MchJsApi

创建并初始化直连商户对象

func InitMidMch4JsApi

func InitMidMch4JsApi(mchid string, appid string, mch_api_key string, pem_cert *x509.Certificate, pem_key *rsa.PrivateKey) *MchJsApi

创建并初始化服务商商户对象

func (*MchJsApi) CloseOrder

func (ent *MchJsApi) CloseOrder(out_trade_no string, mchid string) error

关闭支付订单 out_trade_no:业务订单号 mchid:商户号,若是服务商,mchid对应子商户号

func (*MchJsApi) CreateOrder

func (ent *MchJsApi) CreateOrder(data JsApiOrderData) (WxAppPayParam, error)

支付统一下单

func (*MchJsApi) ParsePayCallBack

func (ent *MchJsApi) ParsePayCallBack(r *http.Request) (WxPayInfo, error)

支付回调请求处理,返回订单信息

func (*MchJsApi) ParseRefundCallBack

func (ent *MchJsApi) ParseRefundCallBack(r *http.Request) (RefundOrderInfoCB, error)

退款回调请求处理,返回退款信息

func (*MchJsApi) QueryByOutTradeNo

func (ent *MchJsApi) QueryByOutTradeNo(out_trade_no string, mchid string) (WxPayInfo, error)

支付订单查询 out_trade_no:业务订单号 mchid:商户号,若是服务商,mchid对应子商户号

func (*MchJsApi) QueryByTransactionId

func (ent *MchJsApi) QueryByTransactionId(transaction_id string, mchid string) (WxPayInfo, error)

transaction_id:微信支付订单号 mchid:商户号,若是服务商,mchid对应子商户号

func (*MchJsApi) QueryRefundOrder

func (ent *MchJsApi) QueryRefundOrder(out_refund_no string, mchid string) (RefundOrderInfo, error)

查询单笔退款 out_refund_no:商户系统内部的退款单号 mchid:商户号,若是服务商,mchid对应子商户号

func (*MchJsApi) RefundOrder

func (ent *MchJsApi) RefundOrder(data RefundCreateReq) (RefundOrderInfo, error)

提交退款申请

type MchNative

type MchNative MchParam

创建并初始化商户对象

func InitEndMch4Native

func InitEndMch4Native(mchid string, appid string, mch_api_key string, pem_cert *x509.Certificate, pem_key *rsa.PrivateKey) *MchNative

创建并初始化直连商户对象

func InitMidMch4Native

func InitMidMch4Native(mchid string, appid string, mch_api_key string, pem_cert *x509.Certificate, pem_key *rsa.PrivateKey) *MchNative

创建并初始化服务商商户对象

func (*MchNative) CloseOrder

func (ent *MchNative) CloseOrder(out_trade_no string, mchid string) error

关闭支付订单 out_trade_no:业务订单号 mchid:商户号,若是服务商,mchid对应子商户号

func (*MchNative) CreateOrder

func (ent *MchNative) CreateOrder(data NativeOrderData) (string, error)

支付统一下单

func (*MchNative) ParsePayCallBack

func (ent *MchNative) ParsePayCallBack(r *http.Request) (WxPayInfo, error)

支付回调请求处理,返回订单信息

func (*MchNative) ParseRefundCallBack

func (ent *MchNative) ParseRefundCallBack(r *http.Request) (RefundOrderInfoCB, error)

退款回调请求处理,返回退款信息

func (*MchNative) QueryByOutTradeNo

func (ent *MchNative) QueryByOutTradeNo(out_trade_no string, mchid string) (WxPayInfo, error)

支付订单查询 out_trade_no:业务订单号 mchid:商户号,若是服务商,mchid对应子商户号

func (*MchNative) QueryByTransactionId

func (ent *MchNative) QueryByTransactionId(transaction_id string, mchid string) (WxPayInfo, error)

transaction_id:微信支付订单号 mchid:商户号,若是服务商,mchid对应子商户号

func (*MchNative) QueryRefundOrder

func (ent *MchNative) QueryRefundOrder(out_refund_no string, mchid string) (RefundOrderInfo, error)

查询单笔退款 out_refund_no:商户系统内部的退款单号 mchid:商户号,若是服务商,mchid对应子商户号

func (*MchNative) RefundOrder

func (ent *MchNative) RefundOrder(data RefundCreateReq) (RefundOrderInfo, error)

提交退款申请

type MchOsapp

type MchOsapp MchParam

创建并初始化商户对象

func InitEndMch4Osapp

func InitEndMch4Osapp(mchid string, appid string, mch_api_key string, pem_cert *x509.Certificate, pem_key *rsa.PrivateKey) *MchOsapp

创建并初始化直连商户对象

func InitMidMch4Osapp

func InitMidMch4Osapp(mchid string, appid string, mch_api_key string, pem_cert *x509.Certificate, pem_key *rsa.PrivateKey) *MchOsapp

创建并初始化服务商商户对象

func (*MchOsapp) CloseOrder

func (ent *MchOsapp) CloseOrder(out_trade_no string, mchid string) error

关闭支付订单 out_trade_no:业务订单号 mchid:商户号,若是服务商,mchid对应子商户号

func (*MchOsapp) CreateOrder

func (ent *MchOsapp) CreateOrder(data OsAppOrderData) (OsAppPayParam, error)

支付统一下单

func (*MchOsapp) ParsePayCallBack

func (ent *MchOsapp) ParsePayCallBack(r *http.Request) (WxPayInfo, error)

支付回调请求处理,返回订单信息

func (*MchOsapp) ParseRefundCallBack

func (ent *MchOsapp) ParseRefundCallBack(r *http.Request) (RefundOrderInfoCB, error)

退款回调请求处理,返回退款信息

func (*MchOsapp) QueryByOutTradeNo

func (ent *MchOsapp) QueryByOutTradeNo(out_trade_no string, mchid string) (WxPayInfo, error)

支付订单查询 out_trade_no:业务订单号 mchid:商户号,若是服务商,mchid对应子商户号

func (*MchOsapp) QueryByTransactionId

func (ent *MchOsapp) QueryByTransactionId(transaction_id string, mchid string) (WxPayInfo, error)

transaction_id:微信支付订单号 mchid:商户号,若是服务商,mchid对应子商户号

func (*MchOsapp) QueryRefundOrder

func (ent *MchOsapp) QueryRefundOrder(out_refund_no string, mchid string) (RefundOrderInfo, error)

查询单笔退款 out_refund_no:商户系统内部的退款单号 mchid:商户号,若是服务商,mchid对应子商户号

func (*MchOsapp) RefundOrder

func (ent *MchOsapp) RefundOrder(data RefundCreateReq) (RefundOrderInfo, error)

提交退款申请

type MchParam

type MchParam struct {
	//商户类型 0直连商户 1服务商商户
	MchType int
	//商户对应的appid
	Appid string
	//商户号
	Mchid string
	//商户的API v3密钥
	MchAPIKey string
	//商户API私钥
	MchPrivateKey *rsa.PrivateKey
	//商户 API 证书
	MchCertificate *x509.Certificate
}

type MchWxapp

type MchWxapp MchParam

创建并初始化商户对象

func InitEndMch4Wxapp

func InitEndMch4Wxapp(mchid string, appid string, mch_api_key string, pem_cert *x509.Certificate, pem_key *rsa.PrivateKey) *MchWxapp

创建并初始化直连商户对象

func InitMidMch4Wxapp

func InitMidMch4Wxapp(mchid string, appid string, mch_api_key string, pem_cert *x509.Certificate, pem_key *rsa.PrivateKey) *MchWxapp

创建并初始化服务商商户对象

func (*MchWxapp) CloseOrder

func (ent *MchWxapp) CloseOrder(out_trade_no string, mchid string) error

关闭支付订单 out_trade_no:业务订单号 mchid:商户号,若是服务商,mchid对应子商户号

func (*MchWxapp) CreateOrder

func (ent *MchWxapp) CreateOrder(data WxAppOrderData) (WxAppPayParam, error)

支付统一下单

func (*MchWxapp) ParsePayCallBack

func (ent *MchWxapp) ParsePayCallBack(r *http.Request) (WxPayInfo, error)

支付回调请求处理,返回订单信息

func (*MchWxapp) ParseRefundCallBack

func (ent *MchWxapp) ParseRefundCallBack(r *http.Request) (RefundOrderInfoCB, error)

退款回调请求处理,返回退款信息

func (*MchWxapp) QueryByOutTradeNo

func (ent *MchWxapp) QueryByOutTradeNo(out_trade_no string, mchid string) (WxPayInfo, error)

支付订单查询 out_trade_no:业务订单号 mchid:商户号,若是服务商,mchid对应子商户号

func (*MchWxapp) QueryByTransactionId

func (ent *MchWxapp) QueryByTransactionId(transaction_id string, mchid string) (WxPayInfo, error)

transaction_id:微信支付订单号 mchid:商户号,若是服务商,mchid对应子商户号

func (*MchWxapp) QueryRefundOrder

func (ent *MchWxapp) QueryRefundOrder(out_refund_no string, mchid string) (RefundOrderInfo, error)

查询单笔退款 out_refund_no:商户系统内部的退款单号 mchid:商户号,若是服务商,mchid对应子商户号

func (*MchWxapp) RefundOrder

func (ent *MchWxapp) RefundOrder(data RefundCreateReq) (RefundOrderInfo, error)

提交退款申请

type NativeOrderCreateReq

type NativeOrderCreateReq struct {
	//应用ID(普通商户)
	Appid string `json:"appid,omitempty"`
	//直连商户号(普通商户)
	Mchid string `json:"mchid,omitempty"`
	//服务商用ID(服务商)
	Sp_appid string `json:"sp_appid,omitempty"`
	//服务商户号(服务商)
	Sp_mchid string `json:"sp_mchid,omitempty"`
	//订单数据
	NativeOrderData
}

统一下单请求参数

type NativeOrderCreateRet

type NativeOrderCreateRet struct {
	//详细错误码
	Return_code string `json:"code"`
	//错误描述
	Return_msg string `json:"message"`
	//二维码链接,此URL用于生成支付二维码,然后提供给用户扫码支付。
	Code_url string `json:"code_url"`
}

统一下单返回参数

type NativeOrderData

type NativeOrderData struct {
	//子商户用ID(服务商)
	Sub_appid string `json:"sub_appid,omitempty"`
	//子商户的商户号(服务商)
	Sub_mchid string `json:"sub_mchid,omitempty"`
	//商品描述
	Description string `json:"description"`
	//商户系统内部订单号
	Out_trade_no string `json:"out_trade_no"`
	//交易结束时间
	Time_expire string `json:"time_expire,omitempty"`
	//附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用
	Attach string `json:"attach,omitempty"`
	//通知URL必须为直接可访问的URL,不允许携带查询串
	Notify_url string `json:"notify_url"`
	//订单优惠标记
	Goods_tag string `json:"goods_tag,omitempty"`
	//订单金额信息
	Amount OrderCreateAmount `json:"amount"`
	//统一下单结算信息
	Settle_info OrderCreateSettle `json:"settle_info"`
}

统一下单请求参数

type NoticeResource

type NoticeResource struct {
	//对开启结果数据进行加密的加密算法,目前只支持AEAD_AES_256_GCM
	Algorithm string `json:"algorithm"`
	//数据密文
	Ciphertext string `json:"ciphertext"`
	//附加数据
	AssociatedData string `json:"associated_data"`

	//加密使用的随机串
	Nonce string `json:"nonce"`
	// contains filtered or unexported fields
}

type OrderAmount

type OrderAmount struct {
	//订单总金额,单位为分
	Total int `json:"total"`
	//用户支付金额,单位为分
	Payer_total int `json:"payer_total"`
	//货币类型:CNY(人民币),境内商户号仅支持人民币。
	Currency string `json:"currency"`
	//用户支付币种
	Payer_currency string `json:"payer_currency"`
}

订单金额信息

type OrderCreateAmount

type OrderCreateAmount struct {
	//订单总金额,单位为分。
	Total int `json:"total"`
	//货币类型:CNY(人民币),境内商户号仅支持人民币。
	Currency string `json:"currency,omitempty"`
}

统一下单订单金额信息

type OrderCreateSettle

type OrderCreateSettle struct {
	//是否指定分账,枚举值:true(是), false(否)
	Profit_sharing bool `json:"profit_sharing,omitempty"`
}

统一下单结算信息

type OrderPayer

type OrderPayer struct {
	//用用户在直连商户appid下的唯一标识
	Openid string `json:"openid,omitempty"`
	//用户在服务商appid下的唯一标识
	Sp_openid string `json:"sp_openid,omitempty"`
	//用户在子商户appid下的唯一标识。若传sub_openid,那sub_appid必填
	Sub_openid string `json:"sub_openid,omitempty"`
}

支付者信息

type OsAppOrderCreateReq

type OsAppOrderCreateReq struct {
	//应用ID(普通商户)
	Appid string `json:"appid,omitempty"`
	//直连商户号(普通商户)
	Mchid string `json:"mchid,omitempty"`
	//服务商用ID(服务商)
	Sp_appid string `json:"sp_appid,omitempty"`
	//服务商户号(服务商)
	Sp_mchid string `json:"sp_mchid,omitempty"`
	//订单数据
	OsAppOrderData
}

统一下单请求参数

type OsAppOrderCreateRet

type OsAppOrderCreateRet struct {
	//详细错误码
	Return_code string `json:"code"`
	//错误描述
	Return_msg string `json:"message"`
	//预支付交易会话标识。用于后续接口调用中使用,该值有效期为2小时
	Prepay_id string `json:"prepay_id"`
}

统一下单返回参数

type OsAppOrderData

type OsAppOrderData struct {
	//子商户用ID(服务商)
	Sub_appid string `json:"sub_appid,omitempty"`
	//子商户的商户号(服务商)
	Sub_mchid string `json:"sub_mchid,omitempty"`
	//商品描述
	Description string `json:"description"`
	//商户系统内部订单号
	Out_trade_no string `json:"out_trade_no"`
	//交易结束时间
	Time_expire string `json:"time_expire,omitempty"`
	//附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用
	Attach string `json:"attach,omitempty"`
	//通知URL必须为直接可访问的URL,不允许携带查询串
	Notify_url string `json:"notify_url"`
	//订单优惠标记
	Goods_tag string `json:"goods_tag,omitempty"`
	//订单金额信息
	Amount OrderCreateAmount `json:"amount"`
	//统一下单结算信息
	Settle_info OrderCreateSettle `json:"settle_info"`
}

统一下单请求参数

type OsAppPayParam

type OsAppPayParam struct {
	Appid     string
	PartnerId string
	Prepay_id string
	Package   string
	NonceStr  string
	TimeStamp string
	PaySign   string
}

返回给小程序的微信支付数据

func (*OsAppPayParam) GenPaySignV3

func (ent *OsAppPayParam) GenPaySignV3(mch_pem_key *rsa.PrivateKey) (string, error)

使用商户私钥对签名串进行SHA256 with RSA签名,并对签名结果进行Base64编码得到签名值

type QueryByOutTradeNoReq

type QueryByOutTradeNoReq struct {
	//子商户的商户号(服务商)
	Sub_mchid string `json:"sub_mchid,omitempty"`
	//商户系统内部订单号
	Out_trade_no string `json:"out_trade_no"`
}

支付订单查询参数

type QueryByTransactionIdReq

type QueryByTransactionIdReq struct {
	//子商户的商户号(服务商)
	Sub_mchid string `json:"sub_mchid,omitempty"`
	//微信支付订单号
	Transaction_id string `json:"transaction_id"`
}

支付订单查询参数

type RefundCreateAmount

type RefundCreateAmount struct {
	//退款金额,单位为分
	Refund int `json:"refund"`
	//原订单金额,单位为分
	Total int `json:"total"`
	//退款币种:CNY(人民币),境内商户号仅支持人民币。
	Currency string `json:"currency"`
}

退款金额信息

type RefundCreateReq

type RefundCreateReq struct {
	//子商户的商户号(服务商)
	Sub_mchid string `json:"sub_mchid,omitempty"`
	//商户系统内部订单号
	Out_trade_no string `json:"out_trade_no,omitempty"`
	//微信支付订单号
	Transaction_id string `json:"transaction_id,omitempty"`
	//商户系统内部的退款单号
	Out_refund_no string `json:"out_refund_no"`
	//退款原因
	Reason string `json:"reason,omitempty"`
	//退款结果回调的URL,不允许携带查询串
	Notify_url string `json:"notify_url,omitempty"`
	//退款金额信息
	Amount RefundCreateAmount `json:"amount"`
}

微信支付退款申请请求参数

type RefundOrderAmount

type RefundOrderAmount struct {
	//原订单金额,单位为分
	Total int `json:"total"`
	//退款金额,单位为分
	Refund int `json:"refund"`
	//用户支付金额,单位为分
	Payer_total int `json:"payer_total,omitempty"`
	//退款给用户的金额,不包含所有优惠券金额
	Payer_refund int `json:"payer_refund,omitempty"`
	//应结退款金额
	Settlement_refund int `json:"settlement_refund"`
	//应结订单金额
	Settlement_total int `json:"settlement_total"`
	//优惠退款金额
	Discount_refund int `json:"discount_refund"`
	//退款币种:CNY(人民币),境内商户号仅支持人民币。
	Currency string `json:"currency"`
}

退款金额信息

type RefundOrderAmountCB

type RefundOrderAmountCB struct {
	//退款金额,单位为分
	Refund int `json:"refund"`
	//原订单金额,单位为分
	Total int `json:"total"`
	//退款币种:CNY(人民币),境内商户号仅支持人民币。
	Currency string `json:"currency"`
	//用户支付金额,单位为分
	Payer_total int `json:"payer_total,omitempty"`
	//退款给用户的金额,不包含所有优惠券金额
	Payer_refund int `json:"payer_refund,omitempty"`
}

退款金额信息

type RefundOrderInfo

type RefundOrderInfo struct {
	//服务商户号(普通商户)
	Mchid string `json:"mchid"`
	//服务商户号(服务商)
	Sp_mchid string `json:"sp_mchid"`
	//子商户的商户号(服务商)
	Sub_mchid string `json:"sub_mchid"`
	//微信支付退款单号
	Refund_id string `json:"refund_id"`
	//商户系统内部的退款单号
	Out_refund_no string `json:"out_refund_no"`
	//微信支付订单号
	Transaction_id string `json:"transaction_id"`
	//商户系统内部订单号
	Out_trade_no string `json:"out_trade_no"`
	//退款渠道 枚举值: - ORIGINAL—原路退款 - BALANCE—退回到余额 - OTHER_BALANCE—原账户异常退到其他余额账户 - OTHER_BANKCARD—原银行卡异常退到其他银行卡 * `ORIGINAL` - 原路退款 * `BALANCE` - 退回到余额 * `OTHER_BALANCE` - 原账户异常退到其他余额账户 * `OTHER_BANKCARD` - 原银行卡异常退到其他银行卡
	Channel string `json:"channel"`
	//退款入账账户
	User_received_account string `json:"user_received_account"`
	//退款成功时间
	Success_time string `json:"success_time"`
	//退款创建时间
	Create_time string `json:"create_time"`
	//退款状态,UCCESS:退款成功	CLOSED:退款关闭/PROCESSING:退款处理中	ABNORMAL:退款异常
	Status string `json:"status"`
	//退款所使用资金对应的资金账户类型 枚举值:UNSETTLED : 未结算资金AVAILABLE : 可用余额UNAVAILABLE : 不可用余额OPERATION : 运营户BASIC : 基本账户
	Funds_account string `json:"funds_account"`
	//订单金额信息
	Amount RefundOrderAmount `json:"amount"`
}

微信退款订单信息

type RefundOrderInfoCB

type RefundOrderInfoCB struct {
	//服务商户号(普通商户)
	Mchid string `json:"mchid"`
	//服务商户号(服务商)
	Sp_mchid string `json:"sp_mchid"`
	//子商户的商户号(服务商)
	Sub_mchid string `json:"sub_mchid"`
	//微信支付订单号
	Transaction_id string `json:"transaction_id"`
	//商户系统内部订单号
	Out_trade_no string `json:"out_trade_no"`
	//微信支付退款单号
	Refund_id string `json:"refund_id"`
	//商户系统内部的退款单号
	Out_refund_no string `json:"out_refund_no"`
	//退款状态,SUCCESS:退款成功 CLOSE:退款关闭 ABNORMAL:退款异常
	Refund_status string `json:"refund_status"`
	//退款成功时间
	Success_time string `json:"success_time"`
	//退款入账账户
	User_received_account string `json:"user_received_account"`
	//订单金额信息
	Amount RefundOrderAmountCB `json:"amount"`
}

微信退款订单信息

type RefundQueryReq

type RefundQueryReq struct {
	//子商户的商户号(服务商)
	Sub_mchid string `json:"sub_mchid,omitempty"`
	//商户系统内部的退款单号
	Out_refund_no string `json:"out_refund_no"`
}

查询单笔退款参数

type WeixinPayNotice

type WeixinPayNotice struct {
	//通知的唯一ID
	ReqId string `json:"id"`
	//通知创建的时间
	CreateTime string `json:"create_time"`
	//通知的类型,支付成功通知的类型为TRANSACTION.SUCCESS
	Event_type string `json:"event_type"`
	//通知的资源数据类型,支付成功通知为encrypt-resource
	ResourceType string `json:"resource_type"`
	//回调摘要
	Summary string `json:"summary"`
	//通知资源数据
	Resource NoticeResource `json:"resource"`
}

支付回调数据定义

type WxAppOrderCreateReq

type WxAppOrderCreateReq struct {
	//应用ID(普通商户)
	Appid string `json:"appid,omitempty"`
	//直连商户号(普通商户)
	Mchid string `json:"mchid,omitempty"`
	//服务商用ID(服务商)
	Sp_appid string `json:"sp_appid,omitempty"`
	//服务商户号(服务商)
	Sp_mchid string `json:"sp_mchid,omitempty"`
	//订单数据
	WxAppOrderData
}

统一下单请求参数

type WxAppOrderCreateRet

type WxAppOrderCreateRet struct {
	//详细错误码
	Return_code string `json:"code"`
	//错误描述
	Return_msg string `json:"message"`
	//预支付交易会话标识。用于后续接口调用中使用,该值有效期为2小时
	Prepay_id string `json:"prepay_id"`
}

统一下单返回参数

type WxAppOrderData

type WxAppOrderData struct {
	//子商户用ID(服务商)
	Sub_appid string `json:"sub_appid,omitempty"`
	//子商户的商户号(服务商)
	Sub_mchid string `json:"sub_mchid,omitempty"`
	//商品描述
	Description string `json:"description"`
	//商户系统内部订单号
	Out_trade_no string `json:"out_trade_no"`
	//交易结束时间
	Time_expire string `json:"time_expire,omitempty"`
	//附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用
	Attach string `json:"attach,omitempty"`
	//通知URL必须为直接可访问的URL,不允许携带查询串
	Notify_url string `json:"notify_url"`
	//订单优惠标记
	Goods_tag string `json:"goods_tag,omitempty"`
	//订单金额信息
	Amount OrderCreateAmount `json:"amount"`
	//支付者信息
	Payer OrderPayer `json:"payer"`
	//统一下单结算信息
	Settle_info OrderCreateSettle `json:"settle_info"`
}

统一下单请求参数

type WxAppPayParam

type WxAppPayParam struct {
	Appid     string
	TimeStamp string
	NonceStr  string
	Prepay_id string
	Package   string
	SignType  string
	PaySign   string
}

返回给小程序的微信支付数据

func (*WxAppPayParam) GenPaySignV3

func (ent *WxAppPayParam) GenPaySignV3(mch_pem_key *rsa.PrivateKey) (string, error)

使用商户私钥对签名串进行SHA256 with RSA签名,并对签名结果进行Base64编码得到签名值

type WxCertRet

type WxCertRet struct {
	Data []WxCertRetItem `json:"data"`
}

微信支付平台证书接口返回结果定义

type WxCertRetItem

type WxCertRetItem struct {
	EffectiveTime string        `json:"effective_time"`
	Certificate   WxCertificate `json:"encrypt_certificate"`
	ExpireTime    string        `json:"expire_time"`
	SerialNo      string        `json:"serial_no"`
}

type WxCertificate

type WxCertificate struct {
	Algorithm      string `json:"algorithm"`
	AssociatedData string `json:"associated_data"`
	Ciphertext     string `json:"ciphertext"`
	Nonce          string `json:"nonce"`
}

type WxH5Info

type WxH5Info struct {
	//场景类型:示例值:iOS, Android, Wap
	SceneType string `json:"type"`
	//应用名称
	App_name string `json:"app_name,omitempty"`
	//网站URL
	App_url string `json:"app_url,omitempty"`
	//iOS平台BundleID
	Bundle_id string `json:"bundle_id,omitempty"`
	//Android平台PackageName
	Package_name string `json:"package_name,omitempty"`
}

支付场景描述

type WxH5OrderCreateReq

type WxH5OrderCreateReq struct {
	//应用ID(普通商户)
	Appid string `json:"appid,omitempty"`
	//直连商户号(普通商户)
	Mchid string `json:"mchid,omitempty"`
	//服务商用ID(服务商)
	Sp_appid string `json:"sp_appid,omitempty"`
	//服务商户号(服务商)
	Sp_mchid string `json:"sp_mchid,omitempty"`
	//订单数据
	WxH5OrderData
}

统一下单请求参数

type WxH5OrderCreateRet

type WxH5OrderCreateRet struct {
	//详细错误码
	Return_code string `xml:"code"`
	//错误描述
	Return_msg string `xml:"message"`
	//h5_url为拉起微信支付收银台的中间页面,可通过访问该url来拉起微信客户端,完成支付,h5_url的有效期为5分钟。
	H5_url string `xml:"h5_url"`
}

统一下单返回参数

type WxH5OrderData

type WxH5OrderData struct {
	//子商户用ID(服务商)
	Sub_appid string `json:"sub_appid,omitempty"`
	//子商户的商户号(服务商)
	Sub_mchid string `json:"sub_mchid,omitempty"`
	//商品描述
	Description string `json:"description"`
	//商户系统内部订单号
	Out_trade_no string `json:"out_trade_no"`
	//交易结束时间
	Time_expire string `json:"time_expire,omitempty"`
	//附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用
	Attach string `json:"attach,omitempty"`
	//通知URL必须为直接可访问的URL,不允许携带查询串
	Notify_url string `json:"notify_url"`
	//订单优惠标记
	Goods_tag string `json:"goods_tag,omitempty"`
	//订单金额信息
	Amount OrderCreateAmount `json:"amount"`
	//统一下单结算信息
	Settle_info OrderCreateSettle `json:"settle_info"`
	//支付场景描述
	Scene_info WxH5SceneInfo `json:"scene_info"`
}

统一下单请求参数

type WxH5SceneInfo

type WxH5SceneInfo struct {
	//用户终端IP
	Payer_client_ip string `json:"payer_client_ip"`
	//商户端设备号
	Device_id string `json:"device_id,omitempty"`
	//H5场景信息
	H5_info WxH5Info `json:"h5_info,omitempty"`
}

type WxPayInfo

type WxPayInfo struct {
	//应用ID(普通商户)
	Appid string `json:"appid"`
	//服务商户号(普通商户)
	Mchid string `json:"mchid"`
	//服务商用ID(服务商)
	Sp_appid string `json:"sp_appid"`
	//服务商户号(服务商)
	Sp_mchid string `json:"sp_mchid"`
	//子商户用ID(服务商)
	Sub_appid string `json:"sub_appid"`
	//子商户的商户号(服务商)
	Sub_mchid string `json:"sub_mchid"`
	//商户系统内部订单号
	Out_trade_no string `json:"out_trade_no"`
	//微信支付订单号
	Transaction_id string `json:"transaction_id"`
	//交易类型,枚举值:JSAPI
	Trade_type string `json:"trade_type"`
	//交易状态,SUCCESS:支付成功 REFUND:转入退款 NOTPAY:未支付 CLOSED:已关闭 PAYERROR:支付失败
	Trade_state string `json:"trade_state"`
	//交易状态描述
	Trade_state_desc string `json:"trade_state_desc"`
	//付款银行
	Bank_type string `json:"bank_type"`
	//附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用
	Attach string `json:"attach"`
	//支付完成时间
	Success_time string `json:"success_time"`
	//订单金额信息
	Amount OrderAmount `json:"amount"`
	//支付者信息
	Payer OrderPayer `json:"payer"`
}

微信支付订单在信息

type WxPayNotifyRet

type WxPayNotifyRet struct {
	Return_code string `json:"code"`
	Return_msg  string `json:"message"`
}

支付通知返回数据结构

type WxSignParam

type WxSignParam struct {
	Timestamp  string //微信支付回包时间戳
	Nonce      string //微信支付回包随机字符串
	Signature  string //微信支付回包签名信息
	CertSerial string //微信支付回包平台序列号
	RequestId  string //微信支付回包请求ID
	Body       string
}

func (*WxSignParam) BuildResponseMessage

func (ent *WxSignParam) BuildResponseMessage() string

构造验签名串

func (*WxSignParam) InitFromRequest

func (ent *WxSignParam) InitFromRequest(r *http.Request, body string) error

func (*WxSignParam) InitFromResponse

func (ent *WxSignParam) InitFromResponse(response *http.Response, body string) error

Jump to

Keyboard shortcuts

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