123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- // 委托
- package unionpay
- import (
- "encoding/base64"
- )
- // CustomerInfo 客户信息
- type CustomerInfo struct {
- 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的,请注意代码设置倒一下
- }
- func sign() {
- }
- // filename 证书路径
- func s(filename string, cardNo string, customerInfo CustomerInfo) {
- cert, data, e := GetCertificate(filename)
- if e != nil {
- return
- }
- var args = make(map[string]interface{})
- args["version"] = "5.1.0" // 版本号
- args["encoding"] = "utf-8" // 编码方式
- args["signMethod"] = "01" // 签名方法
- args["txnType"] = "72" // 交易类型
- args["txnSubType"] = "11" // 交易子类
- args["bizType"] = "000501" // 业务类型
- args["accessType"] = "0" // 接入类型
- args["channelType"] = "07" // 渠道类型
- args["encryptCertId"] = cert.SerialNumber.String() // 验签证书序列号
- args["merId"] = "" // 商户代码
- args["orderId"] = "" // 商户订单号,8-32位数字字母,不能含“-”或“_”
- args["txnTime"] = "" // 订单发送时间,格式为YYYYMMDDhhmmss,取北京时间
- accNo, err := RSAEncrypt(data, []byte(cardNo))
- if err != nil {
- return
- }
- args["accNo"] = string(accNo) // 卡号,敏感信息加密方式
- kvs := `phone=` + customerInfo.Phone
- kvs += `&certifTp=` + customerInfo.CertifTp
- kvs += `&certifId=` + customerInfo.CertifID
- kvs += `&customerNm=` + customerInfo.CustomerName // `&cvn2=&=expired`
- info := `{` + kvs + `}`
- args["customerInfo"] = base64.StdEncoding.EncodeToString([]byte(info)) // 持卡人身份信息,敏感信息不加密方式
- }
|