【问题标题】:Authorize.net: "createTransactionRequest" has invalid child element "clientId"Authorize.net:“createTransactionRequest”具有无效的子元素“clientId”
【发布时间】:2020-07-02 23:52:43
【问题描述】:

我正在尝试使用我的 Laravel 7 应用和 Authorize.net 进行测试交易。

提交样本数据后,我得到:

命名空间“AnetApi/xml/v1/schema/AnetApiSchema.xsd”中的元素“createTransactionRequest”在命名空间“AnetApi/xml/v1/schema/AnetApiSchema.xsd”中具有无效的子元素“clientId”。预期的可能元素列表:命名空间“AnetApi/xml/v1/schema/AnetApiSchema.xsd”中的“merchantAuthentication”。

有谁知道是什么导致了这个错误或者如何解决它?

【问题讨论】:

标签: php laravel authorize.net php-7.4


【解决方案1】:

好吧,我会回答我自己的问题,因为它可能对其他人有所帮助。问题是 Authorize.net 响应中的错误消息非常模糊。

Kurt Friars 的评论很有帮助,因为它为我指明了正确的方向。至于 Mansour Hamcherif 的建议, 在我的应用中设置了商家身份验证对象,它只是没有正确的值,所以不是这样。

我的解决方案是将正确的值设置为 setName() 和 setTransactionKey()。参与此项目的前一位开发人员留下了值,并且凭据已过期。我对“setTransactionKey”进行了 Linux 文本搜索,这使我找到了需要设置的正确 PHP 文件:

$merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
$merchantAuthentication->setName('EnterYourLoginNameHere');
$merchantAuthentication->setTransactionKey('EnterYourTransactionKey');

之后,我清除了所有 Laravel 应用程序的缓存以及浏览器的缓存,重新加载,再次尝试事务,它成功了!我得到了:

This transaction has been approved., Transaction ID: **********.

【讨论】:

    【解决方案2】:

    您可能想检查原始请求的日志,可能没有设置商家身份验证对象,如果您使用的是 PHP SDK,我建议您检查 SimpleCodeConstants.php 文件并确保您的商家凭据常量已设置。

    例如,如果我将我的商家凭据设置为 NULL,由于发送以下原始请求,我会收到相同的 E00003 错误:

    {"createTransactionRequest":{"merchantAuthentication":[],"clientId":"sdk-php-2.0.0-ALPHA", ...}

    【讨论】:

      猜你喜欢
      • 2016-10-23
      • 2021-03-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多