2015-10-06 1 views
0

У меня есть вопрос относительно кнопки php. Я хочу сделать динамичную кнопку покупки с PayPal. Кнопка, в которую я могу передать свои пользовательские переменные. Единственный способ, которым я знаю, как это сделать через paypal форму.Кнопка PHP, обрабатывается в php-файле, а затем перенаправляется на другую страницу

<form action="https://www.paypal.com/cgi-bin/webscr" method="post"> 
<input type="hidden" name="cmd" value="_xclick"> 
<input type="hidden" name="business" value="[email protected]"> 
<input type="hidden" name="item_name" value="my product"> 
<input type="hidden" name="item_number" value="12345"> 
<input type="hidden" name="amount" value="9.99"> 
<input type="hidden" name="no_note" value="1"> 
<input type="hidden" name="currency_code" value="USD"> 
<input type="hidden" name="bn" value="PP-BuyNowBF"> 
<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but23.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!"> 
<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"> 
</form> 

Но значение суммы, указанная выше, может быть легко изменено. Поэтому вместо этого я хочу иметь только кнопку в html и все обрабатывать через php-файл. Когда пользователь нажал кнопку, процесс вычисления цены произойдет в файле php, а затем перенаправьте пользователя на paypal, где они могут заплатить за элемент. Таким образом, цена не может быть подделана. Может ли кто-нибудь сказать мне, возможно ли это сделать? или мне нужно динамически шифровать кнопку с помощью openssl? или есть другой способ?

+0

Фактически, не имеет значения, кто-то вмешивается со значением на кнопку, если вы проверите значение в обратном вызове PayPal (обратный URL). –

+0

Вам нужен идентификатор заказа или идентификатор транзакции. В принципе, у вас есть все ваши другие значения в вашем сеансе или БД и используйте идентификатор, чтобы иметь возможность ссылаться на значения. Когда пользователи проверяют, вам может потребоваться выполнить некоторые действия cURL, чтобы вы предоставили все данные API-интерфейсу PayPal, как это делает форма, но без размещения контента в браузере. – Twisty

ответ

2

Вместо отправки непосредственно на PayPal вы можете собрать всю серверную часть данных и использовать cURL для отправки данных в PayPal. Форма будет выглядеть следующим образом:

<form action="confirm.php" method="post"> 
    <input type="hidden" name="business" value="[email protected]"> 
    <input type="hidden" name="item_number" value="12345"> 
    <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but23.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!"> 
    <img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"> 
</form> 

Тогда confirm.php сделает несколько вещей. Посмотрите цену, рассчитать общее количество и т. Д.

<?php 
$bizName = isset($_POST['business']):$_POST['business']:""; 
$itemNumber = isset($_POST['item_number'])?intval($_POST['item_number']):""; 

// Lookup details for the Item, purchase, and collect them into an array maybe 
$itemDetails = array(
    "cmd" => "_xclick", 
    "amount" => $itemPrice, // Get from DB 
    "no_note" => 1, 
    "currency_code" => "USD", 
    "bn" => "PP-BuyNowBF", 
    "business" => $bizName, 
    "item_name" => $itemName, // Get from DB 
    "item_number" => $itemNumber 
); 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://www.paypal.com/cgi-bin/webscr"); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($itemDetails)); 
// receive server response ... 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$svr_out = curl_exec ($ch); 
curl_close ($ch); 
// Do something with $svr_out, maybe display it, or if it's a redirect, redirect the user in turn. 
?> 

Это не проверено и является скорее шаблоном, чтобы вы начали. Я уверен, что ваш сайт более сложный, и вы могли бы с этим справиться. Это всего лишь пример того, что вы могли бы сделать.

+0

Спасибо вам большое! –

Смежные вопросы