中行信用卡3D认证是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中行信用卡3D认证是啥?相关的知识,希望对你有一定的参考价值。

信用卡3D认证:
为提高网络交易安全性、有效减少网络欺诈交易发生,VISA建立了3DSecure规范(ThreeDomainSecure,简称3D),后万事达与JCB也共同加入此规范。3D仅适用于在境外网络商户发生的MOTO(mailordertelephoneorder)类交易。持卡人在交易时只需在商户网页输入卡号、有效期、CVV2、动态口令及手机验证码即可完成交易,不需通过网银或其它第三方支付平台,以加强交易的安全性。
温馨提示:
1、3D认证是各卡组织的网络支付方式,交易时输入的信息由各卡组织决定,会有差异。如需输入手机交易码,则为使用您申请信用卡时预留在银行卡系统中的手机号码。
2、支持3D认证服务的信用卡的附属卡也可以开通3D认证服务,但此附属卡必须有独立的网上银行。
以上内容供您参考,业务规定请以实际为准。
如有疑问,欢迎咨询中国银行在线客服。
诚邀您下载使用中国银行手机银行APP或中银跨境GO APP办理相关业务。
参考技术A 信用卡3D认证也叫Visa/MasterCard验证服务,部分银行也叫做3D(三维)验证,是银行与VISA或者MasterCard为提高信用卡网上支付的安全性,保障客户网上支付安全,维护客户利益而共同推出的一项安全验证服务。

开通此服务后,在境外网站上在线支付(扣款账户为境外账户)时,享受到Visa/MasterCard验证服务,通过个人化信息的检核,确保购物的网站真实可信,通过动态交易密码的再次验证,全面保障网上购物的安全。
拓展资料:
信用卡又叫贷记卡,是由商业银行或信用卡公司对信用合格的消费者发行的信用证明。其形式是一张正面印有发卡银行名称、有效期、号码、持卡人姓名等内容,背面有磁条、签名条的卡片。持有信用卡的消费者可以到特约商业服务部门购物或消费,再由银行同商户和持卡人进行结算,持卡人可以在规定额度内透支。
我国有关法律(《全国人民代表大会常务委员会关于<中华人民共和国刑法>有关信用卡规定的解释》)规定的信用卡,是指由商业银行或者其他金融机构发行的具有消费支付、信用贷款、转账结算、存取现金等全部功能或者部分功能的电子支付卡 。2017年12月1日,《公共服务领域英文译写规范》正式实施,规定信用卡标准英文名为Credit Card 。
信用卡消费是一种非现金交易付款的方式,消费时无须支付现金,待账单日(Billing Date)时再进行还款。
信用卡分为贷记卡和准贷记卡,贷记卡是指持卡人拥有一定的信用额度、可在信用额度内先消费后还款的信用卡;准贷记卡是指持卡人按要求交存一定金额的备用金,当备用金账户余额不足支付时,可在规定的信用额度内透支的准贷记卡。所说的信用卡,一般单指贷记卡。
2021年1月1日起,信用卡透支利率由发卡机构与持卡人自主协商确定,取消信用卡透支利率上限和下限管理(原上限为日利率万分之五、下限为日利率万分之五的0.7倍)。
2021年5月25日,最高人民法院发布实施了《最高人民法院关于审理银行卡民事纠纷案件若干问题的规定》。

在 ASP.NET 中接受信用卡的最佳方式是啥? (在 ASP.NET 和 Authorize.NET 之间)

【中文标题】在 ASP.NET 中接受信用卡的最佳方式是啥? (在 ASP.NET 和 Authorize.NET 之间)【英文标题】:What is the best way to accept a credit card in ASP.NET? (Between ASP.NET and Authorize.NET)在 ASP.NET 中接受信用卡的最佳方式是什么? (在 ASP.NET 和 Authorize.NET 之间) 【发布时间】:2011-04-01 07:18:51 【问题描述】:

我是创建商务网站的新手,现在我需要通过互联网销售软件,我不知道从哪里开始。

我正在使用 ASP.NET,并且正在考虑使用 Authorize.NET 来验证和处理信用卡。

