|
@@ -24,11 +24,56 @@ func getCustomerV3(ci CustomerInfo) (s string) {
|
|
|
|
|
|
// V3SendSms 发送验证码(Version 3.0)
|
|
|
func V3SendSms(mi *MerchantInfo, ci CustomerInfo, oi OrderInfo) (res ReqRespose, err error) {
|
|
|
+ args := make(map[string]string)
|
|
|
+
|
|
|
+ args["version"] = "3.0.0"
|
|
|
+ args["encoding"] = "utf-8"
|
|
|
+ args["txnType"] = "77"
|
|
|
+ args["txnSubType"] = "00"
|
|
|
+ args["bizType"] = "000000"
|
|
|
+ args["accessType"] = "0"
|
|
|
+ args["merType"] = "0"
|
|
|
+ args["merId"] = mi.MerID
|
|
|
+ args["merName"] = "" // 商户名称
|
|
|
+ args["merAbbr"] = "珠海城建公共资源" // 商户简称
|
|
|
+ args["smsType"] = "" // 短信类型
|
|
|
+ args["subMerId"] = "" // 二级商户代码
|
|
|
+ args["subMerName"] = "" // 二级商户名称
|
|
|
+ args["subMerAbbr"] = "" // 二级商户简称
|
|
|
+ args["accType"] = "01"
|
|
|
+ args["accNo"] = ci.CardNo // 账号, 不加密
|
|
|
+ args["orderId"] = oi.OrderID
|
|
|
+ args["txnTime"] = oi.TxnTime
|
|
|
+ args["txnAmt"] = strconv.Itoa(oi.TxnAmt)
|
|
|
+ args["currencyCode"] = "156"
|
|
|
+ args["customerInfo"] = ci.Phone //base64Encode([]byte(getCustomerV3(ci)))
|
|
|
+ args["bindId"] = ""
|
|
|
+ args["reqReserved"] = ""
|
|
|
+ args["reserved"] = ""
|
|
|
+ //args["encryptCertId"] = mi.SerialNumber()
|
|
|
+ args["certId"] = mi.SerialNumber()
|
|
|
+
|
|
|
+ s := createLinkString(args, true, false)
|
|
|
+ sha1 := util.SHA1(s)
|
|
|
+
|
|
|
+ var data []byte
|
|
|
+ data, err = signsha1(mi.PrivateKey, []byte(sha1))
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ args["signature"] = base64Encode(data)
|
|
|
+ values := url.Values{}
|
|
|
+ for k, v := range args {
|
|
|
+ values.Add(k, v)
|
|
|
+ }
|
|
|
+ res, err = post(V3BaseHost+V3ReqBackTrans, []byte(values.Encode()))
|
|
|
+
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-// V3Verify 验证卡片(Version 3.0)
|
|
|
-func V3Verify(mi *MerchantInfo, ci CustomerInfo, oi OrderInfo) (res ReqRespose, err error) {
|
|
|
+// V3Bind 验证绑定卡片(Version 3.0)
|
|
|
+func V3Bind(mi *MerchantInfo, ci CustomerInfo, oi OrderInfo) (res ReqRespose, err error) {
|
|
|
args := make(map[string]string)
|
|
|
|
|
|
args["version"] = "3.0.0"
|
|
@@ -46,7 +91,7 @@ func V3Verify(mi *MerchantInfo, ci CustomerInfo, oi OrderInfo) (res ReqRespose,
|
|
|
args["accType"] = "01"
|
|
|
args["accNo"] = ci.CardNo // 账号, 不加密
|
|
|
args["customerInfo"] = base64Encode([]byte(getCustomerV3(ci)))
|
|
|
- args["bindId"] = ""
|
|
|
+ args["bindId"] = ci.CardNo
|
|
|
args["riskLevel"] = ""
|
|
|
args["bindInfo"] = ""
|
|
|
args["reqReserved"] = ""
|
|
@@ -74,6 +119,53 @@ func V3Verify(mi *MerchantInfo, ci CustomerInfo, oi OrderInfo) (res ReqRespose,
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+// V3Remove 解除绑定卡片(Version 3.0)
|
|
|
+func V3Remove(mi *MerchantInfo, ci CustomerInfo, oi OrderInfo) (res ReqRespose, err error) {
|
|
|
+ args := make(map[string]string)
|
|
|
+
|
|
|
+ args["version"] = "3.0.0"
|
|
|
+ args["encoding"] = "utf-8"
|
|
|
+ args["txnType"] = "74"
|
|
|
+ args["txnSubType"] = "00"
|
|
|
+ args["bizType"] = "000000"
|
|
|
+ args["accessType"] = "0"
|
|
|
+ args["merType"] = "0"
|
|
|
+ args["merId"] = mi.MerID
|
|
|
+ args["subMerId"] = ""
|
|
|
+ args["subMerName"] = ""
|
|
|
+ args["orderId"] = oi.OrderID
|
|
|
+ args["txnTime"] = oi.TxnTime
|
|
|
+ //args["accType"] = "01"
|
|
|
+ args["accNo"] = ci.CardNo // 账号, 不加密
|
|
|
+ //args["customerInfo"] = base64Encode([]byte(getCustomerV3(ci)))
|
|
|
+ args["bindId"] = ci.CardNo
|
|
|
+ args["riskLevel"] = ""
|
|
|
+ //args["bindInfo"] = ""
|
|
|
+ args["reqReserved"] = ""
|
|
|
+ args["reserved"] = ""
|
|
|
+ //args["encryptCertId"] = mi.SerialNumber()
|
|
|
+ //args["userMac"] = ""
|
|
|
+ args["certId"] = mi.SerialNumber()
|
|
|
+
|
|
|
+ s := createLinkString(args, true, false)
|
|
|
+ sha1 := util.SHA1(s)
|
|
|
+
|
|
|
+ var data []byte
|
|
|
+ data, err = signsha1(mi.PrivateKey, []byte(sha1))
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ args["signature"] = base64Encode(data)
|
|
|
+ values := url.Values{}
|
|
|
+ for k, v := range args {
|
|
|
+ values.Add(k, v)
|
|
|
+ }
|
|
|
+ res, err = post(V3BaseHost+V3ReqBackTrans, []byte(values.Encode()))
|
|
|
+
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
// V3Charging 代扣(Version 3.0)
|
|
|
func V3Charging(mi *MerchantInfo, ci CustomerInfo, oi OrderInfo) (res ReqRespose, err error) {
|
|
|
args := make(map[string]string)
|