Ошибка платежного потока 52: недостаточно прав для выполнения транзакции в тестовом режиме

Я пытаюсь настроить приложение Payflow Link в тестовом режиме на codeigniter. Я делаю это с помощью библиотеки классов Angell EYE PHP CodeIgniter для PayPal.

Я настроил свою учетную запись разработчика и добавил пользователя типа Business-Pro и пользователя типа Personal.

Я создал учетную запись на manager.payflow.com и добавил пользователя с ролью "API_FULL_TRANSACTIONS".

Теперь вот мой файл /application/config/paypal.php:

<?php  
    if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    $config['Sandbox'] = TRUE;
    $config['APIVersion'] = '98.0';
    $config['APIUsername'] = $config['Sandbox'] ? '/*here goes Business user    username from sandbox*/' : '';
    $config['APIPassword'] = $config['Sandbox'] ? '/*here goes Business user password*/' : '';
    $config['APISignature'] = $config['Sandbox'] ? '/*here goes Business user API signature*/' : '';

    $config['PayFlowUsername'] = $config['Sandbox'] ? '/*here goes username of a user with API_FULL TRANSACTIONS role on manager.paypal.com*/' : '';
    $config['PayFlowPassword'] = $config['Sandbox'] ? '/*here goes password of a user with API_FULL TRANSACTIONS role on manager.paypal.com*/' : '';
    $config['PayFlowVendor'] = $config['Sandbox'] ? '/*here goes login to manager.paypal.com*/' : '';

    $config['PayFlowPartner'] = $config['Sandbox'] ? 'PayPal' : '';
    $config['ApplicationID'] = $config['Sandbox'] ? '' : 'PRODUCTION_APP_ID_GOES_HERE';
    $config['DeveloperEmailAccount'] = '/*my email at developer.paypal.com*/';
    $config['DeviceID'] = '';

Далее я запускаю функцию в контроллере /application/controllers/payflow.php:

function Process_transaction_demo()
{
    $PayPalRequestData = array(
        'tender'=>'P', //also tried this with 'C'
        'trxtype'=>'S',
        'acct'=>'/*here goes card number for Personal type sandbox acct*/',
        'expdate'=>'0419', // as in sandbox Personal acct settings
        'amt'=>'10.00',
        'dutyamt'=>'',
        'freightamt'=>'5.00',
        'taxamt'=>'2.50', 
        'taxexempt'=>'',
        'comment1'=>'This is a test!',
        'comment2'=>'This is only a test!',
        'cvv2'=>'123',
        'recurring'=>'',
        'swipe'=>'',
        'orderid'=>'',
        'billtoemail'=>'', // as in sandbox Personal acct settings
        'billtophonenum'=>'816-555-5555',
        'billtofirstname'=>'Tester',
        'billtomiddlename'=>''
        'billtolastname'=>'Testerson',
        'billtostreet'=>'123 Test Ave.',
        'billtocity'=>'Kansas City',
        'billtostate'=>'MO',
        'billtozip'=>'64111',
        'billtocountry'=>'US',
        'shiptofirstname'=>'Tester',
        'shiptomiddlename'=>'',
        'shiptolastname'=>'Testerson',
        'shiptostreet'=>'123 Test Ave.',
        'shiptocity'=>'Kansas City',
        'shiptostate'=>'MO',
        'shiptozip'=>'64111',
        'shiptocountry'=>'US',
        'origid'=>'',
        'custref'=>'',              
        'custcode'=>'',              
        'custip'=>'',                
        'invnum'=>'',               
        'ponum'=>'',                 
        'starttime'=>'',            
        'endtime'=>'',              
        'securetoken'=>'',          
        'partialauth'=>'',              
        'authcode'=>''          
        );

    $PayPalResult = $this->paypal_payflow->ProcessTransaction($PayPalRequestData);

    if(!$this->paypal_payflow->APICallSuccessful($PayPalResult['RESULT']))
    {
        // Error
        echo '<pre />';
        print_r($PayPalResult);
    }
    else
    {
        // Successful call.  Load view or whatever you need to do here.
        echo '<pre />';
        print_r($PayPalResult);
    }
}

И ответ я получаю это:

Array
(
    [RESULT] => 52
    [PNREF] => A7P06B2A9D83
    [RESPMSG] => Insufficient permissions to perform transaction
    [RAWREQUEST] => /*request details*/
    [RAWRESPONSE] => RESULT=52&PNREF=A7P06B2A9D83&RESPMSG=Insufficient permissions to perform transaction
)

