【问题标题】:Name cannot begin with the ' ' character, in ARB Request名称不能以 ' ' 字符开头,在 ARB 请求中
【发布时间】:2014-04-16 15:49:52
【问题描述】:

我在 authorize.net 中使用了 ARB,我正在使用 php 和 Xml 来请求在 ARB 中创建订阅。它在本地工作正常,但我将文件上传到服务器上显示以下错误,

错误信息:名称不能以“ ”字符开头,十六进制值 0x20。第 1 行,位置 406。

错误代码:E00003

谁能建议如何解决这个问题,我必须联系服务器吗?

下面是我曾经请求的xml文件,

$content ="<?xml version=\"1.0\" encoding=\"utf-8\"?>" .
        "<ARBCreateSubscriptionRequest xmlns=\"AnetApi/xml/v1/schema/AnetApiSchema.xsd\">" .
        "<merchantAuthentication>".
        "<name>5A3RXdSct55</name>".
        "<transactionKey>" . $transactionkey . "</transactionKey>".
        "</merchantAuthentication>".
        "<refId>" .$refId . "</refId>".
        "<subscription>".
        "<name>Monthly Subscription</name>".
        "<paymentSchedule>".
        "<interval>".
        "<length>". $length ."</length>".
        "<unit>". $unit ."</unit>".
        "</interval>".
        "<startDate>" . $startDate . "</startDate>".
        "<totalOccurrences>". $totalOccurrences . "</totalOccurrences>".
        "<trialOccurrences>". $trialOccurrences . "</trialOccurrences>".
        "</paymentSchedule>".
        "<amount>". $amount ."</amount>".
        "<trialAmount>" . $trialAmount . "</trialAmount>".
        "<payment>".
        "<creditCard>".
        "<cardNumber>" . $cardNumber . "</cardNumber>".
        "<expirationDate>" . $expirationDate . "</expirationDate>".
        "</creditCard>".
        "</payment>".
        "<billTo>".
        "<firstName>". $firstName . "</firstName>".
        "<lastName>" . $lastName . "</lastName>".
        "<company>" . $company . "</company>".
        "<address>" . $address . "</address>".
        "<city>" . $city . "</city>".
        "<state>" . $state . "</state>".
        "<zip>" . $zipcode . "</zip>".
        "<country>" . $country . "</country>".
        "</billTo>".
        "<shipTo>".
        "<firstName>". $firstName . "</firstName>".
        "<lastName>" . $lastName . "</lastName>".
        "<company>" . $company . "</company>".
        "<address>" . $address . "</address>".
        "<city>" . $city . "</city>".
        "<state>" . $state . "</state>".
        "<zip>" . $zipcode . "</zip>".
        "<country>" . $country . "</country>".
        "</shipTo>".
        "</subscription>".
        "</ARBCreateSubscriptionRequest>";

【问题讨论】:

  • 该代码看起来没问题。 &lt;Name&gt; 的值是否像我们在这里看到的那样硬编码?还是由变量提供?
  • 是的,John,它是硬编码的,并且订阅标签下的名称标签由变量提供

标签: php xml authorize.net authorize.net-arb


【解决方案1】:

首先通过 php trim() 传递所有值

 $firstName = trim($firstName) ; 
 $lastName = trim($lastName) ; 

然后传递给您的表单 另外——这可能不适合你正在做的事情但想要传递——你可以在没有像

这样的所有点连接的情况下制作 xml 字符串
 "<billTo>
   <firstName>$firstName</firstName>
    <lastName>$lastName</lastName>" ;

如果您使用 php 执行此操作 - php 将处理双引号内的 $variables 并作为文本值输出。

【讨论】:

    【解决方案2】:

    最后我通过使用xml验证器得到了解决方案,我在$startdate变量中犯了一个错误,它保存了日期函数,我没有在日期函数中添加&lt;?php标签。

    通过使用&lt;?php 它解决了这个问题。感谢您的建议卡塔洛特。

    【讨论】:

    • 太棒了!是的,如果您直接从诸如计费表单之类的表单中获取值,我会再说一遍——对 xml 函数进行某种修剪和准备是非常必要的。一定要测试你的表单输入像等这样的字符,以确保它们被删除 - 否则你的 xml 会中断。
    猜你喜欢
    • 1970-01-01
    • 2020-10-08
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    相关资源
    最近更新 更多