Ver Mensaje Individual
  #7 (permalink)  
Antiguo 08/11/2013, 08:25
Avatar de charlyrosero
charlyrosero
 
Fecha de Ingreso: julio-2006
Mensajes: 161
Antigüedad: 17 años, 8 meses
Puntos: 5
Respuesta: Integrar PayPal con tu sitio web

tienes que hacer uso de la IPN (Instant Payment Notification) de Paypal, no estoy seguro pero para configurar la URL de respuesta debes hacerlo tambien por las opciones de tu cuenta de paypal (para este caso de pruebas).

Cita:


Auto Return is turned off by default. To turn on Auto Return:
  1. Log in to your PayPal account at https://www.paypal.com. The My Account Overview page appears.
  2. Click the Profile subtab. The Profile Summary page appears.
  3. Click the My Selling Tools link in the left column.
  4. Under the Selling Online section, click the Update link in the row for Website Preferences. The Website Payment Preferences page appears
  5. Under Auto Return for Website Payments, click the On radio button to enable Auto Return.
  6. In the Return URL field, enter the URL to which you want your payers redirected after they complete their payments. NOTE: PayPal checks the Return URL that you enter. If the URL is not properly formatted or cannot be validated, PayPal will not activate Auto Return.
  7. Scroll to the bottom of the page, and click the Save button.
y la pagina de respuesta para procesar el estado deberia contener algo como esto

Código PHP:
<?php
// Check to see there are posted variables coming into the script
if ($_SERVER['REQUEST_METHOD'] != "POST")
    die(
"No Post Variables");
// Initialize the $req variable and add CMD key value pair
$req 'cmd=_notify-validate';
// Read the post from PayPal
foreach ($_POST as $key => $value) {
    
$value urlencode(stripslashes($value));
    
$req .= "&$key=$value";
}
// Now Post all of that back to PayPal's server using curl, and validate everything with PayPal
// We will use CURL instead of PHP for this for a more universally operable script (fsockopen has issues on some environments)
//$url = "https://www.sandbox.paypal.com/cgi-bin/webscr";
$url "https://www.paypal.com/cgi-bin/webscr";
$curl_result $curl_err '';
$ch curl_init();
curl_setopt($chCURLOPT_URL$url);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_POSTFIELDS$req);
curl_setopt($chCURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded""Content-Length: " strlen($req)));
curl_setopt($chCURLOPT_HEADER0);
curl_setopt($chCURLOPT_VERBOSE1);
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
curl_setopt($chCURLOPT_TIMEOUT30);
$curl_result = @curl_exec($ch);
$curl_err curl_error($ch);
curl_close($ch);

$req str_replace("&""\n"$req);  // Make it a nice list in case we want to email it to ourselves for reporting
// Check that the result verifies
if (strpos($curl_result"VERIFIED") !== false) {
    
$req .= "\n\nPaypal Verified OK";
} else {
    
$req .= "\n\nData NOT verified from Paypal!";
    
mail("[email protected]""IPN interaction not verified""$req""From: [email protected]");
    exit();
}

/* CHECK THESE 4 THINGS BEFORE PROCESSING THE TRANSACTION, HANDLE THEM AS YOU WISH
  1. Make sure that business email returned is your business email
  2. Make sure that the transaction�s payment status is �completed�
  3. Make sure there are no duplicate txn_id
  4. Make sure the payment amount matches what you charge for items. (Defeat Price-Jacking) */

// Check Number 1 ------------------------------------------------------------------------------------------------------------
$receiver_email $_POST['receiver_email'];
if (
$receiver_email != "[email protected]") {
//handle the wrong business url
    
exit(); // exit script
}
// Check number 2 ------------------------------------------------------------------------------------------------------------
if ($_POST['payment_status'] != "Completed") {
    
// Handle how you think you should if a payment is not complete yet, a few scenarios can cause a transaction to be incomplete
}

// Check number 3 ------------------------------------------------------------------------------------------------------------
$this_txn $_POST['txn_id'];
//check for duplicate txn_ids in the database
// Check number 4 ------------------------------------------------------------------------------------------------------------
$product_id_string $_POST['custom'];
$product_id_string rtrim($product_id_string","); // remove last comma
// Explode the string, make it an array, then query all the prices out, add them up, and make sure they match the payment_gross amount
// END ALL SECURITY CHECKS NOW IN THE DATABASE IT GOES ------------------------------------
////////////////////////////////////////////////////
// Homework - Examples of assigning local variables from the POST variables
$txn_id $_POST['txn_id'];
$payer_email $_POST['payer_email'];
$custom $_POST['custom'];
// Place the transaction into the database
// Mail yourself the details
mail("[email protected]""NORMAL IPN RESULT YAY MONEY!"$req"From: [email protected]");
?>
aqui hay mas informacion acerca del sistema de notificacion de paypal