Я попытался адаптировать пример из 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-IPADDRESS
и X-PAYPAL-SANDBOX-EMAIL-ADDRESS
.
Я подозреваю, что я неправильно понял что-то или пропустил какой-то вариант завитки. Можете ли вы определить, что не так в моем коде?
Да, конечно ... Я должен быть слепым! И это объясняет, почему я получал сообщение об ошибке XML, а не JSON. Большое спасибо. –
После исправления я все равно получил то же сообщение об ошибке (за исключением того, что красиво отформатирован в JSON). В конце концов, я загрузил некоторые образцы PHP из PayPal.com, у которых был файл конфигурации с учетными данными API от Бога, который знает, кто. Я пробовал, и все это начало работать. Поэтому по какой-то причине PayPal присвоил мне пароль API, который недействителен. (Но, конечно, мое глупое неправильное использование завитка было очевидной проблемой в моем коде.) –
Привет всем, У меня ошибка проверки подлинности. Я получил API с сайта paypal. Я создал учетные записи для песочницы на сайте разработчика. Я также проверил заголовки. Но я не мог решить эту ошибку. пожалуйста, предложите мне. – user2003356