Breaking

Post Top Ad

Your Ad Spot

domingo, 10 de marzo de 2019

Integración de Stripe Checkout en PHP


Stripe es la pasarela de pago más popular para aceptar pagos con tarjeta de crédito en la aplicación web. La API Stripe proporciona una solución segura y potente para integrar el sistema de pago en el sitio web. Puede permitir que el usuario realice el pago directamente desde su sitio web mediante tarjetas de crédito o débito.
La pasarela de pago Stripe se puede integrar fácilmente en el sitio web para proporcionar una experiencia de pago fácil de usar. Al usar Strip checkout API y PHP, puede permitir que el usuario realice pagos con tarjetas de crédito sin actualizar la página (dejando el sitio web). En este tutorial, le mostraremos cómo integrar la pasarela de pago de pago de Stripe y cobrar el pago en línea utilizando JavaScript API y PHP.
En el código de ejemplo, integraremos un proceso personalizado que le permite activar Checkout con cualquier evento de JavaScript o elemento HTML. La siguiente funcionalidad se implementará para demostrar el proceso de extracción de franjas en PHP usando JavaScript.
  • Mostrar detalles del producto con un botón Comprar.
  • Genera el token de banda y lo pasa a una devolución de llamada de JavaScript.
  • Envíe el token al lado del servidor y cargue la tarjeta.
  • Verifique el pago e inserte los datos de la transacción en la base de datos.

Claves de API de prueba de raya

Antes de realizar la pasarela de pago de Stripe en vivo, se debe probar el proceso de pago. Stripe Test API Keys Data permite verificar la comprobación con la transacción de prueba. Siga los pasos a continuación para generar claves de API de prueba en la cuenta de Stripe.
  • Inicie sesión en su cuenta de Stripe y vaya a la página Desarrolladores »API keys .
  • En la sección de DATOS DE PRUEBA , verás que se enumeran las claves de API estándar (clave de publicación y clave secreta). Para ver la clave secreta , haga clic en Revelar el botón de token de clave de prueba.
raya-comprobación-generar-prueba-api-publicable-claves-secretas-codexworld
Copie la clave de publicación y la clave secreta para su uso posterior en el código.
Antes de comenzar, eche un vistazo a la estructura de archivos de Stripe Checkout en PHP .
raya-checkout-php-files-structure-codexworld

Crear tabla de base de datos

Para almacenar los datos de la transacción, es necesario crear una tabla en la base de datos. El siguiente SQL crea una orderstabla en la base de datos MySQL.
CREATE  TABLE  `orders` (
  ` id`  int ( 11 ) NOT  NULL AUTO_INCREMENT,
  `name`  varchar ( 100 ) COLLATE utf8_unicode_ci NOT  NULL ,
  ` email`  varchar ( 255 ) COLLATE utf8_unicode_ci NOT  NULL ,
  `item_name`  varchar ( 255 ) COLLATE utf8_unicode_ci NOT  NULL ,
  `item_price`  float ( 10 ,2 ) NO  NULL ,
  `item_price_currency`  varchar ( 10 ) Intercalar utf8_unicode_ci NO  NULL ,
  ` paid_amount`  varchar ( 10 ) COLLATE utf8_unicode_ci NO  NULL ,
  `paid_amount_currency`  varchar ( 10 ) COLLATE utf8_unicode_ci NO  NULL ,
  ` txn_id`  varchar ( 100 ) COLLATE utf8_unicode_ci NO  NULO ,
 `payment_status`  varchar ( 50 ) COLLATE utf8_unicode_ci NOT  NULL ,
  ` created` datetime NOT  NULL ,
  `modified` datetime NOT  NULL ,LLAVE 
 PRIMARIA ( `id` )
) MOTOR = InnoDB  DEFAULT  CHARSET = utf8 COLLATE = utf8_unicode_ci;

Configuración de la base de datos (dbConfig.php)

El dbConfig.phparchivo se utiliza para conectar y seleccionar la base de datos. Especifique el host de la base de datos ( $dbHost), el nombre de usuario ( $dbUsername), la contraseña ( $dbPassword) y el nombre ( $dbName) según sus credenciales de la base de datos.
<? php // Configuración de la base de datos $ dbHost      "localhost" ; $ dbUsername  "root" ; $ dbPassword  "root" ; $ dbName      "codexworld" ; 
// Crear conexión de base de datos $ db  = new  mysqli ( $ dbHost $ dbUsername $ dbPassword $ dbName ); 
// Comprobar la conexión si ( $ db -> connect_error ) { 
    die ( "Falló la conexión:"  $ Db ->connect_error ); 
}

