sábado, 13 de agosto de 2016

Integración de pago PayPal en PHP

PayPal es una empresa internacional americano de comercio electrónico que permite pagos y transferencias de dinero a realizarse a través de Internet. PayPal es la pasarela de pago muy popular para cada proyecto web. Este tutorial explicará sobre integración de pasarela de pago PayPal en PHP. Con este tutorial usted puede integrar fácilmente la opción de pago en tu proyecto web. Al principio vamos a recibir el pago de los compradores y luego almacenar la información de la transacción en la base de datos. 

PayPal tiene dos ambientes como Sandbox y en tiempo Real. Sandbox entorno ayuda a los desarrolladores hacer su transacción de prueba antes el proyecto de irme a vivir. Tiempo real se utiliza el entorno proyecto vivo. 

Crear un nuevo Sandbox cuenta de prueba:

En primer lugar que necesitamos crear una nueva cuenta de pruebas Sandbox. Siguiendo los pasos sería ayuda para crear cuenta de Sandbox. 

Paso 1: ir a la https://developer.paypal.com/. Inicie sesión con su cuenta de PayPal. Si no tienes una cuenta PayPal, primero regístrese en PayPal. Una vez terminado el registro, Inicio de sesión con esta cuenta. 
Paso 2: después de iniciar sesión usted sería redirigido a la página del desarrollador. Ahora haga clic en el enlace de "Tablero" en el menú de navegación superior. Sección de 
paso 3: haga clic en el enlace "Cuenta" bajo la etiqueta de "Sandbox" en el menú izquierdo. 
Paso 4 – crear cuenta de comprador y cuenta desde el enlace "Crear cuenta". Por cuenta de comprador necesita seleccionar botón "Personal" en la sección "Tipo de cuenta" o seleccione botón de opción de negocio para la cuenta de comerciante.

Tablas de Base de Datos:

Hemos creado dos tablas denominadas productos y pagos. datos de los productos se almacenan en la tabla de productos y tabla de pagos se utiliza para almacenar la información de transacción proporcionada por PayPal.

