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, эти классы должны включаться автоматически.