Pues tengo un pequeño problema con el ipn de paypal cuando un usuario realiza el pago y esta verificada y completada la transaccion necesito que me actualice unos campos en mi base de datos y que me inserte el ID de la transaccion pero al final no hace nada de nada y siempre recibo el pago.. les dejo el codigo para que echen un vistazo PD. Estoy desesperado
ESTE ES EL BOTON
Código PHP:
Ver original
<div class = "boton"> <?php //Variable para guardar la ruta hacia la clase Class.PayPalEWP.php $cert_id = 'LLW2ULUAYYKUS'; //Id del certificado include("Class.PayPalEWP.php"); //Ruta hacia la clase $paypal = new PayPalEWP(); $paypal->setTempFileDirectory("tmp"); // HAY que crear una carpeta tmp en el directorio de la clase $paypal->setCertificate("my-pubcert.pem", "my-prvkey.pem"); $paypal->setPayPalCertificate("paypal_cert_pem.txt"); $paypal->setCertificateID($cert_id); 'cmd' => '_xclick', 'cert_id' => $cert_id, 'custom' => $row_BotonPaypal['id_principal'] , //Por si quieres añadir algún dato más 'item_name' => 'Cuenta premium en Clasificados Online', // Nombre del objeto que vendemos 'currency_code' => 'USD', //Tipo de moneda 'amount' => '0.01', //Precio 'lc' => 'ES', //Idioma 'no_note' => '1', //1-0 Mostrar cuadro de texto 'no_shipping' => '1', 'return' => 'http://clasificadosonline.comxa.com/return.php', //Url de retorno a la que nos devuelve paypal al comprar (incluido en el tuto) 'cancel_return' => 'http://clasificadosonline.comxa.com', //Url a la que nos devuelve al cancelar la compra 'notify_url' => 'http://clasificadosonline.comxa.com/ipn.php', //Url de notificación dónde se realiza el IPN (incluido en el tuto) 'cbt' => 'Texto Voler a mi página', ); ?> <form action="https://www.paypal.com/cgi-bin/webscr" method="POST" name= "form1"> <input type="hidden" name="cmd" value="_s-xclick"><input type="hidden" name="cmd" value="_s-xclick"> <table width="296" border="1"> <tr> <td>Inserte la clave de registro de su PRODUCTO</td> <td><span id="sprytextfield1"> <input name="id_PRODUCTO" id ="id_PRODUCTO" type="text" /> <span class="textfieldRequiredMsg">recuerde que tiene que rellenar este campo.</span><span class="textfieldInvalidFormatMsg">Su codigo es solamente en numeros.</span></span></td> </tr> </table> <input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----<?php echo $paypal->encryptButton($boton1); ?>-----END PKCS7-----"/> <input type="image" src="https://www.paypal.com/es_XC/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal, la forma más segura y rápida de pagar en línea."> <img alt="" border="0" src="https://www.paypal.com/es_XC/i/scr/pixel.gif" width="1" height="1"></p></div> </form>
ESTE ES EL IPN
Código PHP:
Ver original
<?php require_once('Connections/clasi.php'); ?> <?php // STEP 1: Read POST data // reading posted data from directly from $_POST causes serialization // issues with array data in POST // reading raw POST data from input stream instead. foreach ($raw_post_array as $keyval) { } // read the post from PayPal system and add 'cmd' $req = 'cmd=_notify-validate'; $get_magic_quotes_exists = true; } foreach ($myPost as $key => $value) { } else { } $req .= "&$key=$value"; } // STEP 2: Post IPN data back to paypal to validate // In wamp like environments that do not come bundled with root authority certificates, // please download 'cacert.pem' from "http://curl.haxx.se/docs/caextract.html" and set the directory path // of the certificate as shown below. // curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem'); // error_log("Got " . curl_error($ch) . " when processing IPN data"); echo "error con el ipn"; exit; } // STEP 3: Inspect IPN validation result and act accordingly if($payment_status=='Completed'){ if($payment_amount=='0.01' && $payment_currency=='USD'){ //ADD txn_id A DB GetSQLValueString($txn_id , "text"), GetSQLValueString( $payer_email, "text")); //ACTUALIZAR PREMIUM A 1 $query_ConsulLocal = "UPDATE principal SET premium='1' WHERE id_principal='".$PRODUCTO_id."'"; } } } } // assign posted variables to local variables $item_name = $_POST['item_name']; $item_number = $_POST['item_number']; $payment_status = $_POST['payment_status']; $payment_amount = $_POST['mc_gross']; $payment_currency = $_POST['mc_currency']; $txn_id = $_POST['txn_id']; $receiver_email = $_POST['receiver_email']; $payer_email = $_POST['payer_email']; // log for manual investigation } ?>
espero me ayuden