Pregunta Botón de PayPal con 'min_amount' AND 'set_customer_limit'


He creado un no alojado Botón de PayPal con una entrada de texto para permitir a los usuarios definir una cantidad a pagar. Es un botón de suscripción.

Ahora el problema es que debe haber un monto mínimo para pagar, digamos 101 (CHF - francos suizos).

De acuerdo con los documentos de Variables HTML de PayPal Tengo la posibilidad de agregar los siguientes valores en entradas ocultas a mi formulario para que funcione.

  • set_customer_limit con un valor de max_limit_own
  • min_amount con un valor de 101

los set_customer_limit está funcionando, pero no el min_amount. Cualquier cantidad es aceptada

Abrí un boleto en el soporte técnico, pero no recibí respuesta hasta ahora.

Aquí está mi formulario:

<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>

Por el momento, solo valido la cantidad mínima con JavaScript, que no es realmente seguro ...


EDITAR

Como idea, podría implementar otro formulario (enviarlo por AJAX, onchange, onkeyup, lo que sea), que establece el monto mínimo otorgado por el usuario antes del formulario de PayPal y luego ponerlo en la entrada de PayPal (establecer en oculto nuevamente )

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

De esa manera podría validar la cantidad mínima con PhP, antes de enviar el formulario de PayPal. Pero eso no me parece una forma limpia. ¡Realmente me alegro si alguien pudiera darme una pista!


32
2018-05-04 08:33


origen


Respuestas:


La respuesta del soporte técnico de PayPal es: ¡No, no es posible! 

(La fecha de la respuesta fue el 02/05/2015) Con suerte, esto será posible en el futuro. Si es así, publique su respuesta!


Carné de identidad De Verdad sugerir usar el API de PayPal para este tipo de cosas (incluida la creación de una cuenta de desarrollador, el byte a través de los documentos, etc.).

Entonces, esta "solución" es una solución rápida y sucia.


Primero, agregue una forma pequeña (la llamo min_amount -formar por ahora) a la página (le dice al usuario que primero debe establecer el monto):

<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>

Luego, agregue el formulario completo de PayPal a una variable de PHP con NowDoc y agregue el valor publicado desde min_amount-formar al a3 entrada:

$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;

Después de enviar, verifique si el monto mínimo es verdadero y luego solo muestre el formulario de 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;
}

Como dije, es rápido y sucio (no hay más tiempo para este proyecto), pero se asegura de validar la cantidad mínima en el servidor, no solo con Javascript. También puede enviar el min_amount-formar con una llamada AJAX, pero luego el regreso de esta llamada se realiza en el lado del cliente, lo que tampoco es realmente seguro. (Claro que también puedes)

Por cierto, no estoy orgulloso de esta solución en absoluto, pero a veces, la vida de los programadores es difícil y estoy seguro de que todos los codificadores tenían que hacer algún tipo de código de q & d de alguna manera, en algún lugar; -) ...


Actualizar:  05/08/2015

Todo depende del país en el que se registra la cuenta correspondiente. Servicios completos garantizados por PayPal solo en EE. UU. Y Canadá


29
2018-05-05 13:04