2015-04-29 2 views
1

Я в первый раз при создании платежного запроса на оплату. Я пытаюсь настроить оплату книги. Данные о книге, такие как цена, берутся из данных, хранящихся в книге в базе данных. Пользователь вводит только идентификатор книги. В идеале эти данные превращаются в платеж в PayPal.отправив запрос на оплату - пустой экран возврата

Когда я отправляю форму, я просто получаю пустой экран. В идеале, я хотел бы, чтобы платеж был настроен, тогда пользователь может подтвердить покупку на веб-сайте. Может ли кто-нибудь помочь мне с попыткой устранить пустой экран?

Кодекс:

try { 
     $dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_USERNAME, DB_USERNAME, DB_PASSWORD); 
} catch (PDOException $e) { 
    print "Error!: " . $e->getMessage() . "<br/>"; 
    die(); 
} 


    $book =$_GET["book_id"]; 
    $user =$_GET["user"]; 


$sth = $dbh->prepare("SELECT title, price FROM books2 WHERE b_id=$book"); 
$sth->bindParam(':title', $title); 
$sth->bindParam(':price', $price); 
$sth->execute(); 




$payer = new Payer(); 
$payer->setPaymentMethod("paypal"); 


$item1 = new Item(); 
$item1->setName($title) 
    ->setCurrency('USD') 
    ->setQuantity(1) 
    ->setPrice($price); 



$details = new Details(); 
$details->setShipping(1.2) 
->setTax(1.3) 
->setSubtotal(17.50); 




$transaction = new Transaction(); 
$transaction->setAmount($price) 
    ->setItemList($item1) 
    ->setDescription("Payment description") 
    ->setInvoiceNumber(uniqid()); 



$payment = new Payment(); 
$payment->setIntent("sale") 
    ->setPayer($user) 
    ->setRedirectUrls($redirectUrls) 
    ->setTransactions(array($transaction)); 

    $execution = new PaymentExecution(); 
$result = $payment->execute($execution, $apiContext); 


$request = clone $payment; 


try { 
    $payment->create($apiContext); 
} catch (Exception $ex) { 
    ResultPrinter::printError("Created Payment Using PayPal. Please visit the URL to Approve.", "Payment", null, $request, $ex); 
    exit(1); 
} 


$approvalUrl = $payment->getApprovalLink(); 

ResultPrinter::printResult("Setting up payment using Paypal. Please visit the URL to Approve.", "Payment", "<a href='$approvalUrl' >$approvalUrl</a>", $request, $payment); 

return $payment; 
+1

У вас есть сообщение об ошибке, включенное для вашего кода? – Maximus2012

+0

У меня его не было нет ... При добавлении отчетов об ошибках появляется следующая ошибка. 'Fatal error: Uncaught exception 'InvalidArgumentException' с сообщением 'Id не может быть null'' – stark

+0

Это похоже на допустимую ошибку. Возможно, вы захотите посмотреть в нее больше. Также попробуйте увидеть, какая часть вашего кода вызывает эту ошибку. – Maximus2012

ответ

0

После получения $ approvalUrl вам нужно перенаправлять их на URL-адрес PayPal. Было бы выглядеть примерно так.

$approvalUrl = $payment->getApprovalLink(); 
if(isset($approvalUrl)) { 
    header("Location: $approvalUrl"); 
    exit; 
} 
0

Необходимо удалить эти строки из кода. Сначала вы пытаетесь выполнить платеж, что неверно.

$execution = new PaymentExecution(); 
$result = $payment->execute($execution, $apiContext); 

Вот как поток для PayPal является:

  1. Создать Оплата с помощью $ payment-> создать() метод.
  2. Получить одобрение_url, выполнив шаги, предоставленные Кеном Джонсоном.
  3. Пользователь выполнит оплату, следуя веб-браузеру и примет оплату.
  4. Вы будете перенаправлены обратно на свой набор «redirect_url».
  5. Вы делаете GET on PaymentId, возвращенный из массива $ _GET []
  6. Выполните платеж, используя приведенный ниже код.

Вы можете следовать инструкциям, приведенным здесь, чтобы получить полное представление: http://localhost/paypal/PayPal-PHP-SDK/sample/index.php#0adf233ad486604d0b6df90c586fbdad

Кроме того, вы можете захотеть вернуть эти две строки, так как они просто для образца цели, и выбросит класс не найден исключения.

ResultPrinter::printError(
ResultPrinter::printResult(
Смежные вопросы