Comprobación de la raya (index.php)

Inicialmente, los detalles del producto se mostrarán con un botón Comprar. Una vez que se haga clic en el botón, se abrirá el cuadro de diálogo Raya para realizar el pago.
Código PHP:
al comienzo de la secuencia de comandos, especifique algunas variables útiles para el producto y la API Stripe.
  • Especifique los detalles del producto.
  • Especifique la clave publicable de Stripe API.
<? php // Stripe API publishable key publishable_key 'Your_Publishable_Key' ; 
// Detalles del producto $ productName  'Producto de muestra' ; $ productPrice  '500' ;
$ currency  'usd' ; 
$ productPriceFormat  number_format (( $ productPrice / 100 ),  2 '.' '' ); 
?>
Código JavaScript:
la biblioteca jQuery no está obligada a usar Stripe, solo se usa para este ejemplo.
< script  src = "https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" ></ script >
Incluya la biblioteca JS de comprobación de rayas.
< script  src = "https://checkout.stripe.com/checkout.js" ></ script >
El siguiente código JavaScript maneja el proceso de pago en una sola página sin actualizar la página.
  • La biblioteca Stripe JS envía los detalles de pago a Stripe desde el navegador después de pasar la validación básica.
  • La raya genera un token y lo devuelve a Checkout.
  • Checkout almacena el token en un elemento oculto llamado stripeToken.
  • Checkout publica los datos del formulario en el código del lado del servidor.
  • El código del lado del servidor utiliza el stripeToken para cargar la tarjeta.
< script >
var handler = StripeCheckout.configure ({
    clave: ' <? php  echo  $ publishable_key ?> ' ,
    imagen: 'images / company-logo.png' ,
    locale: 'auto' ,
    token: function ( token ) {
         // Puede acceder al ID de token con `token.id`. 
        // Obtenga el ID de token para su código del lado del servidor para su uso.
        
        $ ( '#paymentDetails' ) .hide ();
        $ ( '#payProcess' ) .val ( 1 );
        $ .ajax ({
            url: 'stripe_charge.php' ,
            tipo: 'POST' ,
            data: {stripeToken: token.id, stripeEmail: token.email, itemName: ' <? php  echo  $ productName ?> ' , itemPrice: <? php  echo  $ productPrice ?> , moneda: ' <? php  echo  $ moneda ?> '},
            tipo de datos: "json",
            antes de Enviar: función () {
                $ ('# payButton'). prop ('disabled', true);
                $ ('# payButton'). html ('Please wait ...');
            }
            éxito: función (datos) {
                $ ('# payProcess'). val (0);
                si (data.status == 1) {
                    $ ('# buynow'). hide ();
                    $ ('# txnEmail'). html (token.email);
                    $ ('# orderID'). html (data.txnData.id);
                    $ ('# txnID'). html (data.txnData.balance_transaction);
                    $ ('# paymentDetails'). show ();
                } else {
                    $ ('# payButton'). prop ('deshabilitado', falso);
                    $ ('# payButton'). html ('Comprar ahora');
                    alerta ('Ocurrió algún problema, inténtalo de nuevo');
                }
            }
            error: función (datos) {
                $ ('# payProcess'). val (0);
                $ ('# payButton'). prop ('deshabilitado', falso);
                $ ('# payButton'). html ('Comprar ahora');
                alerta ('Ocurrió algún problema, inténtalo de nuevo');
            }
        });
    }
});

var stripe_closed = function () {
    proceso de var = $ ('# payProcess'). val ();
    si (procesando == 0) {
        $ ('# payButton'). prop ('deshabilitado', falso);
        $ ('# payButton'). html ('Comprar ahora');
    }
};