我正在寻找可以安装在单台服务器上的稳定、值得信赖的解决方案。我的第二个目标(除了在线销售产品)是熟悉流行的购物车软件,并被大型企业使用。也许我应该从 MS Commerce 服务器开始?

【问题讨论】:

与 Authorize.Net 集成非常简单。 【参考方案1】:

这里有一百万个选项,但如果您正在编写代码,最简单的代码方式是使用http://sharpauthorize.com/

【讨论】:

【参考方案2】:

Authorize.Net 很容易用 ASP.NET 实现

基本上你可以通过3-4种方式进行交易:

    通过按钮(如 Paypal (http://developer.authorize.net/api/simplecheckout/))进行简单结帐 Direct Post:假设您的定制比 Simple CheckOut 多一点。创建一个直接发布到 Authorize.Net http://developer.authorize.net/api/simplecheckout/ 的结帐表单

例如:

<h1><%=ViewData["message"] %></h1>
<%using (Html.BeginSIMForm("http://YOUR_SERVER.com/home/sim",
1.99M,"YOUR_API_LOGIN","YOUR_TRANSACTION_KEY",true))%>
<%=Html.CheckoutFormInputs(true)%>
<%=Html.Hidden("order_id","1234") %>
<input type = "submit" value = "Pay" />
<%%>
    SIM(服务器集成) AIM(高级集成方法):提供完全控制和自定义。 CIM(使用tokanization 将客户卡号和信息存储在Auth.NET 服务器上)

*下面是一个 CIM 函数进行交易的示例,AIM 与 CIM 非常相似,唯一的区别是tokanization *

using ProjName.AuthApiSoap;  // USE AUth Webserice Reference

   public Tuple<string, string, string> CreateTransaction(long profile_id, long payment_profile_id, decimal amt, string DDD)
        
            CustomerProfileWS.ProfileTransAuthCaptureType auth_capture = new CustomerProfileWS.ProfileTransAuthCaptureType();
            auth_capture.customerProfileId = profile_id;
            auth_capture.customerPaymentProfileId = payment_profile_id;
            auth_capture.amount = amt;//1.00m;
            auth_capture.order = new CustomerProfileWS.OrderExType();
            POSLib.POSManager objManager = new POSLib.POSManager();
            auth_capture.order.invoiceNumber = objManager.GetTimestamp(DateTime.Now);
            DateTime now = DateTime.Now;
            auth_capture.order.description = "Service  " + DDD;
            CustomerProfileWS.ProfileTransactionType trans = new CustomerProfileWS.ProfileTransactionType();
            trans.Item = auth_capture;
            CustomerProfileWS.CreateCustomerProfileTransactionResponseType response = SoapAPIUtilities.Service.CreateCustomerProfileTransaction(SoapAPIUtilities.MerchantAuthentication, trans, null);

            string AuthTranMsg = "";
            string AuthTranCode = "";
            for (int i = 0; i < response.messages.Length; i++)
            
                AuthTranMsg = response.messages[i].text;  // To Get Message n for loop to check the [i] is not empty 
            
            for (int i = 0; i < response.messages.Length; i++)
            
                AuthTranCode = response.messages[i].code;   // To Get Code n for loop to check the [i] is not empty 
            
            var tCompResp = new Tuple<string, string, string>(AuthTranCode, AuthTranMsg, response.directResponse);
            return tCompResp;
        

这是拆分响应消息的方法(格式和顺序将为所有交易/响应的网络服务上的固定)

 var tResp = objManager.CreateTransaction(profID, paymProfID, Convert.ToDecimal(PmtToday), DDD);
                    string respCCNo = "";
                    string RespCCType = "";
                    string InvoiceNo = "";
                    string transType = "";
                    string approvalCode = "";
                    string AmtRequested = "";
                    string respName = "";
                    string respReasonText = "";
                    string respMD5Hash = "";
                    string respEmailId = "";
                    string respReasonCode = "";
                    string respMethod = "";
                    string respAVSResultCode = "";
                    string responseCode = "";
                    string transactionId = "0";
                    if (!string.IsNullOrEmpty(tCompResp.Item3))
                    
                        string[] arrRespParts = tCompResp.Item3.Replace("|", "").Split(',');
                        responseCode = arrRespParts[0];
                        respReasonCode = arrRespParts[2];
                        respReasonText = arrRespParts[3];
                        approvalCode = arrRespParts[4];
                        respAVSResultCode = arrRespParts[5];
                        transactionId = arrRespParts[6].Replace("|", "");
                        InvoiceNo = arrRespParts[7];
                        AmtRequested = arrRespParts[9];
                        transType = arrRespParts[10];
                        respMethod = arrRespParts[11];
                        respName = arrRespParts[13] + " " + arrRespParts[14];
                        respEmailId = arrRespParts[23];
                        respMD5Hash = arrRespParts[37];
                        respCCNo = arrRespParts[50];
                        RespCCType = arrRespParts[51];
                    

===================================AIM 代码

 public Tuple<string, string, string> ECheckCreateTransAIM(string amount, string bankRoutingNo, string bankAccNo, string bankAccType, string bankName, string bankAccName, string echeckType, bool isCustomerEmail, string customerEmail, string mechantEMail)
        
            //CustomValidator1.ErrorMessage = "";
            string AuthNetVersion = "3.1"; // Contains CCV support

            WebClient webClientRequest = new WebClient();
            System.Collections.Specialized.NameValueCollection InputObject = new System.Collections.Specialized.NameValueCollection(30);
            System.Collections.Specialized.NameValueCollection ReturnObject = new System.Collections.Specialized.NameValueCollection(30);
            byte[] ReturnBytes;
            string[] ReturnValues;
            string ErrorString;
            InputObject.Add("x_version", AuthNetVersion);
            InputObject.Add("x_delim_data", "True");
            InputObject.Add("x_login", MERCHANT_NAME);
            InputObject.Add("x_tran_key", TRANSACTION_KEY);
            InputObject.Add("x_relay_response", "False");
            //----------------------Set to False to go Live--------------------
            InputObject.Add("x_test_request", "False");
            //---------------------------------------------------------------------
            InputObject.Add("x_delim_char", ",");
            InputObject.Add("x_encap_char", "|");
            if (isCustomerEmail)
            
                InputObject.Add("x_email", customerEmail);
                InputObject.Add("x_email_customer", "TRUE");                     //Emails Customer
            
            InputObject.Add("x_merchant_email", mechantEMail);
            // FOR echeck            
            InputObject.Add("x_bank_aba_code", bankRoutingNo);
            InputObject.Add("x_bank_acct_num", bankAccNo);
            InputObject.Add("x_bank_acct_type", bankAccType);
            InputObject.Add("x_bank_name", bankName);
            InputObject.Add("x_bank_acct_name", bankAccName);
            InputObject.Add("x_method", "ECHECK");
            InputObject.Add("x_type", "AUTH_CAPTURE");
            InputObject.Add("x_amount", string.Format("0:c2", Convert.ToDouble(amount)));
            // Currency setting. Check the guide for other supported currencies           
            //needto change it to Actual Server URL
            //Set above Testmode=off to go live
            webClientRequest.BaseAddress = eCheckBaseAddress;  //"https://apitest.authorize.net/soap/v1/Service.asmx"; //"https://secure.authorize.net/gateway/transact.dll";
            ReturnBytes = webClientRequest.UploadValues(webClientRequest.BaseAddress, "POST", InputObject);
            ReturnValues = System.Text.Encoding.ASCII.GetString(ReturnBytes).Split(",".ToCharArray());
            if (ReturnValues[0].Trim(char.Parse("|")) == "1")  // Succesful Transaction
            
                //AuthNetCodeLabel.Text = ReturnValues[4].Trim(char.Parse("|")); // Returned Authorisation Code
                //AuthNetTransIDLabel.Text = ReturnValues[6].Trim(char.Parse("|")); // Returned Transaction ID
                var tCompResp = new Tuple<string, string, string>("I00001", ReturnValues[3].Trim(char.Parse("|")), string.Join(",", ReturnValues));
                return tCompResp;
            
            else
            
                // Error!
                ErrorString = ReturnValues[3].Trim(char.Parse("|")) + " (" + ReturnValues[2].Trim(char.Parse("|")) + ")";
                if (ReturnValues[2].Trim(char.Parse("|")) == "45")
                
                    if (ErrorString.Length > 1)
                        ErrorString += "<br />n";

                    // AVS transaction decline
                    ErrorString += "Address Verification System (AVS) " +
                      "returned the following error: ";

                    switch (ReturnValues[5].Trim(char.Parse("|")))
                    
                        case "A":
                            ErrorString += " the zip code entered does not match the billing address.";
                            break;
                        case "B":
                            ErrorString += " no information was provided for the AVS check.";
                            break;
                        case "E":
                            ErrorString += " a general error occurred in the AVS system.";
                            break;
                        case "G":
                            ErrorString += " the credit card was issued by a non-US bank.";
                            break;
                        case "N":
                            ErrorString += " neither the entered street address nor zip code matches the billing address.";
                            break;
                        case "P":
                            ErrorString += " AVS is not applicable for this transaction.";
                            break;
                        case "R":
                            ErrorString += " please retry the transaction; the AVS system was unavailable or timed out.";
                            break;
                        case "S":
                            ErrorString += " the AVS service is not supported by your credit card issuer.";
                            break;
                        case "U":
                            ErrorString += " address information is unavailable for the credit card.";
                            break;
                        case "W":
                            ErrorString += " the 9 digit zip code matches, but the street address does not.";
                            break;
                        case "Z":
                            ErrorString += " the zip code matches, but the address does not.";
                            break;
                    
                

            
            var tCompRespFail = new Tuple<string, string, string>(ReturnValues[6].ToString(), ErrorString, string.Join(",", ReturnValues));
            return tCompRespFail;


        

CIM 代码(Tokanisation(无卡方法)

   public Tuple<string, string, string> CreateTransaction(long profile_id, long payment_profile_id, decimal amt, string DDD)
        
            CustomerProfileWS.ProfileTransAuthCaptureType auth_capture = new CustomerProfileWS.ProfileTransAuthCaptureType();
            auth_capture.customerProfileId = profile_id;
            auth_capture.customerPaymentProfileId = payment_profile_id;
            auth_capture.amount = amt;//1.00m;
            auth_capture.order = new CustomerProfileWS.OrderExType();
            POSLib.POSManager objManager = new POSLib.POSManager();
            auth_capture.order.invoiceNumber = objManager.GetTimestamp(DateTime.Now);
            DateTime now = DateTime.Now;
            auth_capture.order.description = "Service  " + DDD;
            CustomerProfileWS.ProfileTransactionType trans = new CustomerProfileWS.ProfileTransactionType();
            trans.Item = auth_capture;
            CustomerProfileWS.CreateCustomerProfileTransactionResponseType response = SoapAPIUtilities.Service.CreateCustomerProfileTransaction(SoapAPIUtilities.MerchantAuthentication, trans, null);

            string AuthTranMsg = "";
            string AuthTranCode = "";
            for (int i = 0; i < response.messages.Length; i++)
            
                AuthTranMsg = response.messages[i].text;  // To Get Message n for loop to check the [i] is not empty 
            
            for (int i = 0; i < response.messages.Length; i++)
            
                AuthTranCode = response.messages[i].code;   // To Get Code n for loop to check the [i] is not empty 
            
            var tCompResp = new Tuple<string, string, string>(AuthTranCode, AuthTranMsg, response.directResponse);
            return tCompResp;
        

【讨论】:

以上是关于中行信用卡3D认证是啥?的主要内容,如果未能解决你的问题,请参考以下文章

emv是啥意思?

支付宝请求参数不合法是啥意思

paypal信用卡如何认证在哪

信用卡实名认证查询信息为空咋回事

浦发银行信用卡小程序认证失败怎么回事

Google Cloud Platform 信用卡验证,擦宝上的虚拟信用卡可以验证吗