2013-03-20 81 views
2

我试图从PayPal APIs Getting Started Guide适应的例子PHP:API凭据不正确

<?php 

define('PAYPAL_API_USER', '<snip>'); 
define('PAYPAL_API_PWD', '<snip>'); 
define('PAYPAL_API_SIGNATURE', '<snip>'); 
define('PAYPAL_API_APPLICATION_ID', 'APP-80W284485P519543T'); 

$endpoing = 'https://svcs.sandbox.paypal.com/AdaptiveAccounts/CreateAccount'; 
$headers = array(
    'X-PAYPAL-SECURITY-USERID' => PAYPAL_API_USER, 
    'X-PAYPAL-SECURITY-PASSWORD' => PAYPAL_API_PWD, 
    'X-PAYPAL-SECURITY-SIGNATURE' => PAYPAL_API_SIGNATURE, 

    'X-PAYPAL-REQUEST-DATA-FORMAT' => 'JSON', 
    'X-PAYPAL-RESPONSE-DATA-FORMAT' => 'JSON', 

    'X-PAYPAL-APPLICATION-ID' => PAYPAL_API_APPLICATION_ID, 

    'X-PAYPAL-DEVICE-IPADDRESS' => '192.0.2.0', // :-? Also tried with my public IP address 
    'X-PAYPAL-SANDBOX-EMAIL-ADDRESS' => '<snip>', // Typed my account's e-mail 
); 
$payload = '{ 
    "sandboxEmailAddress": "Sender-emailAddress", 
    "accountType": "PERSONAL", 
    "name": { 
     "firstName": "Lenny", 
     "lastName": "Riceman" 
    }, 
    "address": { 
     "line1": "123 Main St", 
     "city": "Austin", 
     "state": "TX", 
     "postalCode": "78759", 
     "countryCode": "US" 
    }, 
    "citizenshipCountryCode": "US", 
    "contactPhoneNumber": "512-555-5555", 
    "dateOfBirth": "1968-01-01Z", 
    "createAccountWebOptions": { 
     "returnUrl": "http://www.example.com/success.html" 
    }, 
    "currencyCode": "USD", 
    "emailAddress": "[email protected]", 
    "preferredLanguageCode": "en_US", 
    "registrationType": "Web", 
    "requestEnvelope": { 
     "errorLanguage": "en_US" 
    } 
}'; 
$options = array(
    CURLOPT_SSL_VERIFYPEER => false, 
    CURLOPT_HTTPHEADER => $headers, 
CURLOPT_POST => false, 
CURLOPT_POSTFIELDS => $payload, 
    CURLOPT_RETURNTRANSFER => true, 
); 

try{ 
    $curl = curl_init($endpoing); 
    if(!$curl){ 
     throw new Exception('Could not initialize curl'); 
    } 
    if(!curl_setopt_array($curl, $options)){ 
     throw new Exception('Curl error:' . curl_error($curl)); 
    } 
    $result = curl_exec($curl); 
    if(!$result){ 
     throw new Exception('Curl error:' . curl_error($curl)); 
    } 
    curl_close($curl); 
    echo $result; 
}catch(Exception $e){ 
    echo 'ERROR: ' . $e->getMessage() . PHP_EOL; 
} 

...但我总是把它恢复:

<?xml version='1.0' encoding='utf-8'?> 
<ns3:FaultMessage xmlns:ns3="http://svcs.paypal.com/types/common" xmlns:ns2="http://svcs.paypal.com/types/aa"> 
    <responseEnvelope> 
     <timestamp>2013-03-20T16:33:46.309-07:00</timestamp> 
     <ack>Failure</ack> 
     <correlationId>7d7fa53e6a930</correlationId> 
     <build>5343121</build> 
    </responseEnvelope> 
    <error> 
     <errorId>520003</errorId> 
     <domain>PLATFORM</domain> 
     <subdomain>Application</subdomain> 
     <severity>Error</severity> 
     <category>Application</category> 
     <message>Authentication failed. API credentials are incorrect.</message> 
    </error> 
</ns3:FaultMessage> 

我再次检查API凭证(用户,通行证和签名),并且它们完全与配置文件页面中显示的一样。我不完全确定X-PAYPAL-DEVICE-IPADDRESSX-PAYPAL-SANDBOX-EMAIL-ADDRESS

我怀疑我误读了一些东西或省略了一些卷曲选项。你能发现我的代码有什么问题吗?

回答

5

有点无益,CURLOPT_HTTPHEADER选项确实采取Header =>值对散列,只有一个字符串的列表,其中每个字符串必须是一个完整的HTTP标头。

所以不是$headers = array('X-PAYPAL-SECURITY-USERID' => PAYPAL_API_USER, ...)你需要$headers = array('X-PAYPAL-SECURITY-USERID: ' . PAYPAL_API_USER, ...)

+0

是的,当然......我必须失明!这就解释了为什么我得到的是XML错误消息而不是JSON。非常感谢你。 – 2013-03-21 08:18:30

+0

解决这个问题后,我仍然得到了相同的错误信息(除了JSON格式很好)。最后,我从PayPal.com下载了一些PHP样本,这些样本碰巧有一个配置文件,上帝知道谁是API凭证。我尝试了这些,并开始工作。所以,出于某种原因,PayPal已经为我分配了一个无效的API密码。 (但是,当然,我愚蠢的卷曲错误是我的代码中的明显问题。) – 2013-03-21 21:24:17

+0

大家好,我有身份验证失败的错误。我从贝宝网站获得了API。我在开发人员站点中创建了沙箱帐户。我也检查了标题。但我无法解决这个错误。请给我建议。 – user2003356 2013-09-02 07:29:09

2

的原因是您使用了错误的API凭证。您需要在主开发人员帐户中设置用户。一旦设置完成,您将在其个人资料中看到他们拥有自己的独立API凭证。

我有同样的问题,并花了数小时解决,但现在所有的作品都很好。

+0

虽然这并没有回答这个确切的问题(我实际上滥用了Curl),这确实是让我浪费了好几天的大瓶颈。但即使现在我知道如何去做,通常需要几个小时才能为开发建立一些测试账户。 – 2013-11-04 15:25:34

+0

+1。要设置沙箱帐户,请转到developer.paypal.com,单击应用程序,然后沙盒帐户就在那里。 – bevanb 2013-12-22 04:23:30

0

它确实说得很清楚,沙箱的APP-ID总是APP-80W284485P519543T

当你上线时,你将拥有自己的。

相关问题