Я недавно сделал это. Вы можете использовать кнопку PayPal xclick для отправки пользовательских данных (то есть цены и доставки) в PayPal. Затем клиент оплатит через PayPal и отправит мгновенное уведомление о платеже в файл на вашем сервере по вашему выбору, затем проверит данные с помощью IPN и обработает заказ так, как вам нравится.
<form action="https://secure.paypal.com/uk/cgi-bin/webscr" method="post" name="paypal" id="paypal">
<!-- Prepopulate the PayPal checkout page with customer details, -->
<input type="hidden" name="first_name" value="<?php echo Firstname?>">
<input type="hidden" name="last_name" value="<?php echo Lastname?>">
<input type="hidden" name="email" value="<?php echo Email?>">
<input type="hidden" name="address1" value="<?php echo Address?>">
<input type="hidden" name="address2" value="<?php echo Address2?>">
<input type="hidden" name="city" value="<?php echo City?>">
<input type="hidden" name="zip" value="<?php echo Postcode?>">
<input type="hidden" name="day_phone_a" value="">
<input type="hidden" name="day_phone_b" value="<?php echo Mobile?>">
<!-- We don't need to use _ext-enter anymore to prepopulate pages -->
<!-- cmd = _xclick will automatically pre populate pages -->
<!-- More information: https://www.x.com/docs/DOC-1332 -->
<input type="hidden" name="cmd" value="_xclick" />
<input type="hidden" name="business" value="paypal@email.com" />
<input type="hidden" name="cbt" value="Return to Your Business Name" />
<input type="hidden" name="currency_code" value="GBP" />
<!-- Allow the customer to enter the desired quantity -->
<input type="hidden" name="quantity" value="1" />
<input type="hidden" name="item_name" value="Name of Item" />
<!-- Custom value you want to send and process back in the IPN -->
<input type="hidden" name="custom" value="<?php echo session_id().?>" />
<input type="hidden" name="shipping" value="<?php echo $shipping_price; ?>" />
<input type="hidden" name="invoice" value="<?php echo $invoice_id ?>" />
<input type="hidden" name="amount" value="<?php echo $total_order_price; ?>" />
<input type="hidden" name="return" value="http://<?php echo $_SERVER['SERVER_NAME']?>/shop/paypal/thankyou"/>
<input type="hidden" name="cancel_return" value="http://<?php echo $_SERVER['SERVER_NAME']?>/shop/paypal/cancelled" />
<!-- Where to send the PayPal IPN to. -->
<input type="hidden" name="notify_url" value="http://<?php echo $_SERVER['SERVER_NAME']?>/shop/paypal/process" />
</form>
После того, как клиент оплатит, PayPal уведомит ваш сценарий, и вы сможете сделать все, что захотите, для обработки успешного платежа.
Чтобы обработать платеж в вашем PHP-файле: Ссылка для разработчиков Paypal
Проверка
* NEVER TRUST ANY USER SUBMITTED DATA *
Со всеми транзакциями PayPal пользователи могут редактировать данные в форме и отправлять нежелательные или неверные данные. Вы должны сохранить все свои переменные (например, идентификатор, сумму, доставку и т. Д.) В базе данных и проверить, когда запрос IPN получен обратно от PayPal (чтобы убедиться, что они совпадают).
Обращайтесь с транзакцией PayPal с той же безопасностью, что и с данными SQL, избегайте всех переменных, никогда не доверяйте предоставленным пользователем данным и всегда проверяйте ваши данные.