Php Authorize.net:“;createTransactionRequest";具有无效的子元素“;clientId“;

Php Authorize.net:“;createTransactionRequest";具有无效的子元素“;clientId“;,php,laravel,authorize.net,php-7.4,Php,Laravel,Authorize.net,Php 7.4,我正在尝试使用我的Laravel 7应用程序和Authorize.net进行测试交易 提交样本数据后,我得到: 命名空间“AnetApi/xml/v1/schema/AnetApiSchema.xsd”中的元素“createTransactionRequest”在命名空间“AnetApi/xml/v1/schema/AnetApiSchema.xsd”中具有无效的子元素“clientId”。名称空间“AnetApi/xml/v1/schema/AnetApiSchema.xsd”中需要的可能元素

我正在尝试使用我的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”。


有人知道是什么导致了这个错误或者如何修复它吗?

您可能想检查原始请求的日志,很可能还没有设置merchantAuthentication对象,如果您使用的是PHP SDK,我建议检查SimpleCodeConstants.PHP文件,并确保设置了您的商户凭据常量

例如,如果我将我的商户凭证设置为NULL,则发送以下原始请求时会出现相同的E00003错误:


{“createTransactionRequest”:{“merchantAuthentication”:[],“clientId”:“sdk-php-2.0.0-ALPHA”,…}

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

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

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

$merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
$merchantAuthentication->setName('EnterYourLoginNameHere');
$merchantAuthentication->setTransactionKey('EnterYourTransactionKey');
在那之后,我清除了我的Laravel应用程序的所有缓存以及浏览器的缓存,进行了一次硬加载,再次尝试了一个事务,它成功了!我得到:

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

不确定您是否已经看到或尝试了以下内容: