Преглед на файлове

银行卡四要素核验增加流水记录

zhouxnsz преди 1 година
родител
ревизия
447b1da5f5
променени са 3 файла, в които са добавени 127 реда и са изтрити 6 реда
  1. 18 0
      models/ori.go
  2. 57 6
      services/tencent-cloud/api.go
  3. 52 0
      services/tencent-cloud/doc/readme.md

+ 18 - 0
models/ori.go

@@ -1230,3 +1230,21 @@ type Tcegcgoodsconfig struct {
 func (r *Tcegcgoodsconfig) TableName() string {
 	return "TCE_GCGOODSCONFIG"
 }
+
+// Useresignrecordlog 用户电子签记录流录表
+type Useresignrecordlog struct {
+	LOGID            int64     `json:"logid" xorm:"LOGID"`                       // 流水ID(SEQ_USERESIGNRECORDLOG)
+	RECORDID         int64     `json:"recordid" xorm:"RECORDID"`                 // 记录ID(SEQ_USERESIGNRECORD)
+	USERID           int64     `json:"userid" xorm:"USERID"`                     // 用户ID
+	TEMPLATECONFIGID int64     `json:"templateconfigid" xorm:"TEMPLATECONFIGID"` // 模板配置ID
+	TEMPLATETYPE     int32     `json:"templatetype" xorm:"TEMPLATETYPE"`         // 模板类型 - 1:实名认证(爱签-贵州云上) 2:开户协议(爱签-贵州云上) 3:日结算单(暂未使用) 4:交易协议(麦顿) 5: 四要素认证(腾讯云)
+	REQSTATUS        int32     `json:"reqstatus" xorm:"REQSTATUS"`               // 请求状态: 1:请求中 2:成功 3:失败
+	FEEFLAG          int32     `json:"feeflag" xorm:"FEEFLAG"`                   // 计费标识: 1:计费 2:不计费
+	REQCOMMENT       string    `json:"reqcomment" xorm:"REQCOMMENT"`             // 请求回应
+	CREATETIME       time.Time `json:"createtime" xorm:"CREATETIME"`             // 创建时间
+}
+
+// TableName is USERESIGNRECORDLOG
+func (r *Useresignrecordlog) TableName() string {
+	return "USERESIGNRECORDLOG"
+}

+ 57 - 6
services/tencent-cloud/api.go

@@ -8,10 +8,12 @@ import (
 	"mtp2_if/logger"
 	"mtp2_if/models"
 	"mtp2_if/utils"
+	"strings"
 
 	reqModels "mtp2_if/services/asign"
 
 	faceid "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/faceid/v20180301"
+	"github.com/xormplus/builder"
 )
 
 type BankCard4Rsp struct {
@@ -40,7 +42,7 @@ func BankCard4EVerification(req reqModels.BankCard4Req) (rsp BankCard4Rsp, err e
 	var authinfo []byte
 	var record models.Useresignrecord
 	var has bool
-	has, err = db.GetEngine().Where("TEMPLATETYPE = 1 AND USERID = ?", req.UserId).Get(&record)
+	has, err = db.GetEngine().Where("TEMPLATETYPE = 5 AND USERID = ?", req.UserId).Get(&record)
 	if err != nil {
 		return
 	}
@@ -81,7 +83,7 @@ func BankCard4EVerification(req reqModels.BankCard4Req) (rsp BankCard4Rsp, err e
 					SET RECORDSTATUS = 1,
 						UPDATETIME = SYSDATE,
 						AUTHINFO = '%v'
-					WHERE USERID = %v AND TEMPLATETYPE = 1 
+					WHERE USERID = %v AND TEMPLATETYPE = 5 
 				`, string(authinfo), req.UserId)
 				_, err = db.GetEngine().Exec(sql)
 				if err != nil {
@@ -115,7 +117,7 @@ func BankCard4EVerification(req reqModels.BankCard4Req) (rsp BankCard4Rsp, err e
 					SET RECORDSTATUS = 1,
 						UPDATETIME = SYSDATE,
 						AUTHINFO = '%v'
-					WHERE USERID = %v AND TEMPLATETYPE = 1 
+					WHERE USERID = %v AND TEMPLATETYPE = 5
 				`, string(authinfo), req.UserId)
 				_, err = db.GetEngine().Exec(sql)
 				if err != nil {
@@ -132,7 +134,7 @@ func BankCard4EVerification(req reqModels.BankCard4Req) (rsp BankCard4Rsp, err e
 					UPDATE useresignrecord
 					SET RECORDSTATUS = 3,
 						UPDATETIME = SYSDATE
-					WHERE USERID = %v AND TEMPLATETYPE = 1 
+					WHERE USERID = %v AND TEMPLATETYPE = 5 
 				`, req.UserId)
 		_, err = db.GetEngine().Exec(sql)
 		if err == nil {
@@ -164,6 +166,55 @@ func BankCard4EVerification(req reqModels.BankCard4Req) (rsp BankCard4Rsp, err e
 			logger.GetLogger().Error("调用腾讯云实名认证接口发生错误:", err.Error())
 			return
 		}
+
+		// 记录流水
+		feeFlag := 2 // 是否计费
+		// - 收费结果码:
+		// '0': '认证通过'。
+		// '-1': '认证未通过'。
+		// '-6': '持卡人信息有误'。
+		// '-7': '未开通无卡支付'。
+		// '-8': '此卡被没收'。
+		// '-9': '无效卡号'。
+		// '-10': '此卡无对应发卡行'。
+		// '-11': '该卡未初始化或睡眠卡'。
+		// '-12': '作弊卡、吞卡'。
+		// '-13': '此卡已挂失'。
+		// '-14': '该卡已过期'。
+		// '-15': '受限制的卡'。
+		// '-16': '密码错误次数超限'。
+		// '-17': '发卡行不支持此交易'。
+
+		// - 不收费结果码:
+		// '-2': '姓名校验不通过'。
+		// '-3': '身份证号码有误'。
+		// '-4': '银行卡号码有误'。
+		// '-5': '手机号码不合法'。
+		// '-18': '验证中心服务繁忙'。
+		// '-19': '验证次数超限,请次日重试'。
+		// '-20': '该证件号暂不支持核验,当前仅支持二代身份证'。
+		switch *response.Response.Result {
+		case "0", "-1", "-6", "-7", "-8", "-9", "-10", "-11", "-12", "-13", "-14", "-15", "-16", "-17":
+			feeFlag = 1
+		}
+		var sql string
+		sql, _ = builder.Insert(
+			builder.Eq{
+				"LOGID":            "SEQ_USERESIGNRECORDLOG.nextval",
+				"RECORDID":         record.RECORDID,
+				"USERID":           record.USERID,
+				"TEMPLATECONFIGID": record.TEMPLATECONFIGID,
+				"TEMPLATETYPE":     record.TEMPLATETYPE,
+				"REQSTATUS":        2,
+				"FEEFLAG":          feeFlag,
+				"REQCOMMENT":       response.ToJsonString(),
+				"CREATETIME":       "SYSDATE",
+			},
+		).Into("USERESIGNRECORDLOG").ToBoundSQL()
+		sql = strings.ReplaceAll(sql, "'SEQ_USERESIGNRECORDLOG.nextval'", "SEQ_USERESIGNRECORDLOG.nextval")
+		sql = strings.ReplaceAll(sql, "'SYSDATE'", "SYSDATE")
+		db.GetEngine().Exec(sql)
+
 		if *response.Response.Result != "0" {
 			err = errors.New("返回结果失败,错误码(" + *response.Response.Result + "),返回信息(" + response.ToJsonString() + ")")
 			logger.GetLogger().Error("调用腾讯云实名认证接口返回结果不成功:", err.Error())
@@ -171,11 +222,11 @@ func BankCard4EVerification(req reqModels.BankCard4Req) (rsp BankCard4Rsp, err e
 		}
 
 		// 返回结果结果,更新记录状态
-		sql := fmt.Sprintf(`
+		sql = fmt.Sprintf(`
 					UPDATE useresignrecord
 					SET RECORDSTATUS = 3,
 						UPDATETIME = SYSDATE
-					WHERE USERID = %v AND TEMPLATETYPE = 1 
+					WHERE USERID = %v AND TEMPLATETYPE = 5 
 				`, req.UserId)
 		_, err = db.GetEngine().Exec(sql)
 		if err == nil {

+ 52 - 0
services/tencent-cloud/doc/readme.md

@@ -0,0 +1,52 @@
+# 腾讯云
+
+## 银行卡四要素核验
+
+目前只支持个人银行卡四要素核验,不支持企业检验
+
+### 文档
+
+<https://cloud.tencent.com/document/product/1007/35775>
+
+### 实盘配置
+
+```xml
+<TencentCloud>
+    <Enabled value="1"/>
+    <SecretId value="AKIDPktwvneP2WqxvmWFsMclmfLLKDyrbAXp"/>
+    <SecretKey value="GNH9tX8c6Wls02vhNzUvdLuGMYfeVErM"/>
+    <FaceIdEndPoint value="faceid.tencentcloudapi.com"/>
+</TencentCloud>
+```
+
+### 计费说明
+
+返回结果码计费说明
+
+```txt
+认证结果码。
+- 收费结果码:
+'0': '认证通过'。
+'-1': '认证未通过'。
+'-6': '持卡人信息有误'。
+'-7': '未开通无卡支付'。
+'-8': '此卡被没收'。
+'-9': '无效卡号'。
+'-10': '此卡无对应发卡行'。
+'-11': '该卡未初始化或睡眠卡'。
+'-12': '作弊卡、吞卡'。
+'-13': '此卡已挂失'。
+'-14': '该卡已过期'。
+'-15': '受限制的卡'。
+'-16': '密码错误次数超限'。
+'-17': '发卡行不支持此交易'。
+
+- 不收费结果码:
+'-2': '姓名校验不通过'。
+'-3': '身份证号码有误'。
+'-4': '银行卡号码有误'。
+'-5': '手机号码不合法'。
+'-18': '验证中心服务繁忙'。
+'-19': '验证次数超限,请次日重试'。
+'-20': '该证件号暂不支持核验,当前仅支持二代身份证'。
+```