3 位卡代码失败并出现错误 E00003 根据其数据类型,值 XXXXXXX 无效 - 模式约束失败

Posted

技术标签:

【中文标题】3 位卡代码失败并出现错误 E00003 根据其数据类型,值 XXXXXXX 无效 - 模式约束失败【英文标题】:3 digit card codes failing with error E00003 The value XXXXXXX is invalid according to its datatype - The Pattern constraint failed 【发布时间】:2020-08-25 14:45:37 【问题描述】:

代码如下:-

public bool AuthorizePayment(string Card_Num, string Exp_Date, string Card_Code, string amount)

      //Console.WriteLine("Charge Credit Card Sample");

      ApiOperationBase<ANetApiRequest, ANetApiResponse>.RunEnvironment = AuthorizeNet.Environment.SANDBOX;

      // define the merchant information (authentication / transaction id)
      ApiOperationBase<ANetApiRequest, ANetApiResponse>.MerchantAuthentication = new merchantAuthenticationType()
      
          name = ConfigurationManager.AppSettings["AuthNetID"],
          ItemElementName = ItemChoiceType.transactionKey,
          Item = ConfigurationManager.AppSettings["AuthNetKey"],
      ;

      var creditCard = new creditCardType
      
          cardNumber = Card_Num,
          expirationDate = Exp_Date,
          cardCode = Card_Code
      ;

      //standard api call to retrieve response
      var paymentType = new paymentType  Item = creditCard ;

      var transactionType = objInf.Get("x_type") == "AUTH_CAPTURE" ? transactionTypeEnum.authCaptureTransaction.ToString() : transactionTypeEnum.refundTransaction.ToString();

      var transactionRequest = new transactionRequestType
      
          transactionType = transactionType,
          amount = Convert.ToDecimal(amount),
          payment = paymentType,
      ;

      if (objInf.Get("x_invoice_num") != null)
      
          transactionRequest.order = new orderType  invoiceNumber = objInf.Get("x_invoice_num") ;
      
      if (objInf.Get("x_trans_id") != null)
      
          transactionRequest.refTransId = objInf.Get("x_trans_id");
      

      var request = new createTransactionRequest  transactionRequest = transactionRequest ;

      // instantiate the controller that will call the service
      var controller = new createTransactionController(request);
      controller.Execute();

      // get the response from the service (errors contained if any)
      var response = controller.GetApiResponse();

      // validate response
      if (response != null)
      
          //other code
      
      else
      
          //other code
      
  

大部分代码是从 AuthNet 站点复制粘贴,如果我发送给 AuthNet 的卡代码是 3 位数,那么交易失败并且 Api 返回空响应,即使 API 文档中明确提到了 3 位数卡代码有效。对此问题的任何帮助将不胜感激。

【问题讨论】:

这是在沙盒帐户还是生产帐户中?你用什么卡号,用什么卡码? 我在生产中遇到错误 你确定是因为 cardCode 吗?可能是因为其他一些领域?你可以在沙盒中尝试请求吗? 【参考方案1】:

当 cardType 是 AmericanExpress 并且卡号是 3 位数时,问题就发生了,这应该是这样,因为 Amex 卡有一个 4 位数的代码,所以似乎用户输入了错误的数据。

我正在处理的网站之前使用的是 AuthNet api 的 AIM 实现。这个问题从未在 AIM 中发生过,所以我猜 Authnet 没有在 AIM 中检查将位数与其卡类型相匹配。为了解决这个问题,我们联系了 authnet 客服,根据他们的建议,我们完全停止发送卡代码。

【讨论】:

【参考方案2】:

错误消息中的 XXXXXXX 提供了 Authorize.Net 正在获取 5 个字符的线索,请检查您的 cardCode 是否包含在空格中(例如“cardCode”:“123”或“123”或“123”)。

【讨论】:

谢谢,但这不是我的问题。

以上是关于3 位卡代码失败并出现错误 E00003 根据其数据类型,值 XXXXXXX 无效 - 模式约束失败的主要内容,如果未能解决你的问题,请参考以下文章

WiFiDirect discoverServices 不断失败并出现错误 3 (NO_SERVICE_REQUESTS)

构建失败并出现异常。颤动的Gradle问题

构建失败并出现错误错误代码 72 命令:xcrun

应用程序代码签名失败并出现错误“代码对象根本没有签名”

使用 JODConveter 的 doc 到 docx 转换失败并出现错误代码:2074

CDH 5.3.2:加载数据路径失败并出现“无可见文件”错误