Omnipay / Paypal Gateway — транзакция отображается как успешная, тогда как учетная запись Paypal Sandbox не показывает задолженность / кредит транзакции

1) Я какое-то время пытаюсь заставить Omnipay/Paypal работать. Моя проблема в том, что я получаю «ACK = Success», но при входе в тестовые учетные записи Sandbox ни покупатель, ни продавец не показывают транзакцию как забронированную.

2) У меня также возникло ощущение, что не все API-интерфейсы корректно переносятся в Paypal (например, название бренда правильно отображается с использованием библиотеки Angell, но с Omnipay оно не принимает переменную.

Кто может помочь по этим двум вопросам.? - Смотрите мой код ниже. Я проверил другие статьи здесь, они не решают мою проблему.

<?php
//
// Input Variables
//


// Config
$domain = "http://localhost";
$directory = "http://localhost/omnipay/";
$returnURL = $directory."success.php";      
$cancelURL = $directory."cancel.php";   
$landingpage = "Billing";                                               

$brandname = "TEST COMPANY";;   
$customerservicenumber  = "";

// Purchase Data
$invoiceNumber = "0000200202023939";        
$currencyCode = "USD";

// PRODUCT DATA 

$subscriptionName = "XXX";                          
$subscriptionDesc = "ZZZ";  
$subscriptionAmt = "5.00";                      



require 'vendor/autoload.php';

use Omnipay\Omnipay;


$gateway = Omnipay::create('PayPal_Express');
$gateway->setUsername('XXX');
$gateway->setPassword('XXX');
$gateway->setSignature('XXX');
$gateway->setTestMode(true);

$response = $gateway->purchase(
    array(
        // Settings
        'brandname' =>  '',
            'customerservicenumber'=> '',           
    'cancelURL' =>  $cancelURL,
    'returnURL' =>  $returnURL,
            'reqconfirmshipping' => '0',
            'noshipping' => '1',                            

    'allownote' =>  '0',    

    // Buyer data
    'email' =>  $email,                         
    'description'=> $subscriptionDesc,
    'amount'=>  $subscriptionAmt,
    'currency'=>    $currencyCode,
     )  
)->send();

$response->redirect();

?>

success.php — тот же скрипт, за исключением конца

....

)->send();
$data = $response->getData();

//echo '<pre>'; print_r($data);

if($data['ACK'] == "Success"){
echo "ACK = Success!!!!!!";
}
?>

Как я уже сказал, я всегда получал ACK = Success в конце, но суммы не вычитаются из учетных записей пользователей Sandbox. Значит что-то не так. Есть идеи?


person Plugins and Snippets    schedule 01.03.2014    source источник
comment
Вы получаете ACK=Success для какого вызова API? Взгляните на METHOD и PAYMENTSTATUS ответа. Ответ (если это действительно DoExpressCheckoutPayment) также должен включать идентификатор транзакции.   -  person Robert    schedule 02.03.2014


Ответы (1)


Похоже, вы не завершаете покупку. Ваш success.php должен иметь что-то вроде:

$response = $gateway->completePurchase($params)->send();

Прежде чем перенаправить в Paypal, сохраните параметры транзакции в переменной сеанса, а затем используйте их для завершения покупки, когда Paypal вернется. Подробнее см. в примере кода: https://github.com/omnipay/example/blob/master/index.php#L181

person beech    schedule 05.03.2014