unionpay

package
v0.0.0-...-a5168ab Latest Latest
Warning

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

Go to latest
Published: Nov 3, 2019 License: MIT Imports: 23 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// BaseHost 主机地址
	BaseHost = `https://gateway.95516.com`

	// V3BaseHost 主机地址(Version 3.0)
	V3BaseHost = `https://unionpaysecure.com`

	// ReqBackTrans 建立委托:后台交易,只有同步应答
	ReqBackTrans = `/gateway/api/backTransReq.do`

	// V3ReqBackTrans 建立委托:后台交易,只有同步应答(Version 3.0)
	V3ReqBackTrans = `/gateway/api/backTransRequest.do`
)
View Source
const (
	// CurrencyCodeCNY 人民币代码
	CurrencyCodeCNY = 156
)
View Source
const (
	// TimeFmtNumeric format of time to numeric
	TimeFmtNumeric = `20060102150405`
)

Variables

This section is empty.

Functions

func TimeToNumericStr

func TimeToNumericStr(t time.Time) string

TimeToNumericStr 时间转换为数字格式字符串

Types

type CustomerInfo

type CustomerInfo struct {
	CardNo       string `form:"cardNo" json:"cardNo" xml:"cardNo"`             // 卡号
	Phone        string `form:"phone" json:"phone" xml:"phone"`                // 手机号
	CertifTp     string `form:"certifTp" json:"certifTp" xml:"certifTp"`       // 证件类型, 01 - 身份证
	CertifID     string `form:"certifId" json:"certifId" xml:"certifId"`       // 证件号,15位身份证不校验尾号,18位会校验尾号
	CustomerName string `form:"customerNm" json:"customerNm" xml:"customerNm"` // 姓名
	Cvn2         string `form:"cvn2" json:"cvn2" xml:"cvn2"`                   // 信用卡安全码
	Expired      string `form:"expired" json:"expired" xml:"expired"`          // 有效期,YYMM格式,持卡人卡面印的是MMYY的,请注意代码设置倒一下
}

CustomerInfo 客户信息

func (*CustomerInfo) String

func (ci *CustomerInfo) String(encrypted []byte) string

type MerchantInfo

type MerchantInfo struct {
	MerID string // 商户代码

	Password   string            // 签名证书密码
	Cert       *x509.Certificate // 加密证书
	PublicKey  *rsa.PublicKey    // 加密 Key
	PrivateKey *rsa.PrivateKey   // 签名 Key
}

MerchantInfo 商家信息

func NewMerchantInfo

func NewMerchantInfo(merID, certPath, keyPath, password string) (mi *MerchantInfo, err error)

NewMerchantInfo 初始化商家信息

func (*MerchantInfo) Decrypt

func (mi *MerchantInfo) Decrypt(src []byte) ([]byte, error)

Decrypt 解密

func (*MerchantInfo) Encrypt

func (mi *MerchantInfo) Encrypt(src []byte) ([]byte, error)

Encrypt 加密

func (*MerchantInfo) EncryptCustomerInfo

func (mi *MerchantInfo) EncryptCustomerInfo(ci CustomerInfo) ([]byte, error)

EncryptCustomerInfo 持卡人身份信息,敏感信息加密

func (*MerchantInfo) SerialNumber

func (mi *MerchantInfo) SerialNumber() string

SerialNumber 证书序列号

func (*MerchantInfo) Sign

func (mi *MerchantInfo) Sign(src []byte) ([]byte, error)

Sign 签名

func (*MerchantInfo) Verify

func (mi *MerchantInfo) Verify(src, sig []byte) error

Verify 签名验证

type OrderInfo

type OrderInfo struct {
	TxnType    string // 交易类型
	TxnSubType string // 交易子类
	OrderID    string // 商户订单号,8-32位数字字母,不能含“-”或“_”
	// TxnTime 订单发送时间,格式为YYYYMMDDhhmmss,取北京时间
	TxnTime      string
	TxnAmt       int    // 交易金额, 单位: 分
	CurrencyCode int    // 交易币种
	NotifyURL    string // 回调通知地址
}

OrderInfo 订单信息

type ReqParams

