Omnipay / Paypal Gateway - транзакция отображается как успешная, в то время как учетная запись Paypal Sandbox не показывает долг / кредит транзакции
1) Я некоторое время пытаюсь заставить Omnipay / Paypal работать. Моя проблема в том, что я получаю "ACK = Success", но при входе в тестовые аккаунты Sandbox ни покупатель, ни продавец не показывают транзакцию как забронированную.
2) У меня также возникло ощущение, что не все API правильно передаются в Paypal (например, Brandname правильно показывает библиотеку 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. Так что что-то не так. Любая идея?
1 ответ
Похоже, вы не завершаете покупку. Ваш success.php должен иметь что-то похожее на:
$response = $gateway->completePurchase($params)->send();
Прежде чем перенаправить в Paypal, сохраните параметры транзакции в переменной сеанса, а затем используйте их для завершения покупки после возврата Paypal. Проверьте пример кода для получения дополнительной информации: https://github.com/omnipay/example/blob/master/index.php