2016-10-26 3 views
1

Я работаю над разрешением PayPal Direct Credit Card на моем сайте. Я загрузил PayPal PHP RESTful SDK отсюда https://github.com/paypal/PayPal-PHP-SDK/releases, и я следую инструкциям по настройке платежа по прямой кредитной карте отсюда ... https://devtools-paypal.com/guide/pay_creditcard/php?interactive=ON&env=sandbox.PHP - PayPal RESTful API SDK

Я в тупике. SDK имеет структуру папок, как следующее:

composer->subfolders... 
paypal->subfolders... 
psr->subfolders... 
autoload.php 

Так я включаю файл autoload.php в моем PHP скрипт, и когда я пытаюсь выполнить первый шаг в учебнике, который является следующий бит кода

$paypal = new OAuthTokenCredential($clientId, $clientSecret, $sdkConfig); 

Я получаю Fatal error: Class 'OAuthTokenCredential' not found

Однако, если вместо этого я использую следующий код ...

$paypal = new \PayPal\Auth\OAuthTokenCredential($clientId, $clientSecret, $sdkConfig); 

я получаю объект, возвратный канал, который выглядит следующим образом:

PayPal\Auth\OAuthTokenCredential Object 
(
    [clientId:PayPal\Auth\OAuthTokenCredential:private] => CLIENT_ID 
    [clientSecret:PayPal\Auth\OAuthTokenCredential:private] => CLIENT_SECRET 
    [accessToken:PayPal\Auth\OAuthTokenCredential:private] => 
    [tokenExpiresIn:PayPal\Auth\OAuthTokenCredential:private] => 
    [tokenCreateTime:PayPal\Auth\OAuthTokenCredential:private] => 
    [cipher:PayPal\Auth\OAuthTokenCredential:private] => PayPal\Security\Cipher Object 
     (
      [secretKey:PayPal\Security\Cipher:private] => CLIENT_SECRET 
     ) 

    [_propMap:PayPal\Common\PayPalModel:private] => Array 
     (
     ) 

) 

Но accessToken, который является то, что мне нужно для шага 2 в учебнике пусто. Что, черт возьми, я делаю неправильно? Может ли кто-нибудь дать прямой шаг за шагом руководство для этого? Есть ли один доступный, который я не нахожу?

Спасибо!

ответ

1

Учебник, с которым вы связались, говорит, что это для PHP, но на самом деле это не так. This one on PayPal's PHP SDK github is more directly for PHP. Вот код с этой страницы в случае, если он уходит:

<?php 
// 1. Autoload the SDK Package. This will include all the files 
// and classes to your autoloader 
// Used for composer based installation 
require __DIR__ . '/vendor/autoload.php'; 
// Use below for direct download installation 
// require __DIR__ . '/PayPal-PHP-SDK/autoload.php'; 

$apiContext = new \PayPal\Rest\ApiContext(
    new \PayPal\Auth\OAuthTokenCredential(
    'AYSq3RDGsmBLJE-otTkBtM-jBRd1TCQwFf9RGfwddNXWz0uFU9ztymylOhRS',  // ClientID 
    'EGnHDxD_qRPdaLdZz8iCr8N7_MzF-YHPTkjs6NKYQvQSBngp4PTTVWkPZRbL'  // ClientSecret 
) 
); 

// Save Credit Card to vault and then read it back 
$creditCard = new \PayPal\Api\CreditCard(); 
$creditCard->setType("visa") 
    ->setNumber("4417119669820331") 
    ->setExpireMonth("11") 
    ->setExpireYear("2019") 
    ->setCvv2("012") 
    ->setFirstName("Joe") 
    ->setLastName("Shopper"); 

try { 
    $creditCard->create($apiContext); 
    echo $creditCard; 
} 
catch (\PayPal\Exception\PayPalConnectionException $ex) { 
    // This will print the detailed information on the exception. 
    //REALLY HELPFUL FOR DEBUGGING 
    echo $ex->getData(); 
} 
+0

Спасибо за этот код. Я обновил его, но я все равно не возвращаю значения в объект $ apiContext для accessToken, tokenExpiresIn и tokenCreateTime. Кроме того, вызов $ creditCard-> create ($ apiContext) терпит неудачу с ошибкой, указывающей на ошибку: 14077410: Подпрограммы SSL: SSL23_GET_SERVER_HELLO: sslv3 ошибка установления связи с уведомлением – Phil

+0

Похоже, что ошибка, которую я получаю, связана с требованием TLS 1.2. Я на PHP 5.4.7 - обновление до 5.6, чтобы узнать, устраняет ли это проблему. Спасибо! – Phil

+0

Ах да, это звучит как проблема. Рад помочь. – craigts