Buscar..


Parámetros

Parámetro Detalles
card_data Objeto JSON que contiene información de pago por transacción
detalles de la tarjeta de crédito Objeto JSON que contiene datos de tarjetas de crédito que se envían a PayPal para ser guardados
Identificación del cliente Su ID de cliente de aplicación de PayPal (credenciales de OAuth 2)
paypal Referencia del SDK del nodo de PayPal
secreto Su solicitud de PayPal secreta (credenciales OAuth 2)
uuid Referencia al paquete node-uuid

Observaciones

Esta muestra lleva al usuario a acreditar una transacción de tarjeta de crédito simple utilizando los SDK de PayPal.

Muestra de nodo

Comience por instalar el módulo Nodo de PayPal desde NPM

npm install paypal-rest-sdk

En su archivo de aplicación, agregue la información de configuración para el SDK

var paypal = require('paypal-rest-sdk');

var client_id = 'YOUR CLIENT ID';
var secret = 'YOUR SECRET';

paypal.configure({
    'mode': 'sandbox', //sandbox or live
    'client_id': client_id,
    'client_secret': secret
});

Agregamos el requisito para el SDK, luego configuramos las variables para el ID de cliente y el secreto que se obtuvieron al crear una aplicación . A continuación, configuramos nuestra aplicación con estos detalles y especificamos el entorno en el que estamos trabajando (en vivo o en una zona de pruebas).

A continuación, configuramos el objeto JSON que contiene la información de pago para el pagador.

var card_data = {
  "intent": "sale",
  "payer": {
    "payment_method": "credit_card",
    "funding_instruments": [{
      "credit_card": {
        "type": "visa",
        "number": "4417119669820331",
        "expire_month": "11",
        "expire_year": "2018",
        "cvv2": "874",
        "first_name": "Joe",
        "last_name": "Shopper",
        "billing_address": {
          "line1": "52 N Main ST",
          "city": "Johnstown",
          "state": "OH",
          "postal_code": "43210",
          "country_code": "US" }}}]},
  "transactions": [{
    "amount": {
      "total": "7.47",
      "currency": "USD",
      "details": {
        "subtotal": "7.41",
        "tax": "0.03",
        "shipping": "0.03"}},
    "description": "This is the payment transaction description." 
}]};

Añadir una intent de sale , y una payment_method de credit_card . A continuación, agregue los detalles de la tarjeta y la dirección de la tarjeta de crédito en funding_instruments , y el monto a cobrar en las transactions . Aquí se pueden colocar múltiples objetos de transacción.

Por último, hacemos una solicitud a payment.create(...) , pasando nuestro objeto card_data , para procesar el pago.

paypal.payment.create(card_data, function(error, payment){
  if(error){
    console.error(error);
  } else {
    console.log(payment);
  }
});

Si la transacción fue exitosa, deberíamos ver un objeto de respuesta similar al siguiente:

{
  "id": "PAY-9BS08892W3794812YK4HKFQY",
  "create_time": "2016-04-13T19:49:23Z",
  "update_time": "2016-04-13T19:50:07Z",
  "state": "approved",
  "intent": "sale",
  "payer": {
    "payment_method": "credit_card",
    "funding_instruments": [
      {
        "credit_card": {
          "type": "visa",
          "number": "xxxxxxxxxxxx0331",
          "expire_month": "11",
          "expire_year": "2018",
          "first_name": "Joe",
          "last_name": "Shopper",
          "billing_address": {
            "line1": "52 N Main ST",
            "city": "Johnstown",
            "state": "OH",
            "postal_code": "43210",
            "country_code": "US"
          }
        }
      }
    ]
  },
  "transactions": [
    {
      "amount": {
        "total": "7.47",
        "currency": "USD",
        "details": {
          "subtotal": "7.41",
          "tax": "0.03",
          "shipping": "0.03"
        }
      },
      "description": "This is the payment transaction description.",
      "related_resources": [
        {
          "sale": {
            "id": "0LB81696PP288253D",
            "create_time": "2016-04-13T19:49:23Z",
            "update_time": "2016-04-13T19:50:07Z",
            "amount": {
              "total": "7.47",
              "currency": "USD"
            },
            "state": "completed",
            "parent_payment": "PAY-9BS08892W3794812YK4HKFQY",
            "links": [
              {
                "href": "https:\/\/api.sandbox.paypal.com\/v1\/payments\/sale\/0LB81696PP288253D",
                "rel": "self",
                "method": "GET"
              },
              {
                "href": "https:\/\/api.sandbox.paypal.com\/v1\/payments\/sale\/0LB81696PP288253D\/refund",
                "rel": "refund",
                "method": "POST"
              },
              {
                "href": "https:\/\/api.sandbox.paypal.com\/v1\/payments\/payment\/PAY-9BS08892W3794812YK4HKFQY",
                "rel": "parent_payment",
                "method": "GET"
              }
            ],
            "fmf_details": {
              
            },
            "processor_response": {
              "avs_code": "X",
              "cvv_code": "M"
            }
          }
        }
      ]
    }
  ],
  "links": [
    {
      "href": "https:\/\/api.sandbox.paypal.com\/v1\/payments\/payment\/PAY-9BS08892W3794812YK4HKFQY",
      "rel": "self",
      "method": "GET"
    }
  ],
  "httpStatusCode": 201
}