var eventTggr = document.getElementById ('payButton');
if (eventTggr) {
    eventTggr.addEventListener ('clic', función (e) {
        $ ('# payButton'). prop ('disabled', true);
        $ ('# payButton'). html ('Please wait ...');
        
        // Abrir Checkout con otras opciones:
        handler.open ({
            nombre: 'CodexWorld',
            descripción: ' <? php  echo  $ productName ?> ',
            cantidad: <? php  echo  $ productPrice ?> ,
            moneda: ' <? php  echo  $ moneda ?> ',
            cerrado: stripe_closed
        });
        e.preventDefault ();
    });
}

// Cerrar Checkout en la navegación de la página:
window.addEventListener ('popstate', function () {
  handler.close ();
});
</ script >
Código HTML:
el siguiente código muestra los detalles del producto en la página web con un botón personalizado de verificación de rayas.
  • Al hacer clic en el botón Comprar, aparecerá el cuadro de diálogo Registro de franjas.
  • Los detalles de la tarjeta se publican en el código del lado del servidor utilizando jQuery y Ajax.
  • Si el proceso de pago se realiza correctamente, se mostrarán los detalles del pedido; de lo contrario, se mostrará un mensaje de error.
< div  class = "container" > 
    < div  class = "item" > 
        <! - Detalles del producto -> 
        < h2 > <? php  echo  $ productName ?> </ h2 > 
        < img  src = "images / product-image.png" /> 
        < p > Lorem Ipsum es simplemente texto ficticio de la industria de impresión y composición tipográfica. Lorem Ipsum ha sido el texto ficticio estándar de la industria desde la década de 1500, cuando una impresora desconocida tomó una galera de tipos y la revolvió para hacer un libro de muestras tipo.> 
        < p > Precio: $ <? php  echo  $ productPriceFormat . '' . strtoupper ( $ moneda ); ?> </ p >
        
        <! - Botón de compra -> 
        < div  id = "buynow" > 
            < button  class = "stripe-button"  id = "payButton" > Buy Now </ button > 
            < input  type = "hidden"  id = "payProcess"  value = "0" /> 
        </ div > 
    </ div > 
    < div  id = "paymentDetails"  style = "display: none;"> 
        < clase p = "aligncenter green larger" > Su pago fue exitoso. </ p > 
        < h2 > Información de pago </ h2 > 
        < p > 
        ID de pedido: < span  id = "orderID" > & # x3C; ORDER_ID & # x3E; </ Envergadura > < br /> 
        ID de la transacción: < lapso  ID = "txnID" > & # X3c; TX_ID & # X3E; </ span > << span > $ <? php  echo  $ productPriceFormat ?> USD </ envergadura > < br /> 
        Nombre del elemento: < lapso > <? Php  echo  $ productName ?> </ Envergadura > < br /> 
        </ p > 
    </ div > 
</ div >

Biblioteca PHP Stripe

La biblioteca PHP Stripe se utiliza para procesar el pago con tarjeta. No necesita descargar esta biblioteca, todos los archivos de biblioteca necesarios están incluidos en nuestro código fuente. Además, no es necesario que uses compositor, esta biblioteca PHP Stripe funcionará sin el compositor.

Procesar el pago con tarjeta (stripe_charge.php)

En este archivo, los detalles de la tarjeta publicados se validan y el cargo se procesa utilizando la biblioteca Stripe PHP.
  • Obtenga token, tarjeta y detalles del artículo de los datos POST.
  • Incluye la librería PHP de raya.
  • Establezca la clave secreta de API de banda que se generó en la sección Datos de API de prueba de banda.
  • Agregar cliente a Stripe con el correo electrónico y el token de Stripe del usuario.
  • Especifique los detalles del artículo y cree un cargo a la tarjeta de crédito o débito.
  • Recupera los detalles del cargo del cargo creado.
  • Si el pago se realiza correctamente, los detalles del pedido y la transacción se insertarán en la base de datos MySQL.
  • La respuesta del cargo se devolverá en formato JSON al método de éxito de la solicitud Ajax.
