Paypal API звонит от имени третьей стороны

Я не могу найти, как сделать API-вызов с PayPal SDK от имени третьей стороны. Я нашел этот https://developer.paypal.com/docs/classic/permissions-service/integration-guide/PermissionsAbout/ и этот API разрешений PayPal, но я не видел никаких методов в Paypal permissions-sdk-php или остальных -api-sdk-php, чтобы сделать это. Кто-нибудь знает, как сделать вызов API с токеном доступа пользователя?

1 ответ

Я фактически задавал тот же вопрос. Но я, наконец, нашел ответ, посмотрев пример кода в JAVA SDK здесь.

Поскольку я использую PHP в своем коде, мне нужно просто преобразовать его, как показано ниже:

use PayPal\Auth\IPPThirdPartyAuthorization;
use PayPal\Auth\PPSignatureCredential;
use PayPal\Auth\PPTokenAuthorization;

require 'vendor/autoload.php';

$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 = null;
if ( ! empty( $data['token'] ) && ! empty( $data['tokenSecret'] ) ) {
    $thirdPartyAuth = new PPTokenAuthorization( $data['token'], $data['tokenSecret'] );
    $apiCredential = new PPSignatureCredential( 'jb-us-seller_api1.paypal.com', 
        'WX4WTU3S8MY44S7F', 'AFcWxV21C7fd0v3bYYYRCpSSRl31A7yDhhsPUU2XhtMoZXsWHFxu' );

    $apiCredential->setApplicationId( 'APP-80W284485P519543T' );
    $apiCredential->setThirdPartyAuthorization( $thirdPartyAuth );
}

$service = new PermissionsService( $config );
try {

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

    return $response;
} catch (Exception $ex) {}

Я надеюсь, что это помогает всем, у кого есть такая же проблема.

РЕДАКТИРОВАТЬ 1:

Спасибо @Alex за указание на это. Для классов в пространстве имен PayPal\Auth Пожалуйста, включите ядро ​​PayPal SDK, которое вы можете получить здесь. Если вы используете composer для использования PayPal Adaptive SDK, эти классы должны включаться автоматически.

Другие вопросы по тегам