Итак, после долгих поисков я наконец смог успешно получить свой токен доступа Paypal с помощью PHP cURL. Теперь я пытаюсь получить сведения о транзакции на основе идентификатора транзакции. До сих пор я думаю, что получил правильный URL-адрес вызова, однако я думаю, что форматирование данных моего поста может быть неправильным. Используемый код находится ниже:
<?php
//this function is for handling post call requests
function make_post_call($url, $postdata) {
global $token;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl, CURLOPT_SSLVERSION , 6);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer '.$token,
'Accept: application/json',
'Content-Type: application/json'
));
curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
$response = curl_exec( $curl );
print_r($response); //IM NOW RECEIVING OUTPUT, however symbols are now being replaced by placeholders such as '%40', how can i prevent this?
if (empty($response)) {
die(curl_error($curl)); //close due to error
curl_close($curl);
} else {
$info = curl_getinfo($curl);
echo "Time took: " . $info['total_time']*1000 . "ms\n";
curl_close($curl); // close cURL handler
if($info['http_code'] != 200 && $info['http_code'] != 201 ) {
echo "Received error: " . $info['http_code']. "\n";
echo "Raw response:".$response."\n";
die();
}
}
// Convert the result from JSON format to a PHP array
$jsonResponse = json_decode($response, TRUE);
return $jsonResponse;
}
$token = get_access_token($url,$postArgs); //works and returns a valid access token
//This is the URL for the call
$url = 'https://api-3t.sandbox.paypal.com/nvp';
//This is the data to be sent in the call
$postdata = array(
'USER' => 'peoplesroewrwwsg_api1.outlook.com',
'PWD' => 'KR2TVKHGDSHSNDJ6E2',
'SIGNATURE' => 'AFcWxV21C7fdFHSGGSDGD51G0BJYUWOCSyjUAKPPGs',
'METHOD' => 'GetTransactionDetails',
'VERSION' => '123',
'TransactionID' => '1RE953245246192109'
);
$postdata = http_build_query($postdata);
//$postdata = json_encode($postdata); //Is this the correct way of formatting?
$transactionInfo = make_post_call($url, $postdata); //get transaction details NOT WORKING
print_r($transactionInfo); //does not print anything
?>
я не получаю никаких ошибок cURL, поэтому я предполагаю, что проблема либо в данных, которые я отправляю, либо в том, как я их форматирую.
Краткое руководство по PayPal о том, как это сделать, можно найти здесь-> https://developer.paypal.com/docs/classic/express-checkout/gs_transaction/#tryit Однако он написан в cURL, а не в расширении PHP cURL, поэтому я не уверен, правильно ли отправляю данные.
Детали Paypal GetTransactionDetails здесь-> https://developer.paypal.com/docs/classic/api/merchant/GetTransactionDetails_API_Operation_NVP/
Любые рекомендации относительно форматирования данных или любые другие предложения приветствуются!
-------------------------------------------------- -------ОБНОВИТЬ!----------------------------------------- ------------------
Теперь, когда я печатаю результат, как только выполняется инструкция cURL, я получаю такую информацию:
RECEIVERID=GN7SRQEGEREASDV9BQU&EMAIL=peoplesrobotiblabal%40outlook%2ecom&PAYERID=JC5RWUUKWGDFYJYY&PAYERSTATUS=verified&COUNTRYCODE=US&SHIPTONAME=Jane%20Smurf...
Как видно, некоторые символы, такие как точки, заменяются заполнителями, такими как «% 40». Можно ли определить источник этого? это потому, что я ожидаю ответа JSON?
http_build_query()
для создания данных публикации. А с чего вы взяли, что ответ будет в формате JSON? - person frz3993   schedule 17.05.2016http_build_query()
и добавил оператор печати, который печатал результат cURL, как только он был получен внутри функции, и теперь я получаю правильный вывод! однако некоторые символы заменяются заполнителями, такими как «% 40» - person DiscreteTomatoes   schedule 17.05.2016print_r
и просто выполнитьvar_dump($POST)
после того, как сделаете запрос на завивку. Пожалуйста, обновите вопрос с результатом. Я думаю, что API сделает запрос обратной почты. - person frz3993   schedule 17.05.2016var_dump($response)
приводит к той же строке, что и представленная выше, аvar_dump($_POST)
приводит к->array(0) { }
РЕДАКТИРОВАТЬ: также извините, если я не понимаю вас полностью, например, я не уверен, что ответный почтовый запрос - person DiscreteTomatoes   schedule 17.05.2016parse_str($response, $response_array)
. Где$response_array
будет содержать ответ в виде элементов массива. - person frz3993   schedule 17.05.2016preg_replace()
, чтобы повторно ввести правильные символы, это правда? РЕДАКТИРОВАТЬ: Да, это работает хорошо! символы были возвращены, и все находится в хорошем ассоциативном массиве! frz3993 Я бы с радостью принял ваш ответ, если бы вы разместили его с информацией, которую вы разместили в этих комментариях! - person DiscreteTomatoes   schedule 17.05.2016