En este objeto de devolución, tener un state de approved nos dice que la transacción se realizó correctamente. Bajo el objeto de links hay una cantidad de enlaces de HATEOAS que proporcionan los siguientes pasos potenciales que se pueden tomar en la acción que se acaba de realizar. En este caso, podemos recuperar información sobre el pago realizando una solicitud GET al punto final self proporcionado.

Realizar un pago con una tarjeta de crédito abovedada (nodo)

En este ejemplo, veremos cómo almacenar una tarjeta de crédito utilizando la bóveda de PayPal, luego haremos referencia a esa tarjeta de crédito almacenada para procesar una transacción de tarjeta de crédito para un usuario.

La razón por la que querríamos usar la bóveda es para no tener que almacenar información confidencial de tarjetas de crédito en nuestros propios servidores. Simplemente hacemos referencia al método de pago a través de un ID de almacenamiento proporcionado, lo que significa que no tenemos que lidiar con muchas regulaciones de cumplimiento de PCI con el almacenamiento de las tarjetas de crédito por nosotros mismos.

Al igual que con las muestras anteriores, comenzamos con la configuración de nuestro entorno.

var paypal = require('paypal-rest-sdk'),
    uuid = require('node-uuid');

var client_id = 'YOUR CLIENT ID';
var secret = 'YOUR SECRET';

paypal.configure({
  'mode': 'sandbox', //sandbox or live
  'client_id': client_id,
  'client_secret': secret
});

La única diferencia con respecto a las muestras anteriores aquí es que requerimos un nuevo paquete, node-uuid , que se utilizará para generar UUID únicos para los pagadores cuando se almacena la tarjeta. Puede instalar ese paquete a través de:

npm install node-uuid

A continuación, definimos el objeto JSON de la tarjeta de crédito que se enviará a la bóveda de PayPal para su almacenamiento. Contiene información de la tarjeta, así como un ID de pagador único que generamos mediante el uso de node-uuid . Debe almacenar este payer_id único en su propia base de datos, ya que se utilizará al crear un pago con la tarjeta de almacenamiento.

var create_card_details = {
    "type": "visa",
    "number": "4417119669820331",
    "expire_month": "11",
    "expire_year": "2018",
    "first_name": "John",
    "last_name": "Doe",
    "payer_id": uuid.v4()
};

Por último, debemos almacenar la tarjeta de crédito y procesar el pago utilizando esa tarjeta. Para credit_card.create(...) una tarjeta de crédito, llamamos credit_card.create(...) , pasando el objeto credit_card_details que acabamos de crear. Si todo va bien, deberíamos devolver un objeto con detalles sobre la tarjeta abovedada. Por el bien de un pago con esa tarjeta, solo necesitamos realmente dos datos: el payer_id que ya almacenamos y el Id. De la bóveda, que también debe almacenarse como referencia en nuestra propia base de datos.

paypal.credit_card.create(create_card_details, function(error, credit_card){
    if(error){
        console.error(error);
    } else {
        var card_data = {
            "intent": "sale",
            "payer": {
                "payment_method": "credit_card",
                "funding_instruments": [{
                    "credit_card_token": {
                        "credit_card_id": credit_card.id,
                        "payer_id": credit_card.payer_id
                    }
                }]
            },
            "transactions": [{
                "amount": {
                    "total": "7.47",
                    "currency": "USD",
                    "details": {
                        "subtotal": "7.41",
                        "tax": "0.03",
                        "shipping": "0.03"
                    }
                },
                "description": "This is the payment transaction description." 
            }]
        };
        
        paypal.payment.create(card_data, function(error, payment){
            if(error){
                console.error(error);
            } else {
                console.log(JSON.stringify(payment));
            }
        });
    }
});

En la sección que sigue a la bóveda exitosa de la tarjeta de crédito, simplemente estamos definiendo los detalles de la tarjeta y procesando el pago, como hicimos con el ejemplo anterior del procesamiento de la tarjeta de crédito. La principal diferencia en la estructura del objeto card_data es la sección funding_instruments , que definimos bajo payer . En lugar de definir la información de la tarjeta de crédito, en su lugar usamos el siguiente objeto que contiene la referencia de la ID de la bóveda y la ID del pagador:

"credit_card_token": {
    "credit_card_id": credit_card.id,
    "payer_id": credit_card.payer_id
}

Así es como utilizamos una tarjeta abovedada para procesar un pago.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow