Без подробностей. Заметка для себя.
Приложение регистрируем тут: https://develop...
<?php define('PAYPAL_CLIENT_ID', 'XXX'); define('PAYPAL_CLIENT_SECRET', 'YYY'); define('PAYPAL_API_URL', 'https://api.paypal.com/v1'); ?>
<?php session_start(); include($_SERVER['DOCUMENT_ROOT'] . '<#_url#>-c.php'); // получение аксес токена $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, PAYPAL_API_URL . "/oauth2/token"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_HTTPHEADER, array( "Accept: application/json", "Accept-Language: ru_RU" )); curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials"); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, PAYPAL_CLIENT_ID . ":" . PAYPAL_CLIENT_SECRET); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $accessTokenData = curl_exec($ch); curl_close($ch); $accessTokenData = json_decode($accessTokenData, true); // отправка запроса на платеж if(isset($accessTokenData['access_token'])) { $saleData = json_encode( array( "intent" => "sale", "redirect_urls" => array( "return_url" => "http://digitorum.ru/<#_url#>-return/", "cancel_url" => "http://digitorum.ru/<#_url#>-cancel/" ), "payer" => array( "payment_method" => "paypal" ), "transactions" => array( array( "amount" => array( "total" => "1", "currency" => "RUB" ), "description" => "Тестовый платеж в 1 рубль." ) ) ) ); // получение ответа $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, PAYPAL_API_URL . "/v1/payments/payment"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_HTTPHEADER, array( "Content-Type: application/json", "Authorization: Bearer " . $accessTokenData['access_token'] )); curl_setopt($ch, CURLOPT_POSTFIELDS, $saleData); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $saleReturnedData = curl_exec($ch); curl_close($ch); $saleReturnedData = json_decode($saleReturnedData, true); // запоминаем в сессию все необходимые данные для подтверждения платежа $_SESSION['PAYPAL_ACCESS_TOKEN'] = $accessTokenData['access_token']; $_SESSION['PAYPAL_PAY_ID'] = $saleReturnedData['id']; // перенаправляем на паэйпал if(isset($saleReturnedData['links'])) { foreach($saleReturnedData['links'] as $link) { if($link['rel'] == 'approval_url') { header('Location: ' . $link['href']); exit(); } } } } print "SOMETHING WENT WRONG!"; ?>
<?php session_start(); require($_SERVER['DOCUMENT_ROOT'] . '<#_url#>-c.php'); if(!isset($_SESSION['PAYPAL_ACCESS_TOKEN']) && isset($_SESSION['PAYPAL_PAY_ID'])) { die("NO ACCESSTOKEN!!!"); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, PAYPAL_API_URL . "/v1/payments/payment/" . $_SESSION['PAYPAL_PAY_ID'] . "/execute/"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_HTTPHEADER, array( "Content-Type: application/json", "Authorization: Bearer " . $_SESSION['PAYPAL_ACCESS_TOKEN'] )); curl_setopt($ch, CURLOPT_POSTFIELDS, '{ "payer_id" : "' . $_GET['PayerID'] . '" }'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $approveData = curl_exec($ch); curl_close($ch); $approveData = json_decode($approveData, true); print_r($approveData); ?>