CREATE TABLE `products` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
 `image` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
 `price` float(10,2) NOT NULL,
 `status` tinyint(1) NOT NULL DEFAULT '1',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE `payments` (
 `payment_id` int(11) NOT NULL AUTO_INCREMENT,
 `item_number` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
 `txn_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
 `payment_gross` float(10,2) NOT NULL,
 `currency_code` varchar(5) COLLATE utf8_unicode_ci NOT NULL,
 `payment_status` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
 PRIMARY KEY (`payment_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Hemos utilizado cuatro archivos para completan el proceso de pago de PayPal.

db_config.php:

conexión a la base de datos:
<?php//Database credentials$dbHost 'localhost';$dbUsername 'root';$dbPassword '';$dbName 'codexworld';//Connect with the database$db = new mysqli($dbHost$dbUsername$dbPassword$dbName);

if ($db->connect_errno) {
    printf("Connect failed: %s\n"$db->connect_error);
    exit();
}?>

products.php:

En este archivo todos los productos sería mostrar desde la base de datos MySQL con PayPal botón Comprar ahora. Siga el comentario(<!–– ––>) etiquetas para saber sobre el formulario campos ocultos.
<?php
include 'db_config.php';
//Set useful variables for paypal form$paypal_url 'https://www.sandbox.paypal.com/cgi-bin/webscr'//Test PayPal API URL$paypal_id 'info@hotmail.com'//Business Email

//fetch products from the database$results $db->query("SELECT * FROM products");

while($row $results->fetch_assoc())
{
?>

     <img src="images/<?php echo $row['image']; ?>"/>
     Name: <?php echo $row['name']; ?>
     Price: <?php echo $row['price']; ?>
     <form action="<?php echo $paypal_url; ?>" method="post">

        <!-- Identify your business so that you can collect the payments. -->
        <input type="hidden" name="business" value="<?php echo $paypal_id; ?>">
        
        <!-- Specify a Buy Now button. -->
        <input type="hidden" name="cmd" value="_xclick">
        
        <!-- Specify details about the item that buyers will purchase. -->
        <input type="hidden" name="item_name" value="<?php echo $row['name']; ?>">
        <input type="hidden" name="item_number" value="<?php echo $row['id']; ?>">
        <input type="hidden" name="amount" value="<?php echo $row['price']; ?>">
        <input type="hidden" name="currency_code" value="USD">
        
        <!-- Specify URLs -->
        <input type='hidden' name='cancel_return' value='http://example.com/cancel.php'>
        <input type='hidden' name='return' value='http://example.com/success.php'>
        
        <!-- Display the payment button. -->
        <input type="image" name="submit" border="0"
        src="https://www.paypalobjects.com/en_US/i/btn/btn_buynow_LG.gif" alt="PayPal - The safer, easier way to pay online">
        <img alt="" border="0" width="1" height="1" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" >
    
    </form>

<?php ?>

success.php:

Una vez que el pago de PayPal es exitoso, comprador sería redirigido a esta página. Hemos recibido la información de la transacción con la variable GET de $ e insertar datos de transacción en la base de datos. Si el pago es exitoso, entonces comprador sería ver el mensaje de éxito si no no mensaje.
<?php
include 'db_config.php';




//Store transaction information from PayPal$item_number $_GET['item_number']; $txn_id $_GET['tx'];$payment_gross $_GET['amt'];$currency_code $_GET['cc'];
$payment_status $_GET['st'];
//Get product price$productResult $db->query("SELECT price FROM products WHERE id = ".$item_number);$productRow $productResult->fetch_assoc();
$productPrice $productRow['price'];

if(!empty($txn_id) && $payment_gross == $productPrice){

    //Check if payment data exists with the same TXN ID.
    $prevPaymentResult $db->query("SELECT payment_id FROM payments WHERE txn_id = '".$txn_id."'");

    if($prevPaymentResult->num_rows 0){
        $paymentRow $prevPaymentResult->fetch_assoc();
        $last_insert_id $paymentRow['payment_id'];
    }else{
        //Insert tansaction data into the database
        $insert $db->query("INSERT INTO payments(item_number,txn_id,payment_gross,currency_code,payment_status) VALUES('".$item_number."','".$txn_id."','".$payment_gross."','".$currency_code."','".$payment_status."')");
        $last_insert_id $db->insert_id;
    }?>
<h1>Your payment has been successful.</h1>
<h1>Your Payment ID - <?php echo $last_insert_id; ?>.</h1>

<?php}else{?>
<h1>Your payment has failed.</h1>

<?php}?>

cancel.php:

Si los compradores desean cancelar pago en la página de pago de PayPal, el comprador le redireccionará a esta página.
<h1>Your PayPal transaction has been canceled.</h1>
 Cuando haya completado su prueba de flujo aplicaciones pago, necesita cambiar $paypal valor variable de url con https://www.paypal.com/cgi-bin/webscr y cambiar $paypal id valor variable con la original PayPal Business.

Configurar PayPal Auto Return y transferencia de datos de pago 

Asegúrese de que usted había configurado Auto Return web pagos en tu cuenta de PayPal business. De lo contrario, no obtendrá la información de transacción de PayPal en success.php archivo. Lea la guía siguiente para activar el retorno automático, pago de transferencia de datos y configurar la URL de devolución en tu cuenta PayPal. 
Cómo configurar PayPal Auto Return y la transferencia de datos de pago 


usando IPN 

para hacer el pago de PayPal más seguro, usted puede utilizar la notificación de pago instantánea (IPN) de PayPal. Para utilizar esta función, necesita habilitar el IPN en la cuenta de PayPal y definir notificar url en HTML PayPal Variables. En ese caso, en vez de success.php archivo, los datos de transacción podrían ser insertado en la base de datos el archivo de enlace notificar. Lea esta guía para saber cómo activas PayPal IPN – cómo activar la notificación de pago instantánea (IPN) de PayPal.

0 comentarios:

Publicar un comentario