<? php // clave secreta de API de raya $ secret_key  'Your_Secret_Key' ; 
$ respuesta  = matriz (); 
// Compruebe si el token de banda no está vacío si (! Empty ( $ _POST [ 'stripeToken' ])) { 
    
    // Obtenga la información del token, la tarjeta y el elemento 
    $ token   $ _POST [ 'stripeToken' ]; 
    $ email   $ _POST [ 'stripeEmail' ]; 
    $ itemPrice  $ _POST [ 'itemPrice' ]; 
    $ currency  $ _POST [ 'currency' ]; 
    $ itemName $ _POST [ 'itemName' ]; 
    
    // Incluir la biblioteca PHP Stripe 
    require_once ( 'stripe-php / init.php' ); 
    
    // Establecer la clave api 
    \ Stripe \ Stripe :: setApiKey ( $ secret_key ); 
    
    // Agregar cliente a la banda 
    $ customer  = \ Stripe \ Customer :: create (array ( 
        'email'  =>  $ email , 
        'source'   =>  $ token 
    )); 
    
    // Cargar un crédito o una tarjeta de débito 
    $ cargo  = \ Raya \ Cargo:: create (array ( 
        'customer'  =>  $ customer -> id , 
        'amount'    =>  $ itemPrice , 
        'currency'  =>  $ currency , 
        'description'  =>  $ itemName , 
    )); 
    
    // Recuperar detalles del cargo 
    $ chargeJson  $ charge -> jsonSerialize (); 

    // Compruebe si el cargo es exitoso 
    si ( $ chargeJson [ 'amount_refunded' ] ==  && empty ( $ chargeJson [ 'failure_code'$ chargeJson [ 'paid' ] ==  &&  $ chargeJson [ ' capture ' ] ==  1 ) { 
        
        // Detalles de la orden  
        $ cantidad  $ chargeJson [ 'cantidad' ]; 
        $ currency  $ chargeJson [ 'currency' ]; 
        $ txnID  $ chargeJson [ 'balance_transaction' ]; 
        $ status  $ chargeJson [ 'status' ]; 
        $ orderID  $ chargeJson [ 'id' ]; 
        $ payerName  $ chargeJson [ 'source' ] [ 'name' ]; 
        
        // Incluir el archivo de configuración de la base de datos 
        require_once  'dbConfig.php' ; 
        
        // Insertar datos de tansaction en la base 
        de datos $ sql  "INSERT INTO pedidos (nombre, correo electrónico, item_name, item_price, item_price_currency, paid_amount, paid_amount_currency, txn_id, payment_status, created, modified) VALUES ('" . $ PayerName . "', ' " . $ email . " ',' " . $ itemName . " ',' " . $ itemPrice . " ',' " . $ moneda . "','" .cantidad $ . "','" . $ moneda . "','" . $ txnID . "','" . $ estado . "', NOW (), NOW ())" ; 
        $ insert  $ db -> consulta ( $ sql ); 
        $ last_insert_id  $ db -> insert_id ; 
        
        // Si el pedido se insertó correctamente 
        si ( $ last_insert_id &&  $ status  ==  'se realizó correctamente  ' ) { 
            $ response  = array ( 
                'status'  =>  1 ,
                'Tu pago fue exitoso.' , 
                'txnData'  =>  $ chargeJson 
            ); 
        } else { 
            $ response  = array ( 
                'status'  =>  0 , 
                'msg'  =>  'La transacción ha fallado.' 
            ); 
        } 
    } else else { 
        $ response  = array ( 
            'status'  =>  0 , 
            'msg'  =>  'La transacción ha fallado.' 
        ); 
    } 
} else else { 
    $ response  = array ( 
        'status'  =>  0 , 
        'msg'  =>  '
    
} 
// Return response echo  json_encode ( $ response );
Integración de pasarela de pago de banda en PHP

Hacer Stripe Payment Gateway en vivo

Una vez que haya terminado con el proceso de pago de pago por franja, puede hacer que la pasarela de pago de franja en vivo acepte el pago en línea de un cliente real.
  • Inicie sesión en su cuenta de Stripe y vaya a la página Desarrolladores »API keys .
  • Recopile las claves de la API (clave de publicación y clave secreta) de la sección Live Data.
  • Reemplace las claves de la API de prueba (clave de publicación y clave secreta) con las claves de la API de Live (clave de publicación y clave secreta) en el script.

Conclusión

Si desea aceptar el pago en su aplicación web, Stripe es la mejor opción para el pago con tarjeta de crédito. Puede permitir que el cliente realice el pago utilizando su tarjeta de crédito o débito con la API Stripe checkout. Nuestro código de ejemplo le ayudará a integrar el proceso de pago de una sola página utilizando Stripe y PHP .

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Post Top Ad

Your Ad Spot

Páginas