Подтвердить что ты не робот

Кнопка PayPal с параметром 'min_amount' AND 'set_customer_limit'

Я создал не размещенную PayPal-Button с текстовым вводом, чтобы пользователи определяли сумму, которую нужно заплатить. Это кнопка подписки.

Теперь проблема в том, что должна быть минимальная сумма для оплаты, скажем 101 (CHF - швейцарские франки).

В соответствии с документами HTML-переменные PayPal у меня есть возможность добавить следующие скрытые входы в мою форму, чтобы заставить ее работать.

  • set_customer_limit со значением max_limit_own
  • min_amount со значением 101

Работает set_customer_limit, но не min_amount. Любая сумма принимается.

Я открыл билет при технической поддержке, но до сих пор не ответил.

Здесь моя форма:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
    <input type="hidden" name="cmd" value="_xclick-subscriptions">
    <!-- //... -->
    <input type="hidden" name="cancel_return" value="mydomain.com/cancel">
    <input type="hidden" name="return" value="mydomain.com/paid">
    <input type="hidden" name="token" value="<?php echo $token; ?>">
    <input type="hidden" name="src" value="1">
    <input type="text" name="a3" value="101.00">
    <input type="hidden" name="p3" value="1">
    <input type="hidden" name="t3" value="Y">
    <input type="hidden" name="currency_code" value="CHF">
    <input type="hidden" name="bn" value="PP-SubscriptionsBF:btn_subscribeCC_LG.gif:NonHostedGuest">
<!-- the concerned inputs -->
    <input type="hidden" name="set_customer_limit" value="max_limit_own">
    <input type="hidden" name="min_amount" value="101">
<!-- ---- -->
    <input type="image" src="https://www.paypalobjects.com/de_DE/CH/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="Jetzt einfach, schnell und sicher online bezahlen – mit PayPal.">
    <img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1">
</form>

На данный момент я просто проверяю минимальную сумму с помощью JavaScript, который не очень безопасен...


ИЗМЕНИТЬ

В качестве идеи я мог бы реализовать другую форму (отправить ее AJAX, onchange, onkeyup, что угодно), которая устанавливает минимальную сумму, указанную пользователем перед формой PayPal, и затем помещает ее в вход PayPal (устанавливается для скрытия снова):

<input type="hidden" name="a3" value="<?php echo $_POST['pre_min_amount'] ?>">

Таким образом, я могу проверить минимальную сумму с помощью PhP, прежде чем отправлять форму PayPal. Но это не кажется мне чистым способом. Действительно рад, если кто-нибудь может дать мне подсказку!

4b9b3361

Ответ 1

Ответ технической поддержки PayPal: Нет, это невозможно!

(Дата ответа была 05/02/2015). Надеюсь, это будет возможно в будущем. Если да, напишите свой ответ!


Я бы действительно предлагал использовать API PayPal для такого рода вещей (включая создание учетной записи разработчика, прохождение через документы и т.д.).

Итак, это "решение" - это быстрое и грязное обходное решение.


Сначала добавьте небольшую форму (назовем ее min_amount -form на данный момент) на страницу (сообщив пользователю, что он должен сначала установить сумму):

<form id="min_amount" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
    <input type="text" id="pre_min_amount" name="pre_min_amount" value="101">
    <input type="submit" value="Set min. Amount">
</form>

Затем добавьте всю форму PayPal к переменной PHP с NowDoc и добавьте опубликованное значение из min_amount -form в a3 input:

$min_amount = 0;
$payPalForm = <<<SOME
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
    <!-- //... -->
    <input type="hidden" name="a3" value="$min_amount">
</form>
SOME;

После отправки проверьте, соответствует ли минимальная сумма, а затем отображает только форму PayPal:

if (isset($_POST['pre_min_amount']) && is_numeric($_POST['pre_min_amount']) && floatval($_POST['pre_min_amount']) >= 101) {
    $min_amount = htmlspecialchars($_POST['pre_min_amount']);
    echo $payPalForm;
}

Как я уже сказал, он быстрый и грязный (для этого проекта больше нет времени), но вы гарантируете проверку минимальной суммы на стороне сервера, а не только на Javascript. Вы также можете отправить min_amount -form с помощью вызова AJAX, но тогда возврат этого вызова выполняется на стороне клиента, что также не является безопасным. (Конечно, вы также можете)

Кстати, я не горжусь этим решением, но иногда жизнь программистов сложная, и я уверен, что все, что вам нужно, - это код q & d каким-то образом, где-то... -)...


Обновление: 08/05/2015

Все зависит от страны, в которой зарегистрирована соответствующая учетная запись. Полные услуги, гарантированные PayPal только в США и Канаде.