Почему он продолжает возвращать эту ошибку? Разрешение для пользователя на manager.paypal.com установлено в "API_FULL_TRASACTIONS" (также пробовали с "ADMIN", "ADMIN_TRANSACTIONS", "FULL_TRASACTIONS" - все дают одинаковый ответ).

Какой должна быть конфигурация для обработки тестовых платежей?

1 ответ

Решение

Итак, вы упомянули PayFlow Link в первом абзаце, но это совсем не то, что Express Checkout или Payments Pro, как вы думаете, здесь вы пытаетесь.

Если вы используете TENDER=C и получаете эту ошибку, скорее всего, это означает, что вы не включили Payments Pro в своей учетной записи PayPal. Вы упомянули, что делаете, но можете ли вы подтвердить, что он действительно активирован и настроен на тестовый режим? При входе на сайт PayPal Manager вы должны увидеть небольшую таблицу со статусом учетной записи на странице обзора.

Если вы используете P, чтобы попытаться настроить поток Express Checkout, вам необходимо убедиться, что вы удалили номер кредитной карты из запроса.

В качестве примечания: в приведенном здесь примере кода отсутствует запятая в массиве $ PayPalRequestData после параметра billtomiddlename. Я должен был это исправить, прежде чем он вообще запустится.

После исправления я смог успешно выполнить ваш пример запроса с номером тестовой кредитной карты из документации PayFlow.

Array
(
    [RESULT] => 0
    [PNREF] => A10M6CE2A65B
    [RESPMSG] => Approved
    [AUTHCODE] => 000041
    [AVSADDR] => Y
    [AVSZIP] => N
    [CVV2MATCH] => Y
    [PROCAVS] => A
    [PROCCVV2] => M
    [TRANSTIME] => 2014-04-23 01:43:58
    [BILLTOFIRSTNAME] => Tester
    [BILLTOLASTNAME] => Testerson
    [AMT] => 10.00
    [ACCT] => 1881
    [EXPDATE] => 0419
    [CARDTYPE] => 0
    [IAVS] => N
    [RAWREQUEST] => BUTTONSOURCE[18]=AngellEYE_PHPClass&VERBOSITY[4]=HIGH&USER[6]=****&VENDOR[9]=****&PARTNER[6]=PayPal&PWD[8]=****&TENDER[1]=C&TRXTYPE[1]=S&ACCT[16]=4012888888881881&EXPDATE[4]=0419&AMT[5]=10.00&FREIGHTAMT[4]=5.00&TAXAMT[4]=2.50&COMMENT1[15]=This is a test!&COMMENT2[20]=This is only a test!&CVV2[3]=123&BILLTOPHONENUM[12]=816-555-5555&BILLTOFIRSTNAME[6]=Tester&BILLTOLASTNAME[9]=Testerson&BILLTOSTREET[13]=123 Test Ave.&BILLTOCITY[11]=Kansas City&BILLTOSTATE[2]=MO&BILLTOZIP[5]=64111&BILLTOCOUNTRY[2]=US&SHIPTOFIRSTNAME[6]=Tester&SHIPTOLASTNAME[9]=Testerson&SHIPTOSTREET[13]=123 Test Ave.&SHIPTOCITY[11]=Kansas City&SHIPTOSTATE[2]=MO&SHIPTOZIP[5]=64111&SHIPTOCOUNTRY[2]=US
    [RAWRESPONSE] => RESULT=0&PNREF=A10M6CE2A65B&RESPMSG=Approved&AUTHCODE=000041&AVSADDR=Y&AVSZIP=N&CVV2MATCH=Y&PROCAVS=A&PROCCVV2=M&TRANSTIME=2014-04-23 01:43:58&BILLTOFIRSTNAME=Tester&BILLTOLASTNAME=Testerson&AMT=10.00&ACCT=1881&EXPDATE=0419&CARDTYPE=0&IAVS=N
)

Я также запустил его с TENDER=P и получил ожидаемую ошибку, что тип тендера не включен в моем аккаунте.

Поэтому я бы дважды проверил ваши учетные данные API и, возможно, даже попытался бы переключить его на FULL_TRANSACTIONS и посмотреть, поможет ли это.

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