plus integrar developer apicontext php paypal

php - integrar - Pasar variable de precio a PayPal con botón personalizado



paypal/rest-api-sdk-php laravel (8)

Tengo un formulario y un botón personalizado de PayPal, pero ¿cómo paso la variable valor / precio a PayPal?

<form action="https://www.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_s-xclick"> <input type="hidden" name="hosted_button_id" value="ZEFZFYBY2SZB8"> <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> <img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"> </form>

Tengo una variable $total = "238.00";


Agregue un campo oculto más para la cantidad

<input type="hidden" name="amount" value="<?php echo $total; ?>">


Aquí está la versión 2013: vaya a crear un botón, cuando llegue al paso 2, desmarque la casilla, vaya al paso 3 y luego cree el botón. Una vez que tenga el código, se verá así:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top"> <input type="hidden" name="cmd" value="_xclick"> <input type="hidden" name="business" value="XXXXXXXX"> <input type="hidden" name="lc" value="US"> <input type="hidden" name="item_name" value="Payments"> <input type="hidden" name="amount" value="100.00"> <input type="hidden" name="currency_code" value="USD"> <input type="hidden" name="button_subtype" value="services"> <input type="hidden" name="no_note" value="0"> <input type="hidden" name="cn" value="Add special instructions to the seller:"> <input type="hidden" name="no_shipping" value="2"> <input type="hidden" name="rm" value="1"> <input type="hidden" name="return" value="http://YOURSITE.com/"> <input type="hidden" name="cancel_return" value="http://YOURSITE.com/payments.html"> <input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHostedGuest"> <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1"> </form>

Su valor de "negocio" no será XXXXXXXX, así que asegúrese de dejar el que Paypal le ofrece. También puede configurar su URL de cancelación y devolución.

Para usuarios de PHP más avanzados: ¡configuro una cadena de PHP y funciona muy bien! Por ejemplo, ver a continuación:

https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&businesss=XXXXXXXXX&lc=US&item_name=$mydescription&amount=$myprice&........

Y así sucesivamente ... Como puede ver, $ mydescription es una variable de PHP y $ myprice es una variable de PHP. Lo que hice fue configurar un formulario HTML para recopilar datos y usar ese formulario como un formulario de procesamiento de pagos. Una vez que el usuario hace clic en enviar, lo tengo que ir a una página de PHP para usar como un Mailer, inserción de base de datos, autoresponder y, finalmente, un encabezado de redirección. ¡La URL para el redireccionamiento es la URL de Paypal con las Variables en la cadena! ¡Este hilo realmente me ayudó a encontrar el código del botón de Paypal correcto para que la cadena funcione correctamente con las variaciones de precios! FYI - Si eres una persona principiante de PHP, el campo de imagen no se usa en la cadena. Solo la URL y luego los Nombres y valores ocultos.


Aquí hay uno que le permite al usuario ingresar un precio y una referencia.

NOTA: Necesitará cambiar su negocio de [email protected] a su dirección de correo electrónico de PayPal, pero está bien si no lo hace porque solo significa que recibiré sus pagos.

También es posible que desee cambiar currency_code y lc para que se adapten a su configuración regional ...

<form action="https://www.paypal.com/cgi-bin/webscr" method="post"> <fieldset> <input type="hidden" name="cmd" value="_xclick" /> <input type="hidden" name="business" value="[email protected]" /> <input type="hidden" name="lc" value="AU" /> <input type="hidden" name="item_name" value="Payment" /> <input type="hidden" name="item_number" value="P1" /> <input type="hidden" name="currency_code" value="AUD" /> <input type="hidden" name="button_subtype" value="services" /> <input type="hidden" name="no_note" value="0" /> <input type="hidden" name="cn" value="Comments" /> <input type="hidden" name="no_shipping" value="1" /> <input type="hidden" name="rm" value="1" /> <input type="hidden" name="return" value="http://www.ekerner.com/payments/?payment=success" /> <input type="hidden" name="cancel_return" value="http://www.ekerner.com/payments/?payment=cancelled" /> <input type="hidden" name="bn" value="PP-BuyNowBF:btn_paynowCC_LG.gif:NonHostedGuest" /> <table> <tr><td style="padding:0 5px 5px 0;">Amount AUD</td><td style="padding:0 5px 5px 0;"><input type="text" name="amount" maxlength="200" /></td></tr> <tr><td style="padding:0 5px 5px 0;"><input type="hidden" name="on0" value="Reference" />Reference</td><td style="padding:0 5px 5px 0;"> <input type="text" name="os0" maxlength="200" /></td></tr> <tr><td>&nbsp;</td><td style="padding:0 5px 5px 0;"> <input style="position:relative; left:-10px; background:#ffffff; border:0;" type="image" src="https://www.paypalobjects.com/en_AU/i/btn/btn_paynowCC_LG.gif" name="submit" alt="PayPal . The safer, easier way to pay online." /> <img alt="" style="border:0;" src="https://www.paypalobjects.com/en_AU/i/scr/pixel.gif" width="1" height="1" /> </td></tr> </table> </fieldset> </form>


