2015-07-30 5 views
1

Я пытаюсь сделать оплату кредитной карты через PayPal услуги API REST, я могу захватить маркер доступа, но каждый раз, когда пытается сделать платеж по кредитной карте я получаю 401.PayPal оплата PHP кредитных карт возвращает 401

Моих образец работает отлично на .NET, но не на PHP. Пожалуйста, советы

$json = '{"intent":"sale","redirect_urls":{"return_url":"","cancel_url":""},"payer":{"payment_method":"credit_card","funding_instruments":[{"credit_card":{"number":"4417119669820331","type":"visa","expire_month":11,"expire_year":2018,"cvv2":"874","first_name":"Betsy","last_name":"Buyer","billing_address":{"line1":"111 First Street","city":"Saratoga","state":"CA","postal_code":"95070","country_code":"US"}}}]},"transactions":[{"amount":{"total":"200","currency":"USD"},"description":"Credit Card Payment - $200"}]}'; 

$Url = "https://api.sandbox.paypal.com/v1/payments/payment"; 
$AccessToken = GetAccessToken(); 
echo "Bearer ".$AccessToken; 
echo "<br><br>"; 
$headers = array("Authorization" => "Bearer ".$AccessToken, "Content-Type" => "text/json", "Content-length" =>strlen($json)); 

$handle = curl_init($Url); 


curl_setopt($handle,CURLOPT_HTTPHEADER,$headers); 
curl_setopt($handle, CURLOPT_POST, true); 
curl_setopt($handle, CURLOPT_POSTFIELDS, $json); 
curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); 

curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false); 
$response = curl_exec($handle); 
$info = curl_getinfo($handle); 
$error= curl_error ($handle); 
curl_close($handle); 

var_dump($info); 
echo "<br><br>"; 
var_dump($error); 
echo "<br><br>"; 
var_dump($response); 

полный образец здесь https://dl.dropboxusercontent.com/u/3517813/index.php

+1

Возможно, вы захотите использовать PHP SDK для REST на https://github.com/paypal/PayPal-PHP-SDK/ Это сэкономит вам много работы. –

ответ

2

я смог его обработать, изменив $ заголовков строку:

заголовки

$ = массив ("Content-Type: применение/JSON »,« Авторизация: носитель ». $ AccessToken);

+0

Это невероятно, это сработало. Есть ли причина, почему порядок заголовков имеет значение в php и не имеет значения в .NET? –

+0

Я получаю ту же ошибку в java. Когда я перезапускаю сервер, генерируется новый токен доступа. – viper