type ReqParams struct {
	Version       string `form:"version" json:"version" xml:"version"`                   // 版本号
	Encoding      string `form:"encoding" json:"encoding" xml:"encoding"`                // 编码方式
	SignMethod    string `form:"signMethod" json:"signMethod" xml:"signMethod"`          // 签名方法
	TxnType       string `form:"txnType" json:"txnType" xml:"txnType"`                   // 交易类型
	TxnSubType    string `form:"txnSubType" json:"txnSubType" xml:"txnSubType"`          // 交易子类
	BizType       string `form:"bizType" json:"bizType" xml:"bizType"`                   // 业务类型
	AccessType    string `form:"accessType" json:"accessType" xml:"accessType"`          // 接入类型
	ChannelType   string `form:"channelType" json:"channelType" xml:"channelType"`       // 渠道类型
	CurrencyCode  int    `form:"currencyCode" json:"currencyCode" xml:"currencyCode"`    // 交易币种
	CertID        string `form:"certId" json:"certId" xml:"certId"`                      // 签名证书序列号
	EncryptCertID string `form:"encryptCertId" json:"encryptCertId" xml:"encryptCertId"` // 验签证书序列号
	MerID         string `form:"merId" json:"merId" xml:"merId"`                         // 商户代码
	OrderID       string `form:"orderId" json:"orderId" xml:"orderId"`                   // 商户订单号
	TxnTime       string `form:"txnTime" json:"txnTime" xml:"txnTime"`                   // 订单发送时间
	TxnAmt        int    `form:"txnAmt" json:"txnAmt" xml:"txnAmt"`                      // 交易金额,单位分
	AccNo         string `form:"accNo" json:"accNo" xml:"accNo"`                         // 卡号,敏感信息加密
	Signature     string `form:"signature" json:"signature" xml:"signature"`             // 签名
	BackURL       string `form:"backUrl" json:"backUrl" xml:"backUrl"`                   // 后台通知地址
	// 请求方保留域,
	// 透传字段,查询、通知、对账文件中均会原样出现,如有需要请启用并修改自己希望透传的数据。
	// 出现部分特殊字符时可能影响解析,请按下面建议的方式填写:
	// 1. 如果能确定内容不会出现&={}[]"'等符号时,可以直接填写数据,建议的方法如下。
	//    'reqReserved' =>'透传信息1|透传信息2|透传信息3',
	// 2. 内容可能出现&={}[]"'符号时:
	// 1) 如果需要对账文件里能显示,可将字符替换成全角&={}【】“‘字符(自己写代码,此处不演示);
	// 2) 如果对账文件没有显示要求,可做一下base64(如下)。
	//    注意控制数据长度,实际传输的数据长度不能超过1024位。
	//    查询、通知等接口解析时使用base64_decode解base64后再对数据做后续解析。
	//    'reqReserved' => base64_encode('任意格式的信息都可以'),
	ReqReserved string `form:"reqReserved" json:"reqReserved" xml:"reqReserved"` // 透传字段
}

ReqParams 请求参数

func (*ReqParams) ToBody

func (p *ReqParams) ToBody(mi *MerchantInfo, ci CustomerInfo) (body string, err error)

ToBody 请求参数转换为 HTTP POST 格式数据

type ReqRespose

type ReqRespose struct {
	Encoding       string `form:"encoding" json:"encoding" xml:"encoding"`
	Version        string `form:"version" json:"version" xml:"version"`
	RespCode       string `form:"respCode" json:"respCode" xml:"respCode"` // 响应代码, 0 成功, > 0 错误
	RespMsg        string `form:"respMsg" json:"respMsg" xml:"respMsg"`
	TxnType        string `form:"txnType" json:"txnType" xml:"txnType"`
	ChannelType    string `form:"channelType" json:"channelType" xml:"channelType"`
	CurrencyCode   string `form:"currencyCode" json:"currencyCode" xml:"currencyCode"`
	TxnSubType     string `form:"txnSubType" json:"txnSubType" xml:"txnSubType"`
	CustomerInfo   string `form:"customerInfo" json:"customerInfo" xml:"customerInfo"`
	TxnAmt         string `form:"txnAmt" json:"txnAmt" xml:"txnAmt"`
	SignPubKeyCert string `form:"signPubKeyCert" json:"signPubKeyCert" xml:"signPubKeyCert"`
	SignMethod     string `form:"signMethod" json:"signMethod" xml:"signMethod"`
	AccNo          string `form:"accNo" json:"accNo" xml:"accNo"`
	BackURL        string `form:"backUrl" json:"backUrl" xml:"backUrl"`
	BizType        string `form:"bizType" json:"bizType" xml:"bizType"`
	Signature      string `form:"signature" json:"signature" xml:"signature"`
	OrderID        string `form:"orderId" json:"orderId" xml:"orderId"`
	TxnTime        string `form:"txnTime" json:"txnTime" xml:"txnTime"`
	AccessType     int    `form:"accessType" json:"accessType" xml:"accessType"`
}

ReqRespose 请求返回数据

func EntrustCharge

func EntrustCharge(mi *MerchantInfo, oi OrderInfo, ci CustomerInfo) (res ReqRespose, err error)

EntrustCharge 代扣费用

func EntrustEstablish

func EntrustEstablish(mi *MerchantInfo, oi OrderInfo, ci CustomerInfo) (res ReqRespose, err error)

EntrustEstablish 建立委托

func V3Bind

func V3Bind(mi *MerchantInfo, ci CustomerInfo, oi OrderInfo) (res ReqRespose, err error)

V3Bind 验证绑定卡片(Version 3.0)

func V3Charging

func V3Charging(mi *MerchantInfo, ci CustomerInfo, oi OrderInfo) (res ReqRespose, err error)

V3Charging 代扣(Version 3.0)

func V3Remove

func V3Remove(mi *MerchantInfo, ci CustomerInfo, oi OrderInfo) (res ReqRespose, err error)

V3Remove 解除绑定卡片(Version 3.0)

func V3SendSms

func V3SendSms(mi *MerchantInfo, ci CustomerInfo, oi OrderInfo) (res ReqRespose, err error)

V3SendSms 发送验证码(Version 3.0)

func (*ReqRespose) Ok

func (res *ReqRespose) Ok() (ok bool, err error)

Ok 请求返回是否成功

func (*ReqRespose) V3Ok

func (res *ReqRespose) V3Ok() (ok bool, err error)

V3Ok 请求返回是否成功(Version 3.0)

Jump to

Keyboard shortcuts

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