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)