Aunque era una publicación anterior, me vino a la búsqueda. ¡Y no hay ningún lugar en las primeras páginas que responda la pregunta! Leyendo durante aproximadamente 10 horas, logré hacer un ejemplo de trabajo. Pero recuerde que PayPal cambia constantemente, por lo que en algún momento esta solución ya no funcionará.

Lo primero es lo primero. Nunca puede tener un valor de precio variable para un artículo. Por lo tanto, la primera solución es enviar una solicitud como si el artículo fuera un total en su carrito. Sí, movimiento inteligente :)

<form action="https://www.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_cart"> <input type="hidden" name="upload" value="1"> <input type="hidden" name="business" value="XVR95QDG6M53J"> <input type="hidden" name="item_name_1" value="This is the name of what you are selling"> <input type="hidden" name="amount_1" value="<?php echo $total_cost; ?>"> <input type="hidden" name="currency_code" value="the currency code"> <input type="hidden" name="lc" value="if you dont need delete"> <input type="hidden" name="shopping_url" value="link to your shop or cart on your website"> <input type="hidden" name="retun" value="URL the user returns if payment is OK"> <input type="hidden" name="cancel_return" value="URL the user returns if payment is canceled"> <input type="submit" class="read-more-btn4" value="Text of [read more] button"> </form>

Es posible que desee cambiar el valor del business al suyo. Pero realmente no me importa :)


El código anterior no funcionó para mí. Después de mucho dolor de cabeza, finalmente descubrí que tienes que entrar en PayPal y en el paso 2 de crear el código del botón asegúrate de hacer clic en el botón no alojado y luego copiar el código del botón sin encriptar, que te dará algo como esto (borré mi valor comercial para la seguridad):

<form action="https://www.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_xclick"> <input type="hidden" name="business" value="XXX"> <input type="hidden" name="lc" value="CA"> <input type="hidden" name="item_name" value="Tangled Roots"> <input type="hidden" name="button_subtype" value="services"> <input type="hidden" name="no_note" value="0"> <input type="hidden" name="cn" value="Add special instructions to the seller"> <input type="hidden" name="no_shipping" value="2"> <input name="amount" value="16.99"> <input type="hidden" name="currency_code" value="CAD"> <input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHosted"> <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1"> </form>

Este código crea un botón donde el usuario puede ingresar la cantidad, que de manera predeterminada comienza en 16.99, pero podría fácilmente reemplazarla con una variable de PHP.


Encontré la solución:

<input type="hidden" name="cmd" value="_s-xclick">

necesita ser cambiado a

<input type="hidden" name="cmd" value="_xclick">

El primero cifra los datos enviados por el formulario, lo que causó el problema con mi pago y envío.


Intenté y fallé con todo lo anterior. Encontré que esta es la respuesta del sitio web de PayPal .

<form name="_xclick" 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="currency_code" value="USD"> <input type="hidden" name="item_name" value="Teddy Bear"> <input type="hidden" name="amount" value="12.99"> <input type="image" src="http://www.paypalobjects.com/en_US/i/btn/btn_buynow_LG.gif" border="0" name="submit" alt="Make payments with PayPal - it''s fast, free and secure!"> </form>

Pruebe esto y comprenderá cómo funciona ... cambie el negocio a la dirección de correo electrónico de la persona que desea pagar, etc.


