Использование PayPal’s Permissions PHP SDK со сторонней авторизацией

Это для живого приложения, а не песочницы. Я пытаюсь использовать токен и секрет токена после вызова запроса GetAccessToken, чтобы иметь стороннюю авторизацию для вызовов API PayPal.

Прямо сейчас мой код немного запутан из-за того, что я просто пытаюсь проверить, используя их образцы, предоставленные в SDK. Он успешно получает токен и секрет токена с использованием токена верификатора и RequestPermission, но при использовании его для выполнения одного из вызовов perm, такого как GetBasicPersonalData, он возвращает эту ошибку:

Ошибка аутентификации. Учетные данные API неверны.

Вот код:

<?php
use PayPal\Service\PermissionsService;
use PayPal\Types\Common\RequestEnvelope;
use PayPal\Types\Perm\GetAccessTokenRequest;
use PayPal\Types\Perm\PersonalAttributeList;
use PayPal\Types\Perm\GetBasicPersonalData;
use PayPal\Types\Perm\GetBasicPersonalDataRequest;
use PayPal\Auth\IPPThirdPartyAuthorization;
use PayPal\Auth\PPSignatureCredential;
use PayPal\Auth\PPTokenAuthorization;
/********************************************
GetAccessTokenReceipt.php
Called by GetAccessToken.php

# GetAccessToken API
Use the GetAccessToken API operation to obtain an access token for a set of permissions.
This sample code uses Permissions PHP SDK to make API call
********************************************/
require_once('PPBootStrap.php');

$requestEnvelope = new RequestEnvelope();
$requestEnvelope->errorLanguage = "en_US";
$request = new GetAccessTokenRequest();
$request->requestEnvelope = $requestEnvelope;

/*
*  The request token from the response to RequestPermissions.
*/
$request->token = $_REQUEST['Requesttoken'];

/*
*  The verification code returned in the redirect from PayPal to the
return URL after `RequestPermissions` call
*/
$request->verifier = $_REQUEST['Verifier'];

/*
*  ## Creating service wrapper object
Creating service wrapper object to make API call and loading
Configuration::getAcctAndConfig() returns array that contains credential and config parameters
*/
$service = new PermissionsService(Configuration::getAcctAndConfig());
try {

/*
*  ## Making API call
Invoke the appropriate method corresponding to API in service
wrapper object
*/
$response = $service->GetAccessToken($request);
} catch (Exception $ex) {
require 'Error.php';
exit;
}

/* Display the API response back to the browser. */
$ack = strtoupper($response->responseEnvelope->ack);

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<head>
<title>GetAccessToken - Response</title>
</head>

<body>
<img src="https://devtools-paypal.com/image/bdg_payments_by_pp_2line.png"/>

<div id="request_form">
<center>
<h3>GetAccessToken</h3>
<br />
</center>

<?php
echo "<table>";
echo "<tr><td>Ack :</td><td><div id='Ack'>". $response->responseEnvelope->ack ."</div> </td></tr>";
echo "<tr><td>Token :</td><td><div id='Token'>". $response->token ."</div> </td></tr>";
echo "<tr><td>TokenSecret :</td><td><div id='TokenSecret'>". $response->tokenSecret ."</div> </td></tr>";
echo "</table>";

if ($ack == "SUCCESS") {
$requestEnvelope = new RequestEnvelope("en_US");
$attributeList = new PersonalAttributeList();
$attributeList->attribute = array(
'http://axschema.org/namePerson/first',
'http://axschema.org/namePerson/last',
'http://axschema.org/contact/email',
'http://axschema.org/contact/fullname',
'http://openid.net/schema/company/name',
'http://axschema.org/contact/country/home',
'https://www.paypal.com/webapps/auth/schema/payerID'
);

$request = new GetBasicPersonalDataRequest( $attributeList );
$request->requestEnvelope = $requestEnvelope;

$apiCredential = new PPSignatureCredential( '<snip>', '<snip>', '<snip>' );
$apiCredential->setApplicationId( '<snip>' );
$apiCredential->setThirdPartyAuthorization( new PPTokenAuthorization($response->token, $response->tokenSecret) );

$service = new PermissionsService( Configuration::getAcctAndConfig() );
try {

/*
*  ## Making API call
Invoke the appropriate method corresponding to API in service
wrapper object
*/
$response = $service->GetBasicPersonalData( $request, $apiCredential );

} catch (Exception $ex) {}
}

require_once 'ShowAllResponse.php';
?>
</div>
</body>
</html>

Этот код работает, удаляя следующую строку кода, но он просто даст мне мои личные данные из вызова PPSignatureCredential, а не от третьей стороны.

$apiCredential->setThirdPartyAuthorization( new PPTokenAuthorization($response->token, $response->tokenSecret) );

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]