Lamentablemente, al momento de escribir estas líneas, todas las otras respuestas a esta pregunta son incorrectas, es decir, si está intentando cambiar el precio de un botón alojado ; de eso se trataba la pregunta.

La forma correcta de hacerlo es a continuación:

Notas importantes: cuando actualiza los detalles del botón, no solo se actualiza para la sesión de ese usuario, sino que lo actualiza dentro de su cuenta de PayPal, por lo que el nuevo nombre / precio, etc. afectará a todos los usuarios que intenten usarlo.

Además, tenga en cuenta que al modificar el contenido de un botón alojado, debe pasar todos los detalles del botón como cuando lo creó; a modo de ejemplo, si deja de lado el nombre de un elemento, el nombre del elemento estará en blanco y Paypal permitirá al usuario configurarlo.

En esa nota, continuaremos ...

Yo personalmente comencé con esta clase:

<?php class Paypal { /** * Last error message(s) * @var array */ protected $_errors = array(); /** * API Credentials * Use the correct credentials for the environment in use (Live / Sandbox) * @var array */ protected $_credentials = array( ''USER'' => ''seller_1297608781_biz_api1.lionite.com'', ''PWD'' => ''1297608792'', ''SIGNATURE'' => ''A3g66.FS3NAf4mkHn3BDQdpo6JD.ACcPc4wMrInvUEqO3Uapovity47p'', ); /** * API endpoint * Live - https://api-3t.paypal.com/nvp * Sandbox - https://api-3t.sandbox.paypal.com/nvp * @var string */ protected $_endPoint = ''https://api-3t.sandbox.paypal.com/nvp''; /** * API Version * @var string */ protected $_version = ''74.0''; /** * Make API request * * @param string $method string API method to request * @param array $params Additional request parameters * @return array / boolean Response array / boolean false on failure */ public function request($method, $params = array()) { $this->_errors = array(); if (empty($method)) { //Check if API method is not empty $this->_errors = array(''API method is missing''); return false; } //Our request parameters $requestParams = array( ''METHOD'' => $method, ''VERSION'' => $this->_version ) + $this->_credentials; //Building our NVP string $request = http_build_query($requestParams + $params); //cURL settings $curlOptions = array( CURLOPT_URL => $this->_endPoint, CURLOPT_VERBOSE => 1, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_SSL_VERIFYHOST => 2, CURLOPT_CAINFO => dirname(__FILE__) . ''/cacert.pem'', //CA cert file CURLOPT_RETURNTRANSFER => 1, CURLOPT_POST => 1, CURLOPT_POSTFIELDS => $request ); $ch = curl_init(); curl_setopt_array($ch, $curlOptions); //Sending our request - $response will hold the API response $response = curl_exec($ch); //Checking for cURL errors if (curl_errno($ch)) { $this->_errors = curl_error($ch); curl_close($ch); return false; //Handle errors } else { curl_close($ch); $responseArray = array(); parse_str($response, $responseArray); // Break the NVP string to an array return $responseArray; } } } ?>

Crédito: https://www.smashingmagazine.com/2011/09/getting-started-with-the-paypal-api/

Luego hice lo siguiente:

include(dirname(__FILE__) . ''/includes/paypal.class.php''); $paypal = new Paypal(); // Set our method $method = ''BMUpdateButton''; // Set our params $params = array( ''HOSTEDBUTTONID'' => ''your_button_id'', ''BUTTONTYPE'' => ''BUYNOW'', ''BUTTONSUBTYPE'' => ''SERVICES'', ''L_BUTTONVAR0'' => ''item_name=Your Description'', ''L_BUTTONVAR1'' => ''amount=999.00'', ''L_BUTTONVAR2'' => ''currency_code=AUD'', ''L_BUTTONVAR3'' => ''cancel_return=http://www.example.com/cancel.html'', ''L_BUTTONVAR4'' => ''return=http://www.example.com/success.html'' ); // Make request to change button details $result = $paypal->request($method, $params);

Tenga en cuenta que, aunque Paypal dice que BUTTONSUBTYPE es opcional, es probable que obtenga un error si no lo incluye.

Desafortunadamente, los documentos de Paypal no son muy claros y no brindan los mejores ejemplos, por lo que espero que esto le ahorre a alguien más las muchas horas que pasé averiguando cómo hacer esto.