2.0.2 • Published 1 year ago

openpay-co v2.0.2

Weekly downloads
-
License
-
Repository
-
Last release
1 year ago

Openpay nodejs

Installation

npm install openpay

Documentation

Full API documentation available at http://docs.openpay.mx/.

Overview

//class
var Openpay = require('openpay');
//instantiation
var openpay = new Openpay(' your merchant id ', ' your private key ', [ isProduction ]);
//use the api
openpay.< resource_name >.< method_name >( ... )

All methods accept an optional callback as last argument.

The callback function should follow the format: function(error, body, response) {...}.

  • error: null if the response status code is 200, 201, 204
  • body: null if the response status code is different from 200, 201, 204

Examples

Creating a customer

var newCustomer = {
  "name":"John",
  "email":"johndoe@example.com",
  "last_name":"Doe",
  "address":{
    "city":"Queretaro",
    "state":"Queretaro",
    "line1":"Calle Morelos no 10",
    "line2":"col. san pablo",
    "postal_code":"76000",
    "country_code":"MX"
  },
  "phone_number":"44209087654"
};

openpay.customers.create(newCustomer, function(error, body, response) {
    error;    // null if no error occurred (status code != 200||201||204)
    body;     // contains the object returned if no error occurred (status code == 200||201||204)
    response; // contains the complete response including the status, statusCode, statusMessage, and more information
});

Charging

var newCharge = {
  "method": "card",
  "card": {
    "card_number": "4111111111111111",
    "holder_name": "John Doe",
    "expiration_year": "20",
    "expiration_month": "12",
    "cvv2": "110",
  },
  "amount" : 200.00,
  "description" : "Service Charge",
  "order_id" : "oid-00721"
};
openpay.charges.create(testCreateCharge, function (error, body, response){
  // ...
});

Payout

var payout = {
  "method": "bank_account",
  "bank_account":{
    "clabe":"012298026516924616",
    "holder_name": "John Doe"
  },
  "amount" : 10.50,
  "description" : "Monthly payment"
};
openpay.payouts.create(payout, function (error, body, response){
  // ...
});

Configuration

Before use the library will be necessary to set up your Merchant ID and Private key.

var Openpay = require('openpay');
var openpay = new Openpay('your merchant id', 'your private key', 'mx', false);
openpay.setTimeout(30000);

In addition, you can set the merchant id, private key, and the mode like this

openpay.setMerchantId(' your merchant id ');
openpay.setPrivateKey(' your private key ');
openpay.setProductionReady(true)

Once configured the library, you can use it to interact with Openpay API services.

Development

To run the tests you'll need your sandbox credentials: merchant id and private key from your Dashboard:

$ npm install -g mocha
$ npm test

Implementation

Usage for Mexico

Bank accounts

Creating a bank account

var customerId = 'customer ID';
var newBankAccount = {
    "clabe": "111111111111111111",
    "holder_name": "Juan H",
    "alias": "Alias"
};
openpay.customers.bankaccounts.create(
    customerId,
    newBankAccount,
    function (error, body, response) {
        // ...
    });

Get bank account:

var customerId = 'Customer ID';
var bankAccountId = 'Bank Account Id';
openpay.customers.bankaccounts.get(
    customerId,
    bankAccountId,
    function (error, body, response) {
        // ...
    });

Delete bank account:

var customerId = 'Customer ID';
var bankAccountId = 'Bank Account Id';
openpay.customers.bankaccounts.delete(
    customerId,
    bankAccountId,
    function (error, body, response) {
        // ...
    });

List bank accounts:

var customerId = 'Customer ID';
var data = {
    "creation": "2021-10-22", // Format yyyy-mm-dd
    "offset": "",
    "limit": ""
}
openpay.customers.bankaccounts.list(
    customerId,
    data,
    function (error, body, response) {
        // ...
    });

Instead of the 'creation' field in the 'data' object, you can use:

  • "creationgte" : "2021-10-22" to find bank accounts created after the given date
  • "creationlte" : "2021-10-22" to find bank accounts created before the given date

Cards

Create a card

var newCard = {
    "card_number": "4111111111111111",
    "holder_name": "Juan Perez",
    "expiration_year": 2021,
    "expiration_month": "12",
    "cvv2": "111"
};
openpay.cards.create(
    newCard,
    function (error, body, response) {
        // ...
    });

Other way to create a card is through a customer

var customerId = 'Customer ID';
var newCard = {
    "card_number": "4111111111111111",
    "holder_name": "Juan Perez",
    "expiration_year": 2021,
    "expiration_month": "12",
    "cvv2": "111"
};
openpay.customers.cards.create(
    customerId, newCard,
    function (error, body, response) {
        // ...
    });

Get a card

var cardId = 'Card ID';
openpay.cards.get(
    cardId,
    function (error, body, response) {
        // ...
    });

Just as the method to create a new card, you can get a card through a customer, as is shown below:

var cardId = 'Card ID';
var customerId = 'Customer ID';
openpay.customers.cards.get(
    cardId,
    customerId,
    function (error, body, response) {
        // ...
    });

Charges

Customers

Fees

Groups

Payouts

Plans

Subscriptions

Tests

Transfers

Usage for Colombia

Cards

Create a card

There are three ways to create a card, the first one is with a token.

var data = {
    "token_id": "Token ID",
    "device_session_id": "Device session ID"
};
openpay.cards.create(
    data,
    function (error, body, response) {
        // ...
    });

The second one is with the card information only.

var newCard = {
    "card_number": "4111111111111111",
    "holder_name": "Juan Perez",
    "expiration_year": '28',
    "expiration_month": "12",
    "cvv2": "111"
};
openpay.cards.create(newCard,
    function (error, body, response) {
        // ...
    });

And the last one is through a customer.

var customerId = 'Customer ID';
var newCard = {
    "card_number": "4111111111111111",
    "holder_name": "Juan Perez",
    "expiration_year": '28',
    "expiration_month": "12",
    "cvv2": "111"
};
openpay.customers.cards.create(
    customerId,
    newCard,
    function (error, body, response) {
        // ...
    });

Get a card

Without customer
var cardId = 'Card ID';
openpay.cards.get(
    cardId,
    function (error, body, response) {
        // ...
    });
With customer
var customerId = 'Customer ID';
var cardId = 'Card ID';
openpay.customers.cards.get(
    customerId,
    cardId,
    function (error, body, response) {
        // ...
    });

Delete a card

Without customer
var cardId = 'Card ID';
openpay.cards.delete(
    cardId,
    function (error, body, response) {
        // ...
    });
With customer
var customerId = 'Customer ID';
var cardId = 'Card ID';
openpay.customers.cards.delete(
    customerId,
    cardId,
    function (error, body, response) {
        // ...
    });

List cards

Without customer
var searchParams = {
    "creation": "2021-10-22", // Format yyyy-mm-dd
    "offset": "",
    "limit": ""
}
openpay.cards.list(
    searchParams,
    function (error, body, response) {
        // ...
    });
With customer
var customerId = 'Customer ID';
var searchParams = {
    "creation": "2021-10-22", // Format yyyy-mm-dd
    "offset": "",
    "limit": ""
}
openpay.customers.cards.list(
    customerId,
    searchParams,
    function (error, body, response) {
        // ...
    });

Instead of the 'creation' field in the 'searchParams' object, you can use:

  • "creationgte" : "2021-10-22" to find bank accounts created after the given date
  • "creationlte" : "2021-10-22" to find bank accounts created before the given date

Charges

Create a charge

With customer
var customerId = 'Customer ID';
var newCharge = {
    "method": "card",
    "source_id": "",
    "amount": 20,
    "description": "Test Charge",
    "currency": "COP",
    "device_session_id": "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f"
}
openpay.customers.charges.create(
    customerId,
    newCharge,
    function (error, body, response) {
        // ...
    });
Without customer
var newCharge = {
    "source_id": "kdx205scoizh93upqbte",
    "method": "card",
    "amount": 200,
    "currency": "COP",
    "iva": "10",
    "description": "Cargo inicial a mi cuenta",
    "device_session_id": "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f",
    "customer": {
        "name": "Cliente Colombia",
        "last_name": "Vazquez Juarez",
        "phone_number": "4448936475",
        "email": "juan.vazquez@empresa.co"
    }
}

penpay.charges.create(
    newCharge,
    function (error, body, response) {
        // ...
    });

Create a store charge

With customer
var customerId = 'Customer ID';
var newCharge = {
    "method": "store",
    "source_id": "",
    "amount": 20,
    "description": "Test Charge",
    "currency": "COP",
    "device_session_id": null
}
openpay.customers.charges.create(
    customerId,
    newCharge,
    function (error, body, response) {
        // ...
    });
Without customer
var newCharge = {
    "source_id": null,
    "method": "store",
    "amount": 200,
    "currency": "COP",
    "iva": "10",
    "description": "Cargo inicial a mi cuenta",
    "device_session_id": null,
    "customer": {
        "name": "Cliente Colombia",
        "last_name": "Vazquez Juarez",
        "phone_number": "4448936475",
        "email": "juan.vazquez@empresa.co"
    }
}

penpay.charges.create(
    newCharge,
    function (error, body, response) {
        // ...
    });

Refund a charge

Only card charges can be refunded.

var chargeId = 'Charge ID';
var data = {
    "description": "testing refound",
    "amount": 200
}
openpay.charges.refund(
    chargeId,
    data,
    function (error, body, response) {
        // ...
    });

Get a charge

Without customer
var chargeId = 'Charge ID';
openpay.charges.get(
    chargeId,
    function (error, body, response) {
        // ...
    });
With customer
var customerId = 'Customer ID';
var chargeId = 'Charge ID';
openpay.customers.charges.get(
    customerId,
    chargeId,
    function (error, body, response) {
        // ...
    });

List charges

Without customer
var searchParams = {
    'order_id': 'Order ID',
    'creation': 'yyyy-mm-dd',
    'offset': 1,
    'limit': 1,
    'amount': 100,
    'status': 'IN_PROGRESS'
}
openpay.charges.list(searchParams,
    function (error, body, response) {
        // ...
    });
With customer
var customerId = 'Customer ID';
var searchParams = {
    'order_id': 'Order ID',
    'creation': 'yyyy-mm-dd',
    'offset': 1,
    'limit': 1,
    'amount': 100,
    'status': 'IN_PROGRESS'
}
openpay.customers.charges.list(
    customerId,
    searchParams,
    function (error, body, response) {
        // ...
    });

Instead of the 'creation' field in the 'searchParams' object, you can use:

  • "creationgte" : "2021-10-22" to find charges created after the given date
  • "creationlte" : "2021-10-22" to find charges created before the given date

Instead of the 'amount' field in the 'searchParams' object, you can use:

  • "amountgte" : 100 to find charges with amount bigger than the amount given
  • "amountlte" : 100 to find charges with amount smaller than the amount given

Allowed statuses:

  • IN_PROGRESS
  • COMPLETED
  • REFUNDED
  • CHARGEBACK_PENDING
  • CHARGEBACK_ACCEPTED
  • CHARGEBACK_ADJUSTMENT
  • CHARGE_PENDING
  • CANCELLED
  • FAILED

Customers

####Create a customer

var newCustomer = {
    'external_id' : '',
    "name": "Pedro Diego",
    "last_name": "Alatorre Martínez",
    "email": "pedro.alatorre@comercio.com",
    "phone_number" : "5744484951",
    "customer_address": {
        "department":"Medellín",
        "city":"Antioquía",
        "additional":"Avenida 7f bis # 138-58 Apartamento 942"
    }
};
openpay.customers.create(
    newCustomer,
    function (error, body, response) {
        // ...
    });

Update a customer

var customerId = 'Customer ID';
var newData = {
    "name": "Pedro Diego",
    "last_name": "Alatorre Martínez",
    "email": "pedro.alatorre@comercio.com",
    "phone_number": "5744484951",
    "customer_address": {
        "department": "Medellín",
        "city": "Antioquía",
        "additional": "Avenida 7f bis # 138-58 Apartamento 942"
    }
};
openpay.customers.update(
    customerId,
    newData,
    function (error, body, response) {
        // ...
    });

Get a customer

var customerId = 'Customer ID';
openpay.customers.get(
    customerId,
    function (error, body, response) {
        // ...
    });

Delete a customer

var customerId = 'Customer ID';
openpay.customers.delete(
    customerId,
    function (error, body, response) {
        // ...
    });

List clients

const searchParams = {
    'external_id': 'External ID',
    'creation': 'yyyy-mm-dd',
    'offset': 1,
    'limit': 1
}
openpay.customers.list(
    searchParams,
    function (error, body, response) {
        // ...
    });

Instead of the 'creation' field in the 'searchParams' object, you can use:

  • "creationgte" : "2021-10-22" to find customers created after the given date
  • "creationlte" : "2021-10-22" to find customers created before the given date

Plans

Create a plan

var newPlan = {
    "amount": 150,
    "status_after_retry": "CANCELLED",
    "retry_times": 2,
    "name": "Curso de ingles",
    "repeat_unit": "month",
    "trial_days": "30",
    "repeat_every": "1"
};
openpay.plans.create(
    newPlan,
    function (error, body, response) {
        // ...
    });

Allowed values for 'status_after_retry':

  • UNPAID
  • CANCELLED

Update a plan

var planId = 'Plan ID';
var newData = {
    "name": "New name",
    "trial_days": 1
}
openpay.plans.update(
    planId,
    newData,
    function (error, body, response) {
        // ...
    });

Get a plan

var planId = 'Plan ID';
openpay.plans.get(
    planId,
    function (error, body, response) {
        // ...
    });

Delete a plan

var planId = 'Plan ID';
openpay.plans.delete(
    planId,
    function (error, body, response) {
        // ...
    });

List plans

var searchParams = {
    'creation': 'yyyy-mm-dd',
    'limit': 10,
    'offset': 1
};
openpay.plans.list(searchParams, function (error, body, response) {
    // ...
});

Instead of the 'creation' field in the 'searchParams' object, you can use:

  • "creationgte" : "2021-10-22" to find plans created after the given date
  • "creationlte" : "2021-10-22" to find plans created before the given date

PSE

Create PSE

Without a client
var newPse = {
    "method": "bank_account",
    "amount": 10000,
    "currency": "COP",
    "description": "Cargo inicial a mi cuenta",
    "iva": "1900",
    "redirect_url": "/",
    "customer": {
        "name": "Cliente Colombia",
        "last_name": "Vazquez Juarez",
        "email": "juan.vazquez@empresa.co",
        "phone_number": "4448936475",
        "requires_account": false,
        "customer_address": {
            "department": "Medellín",
            "city": "Antioquía",
            "additional": "Avenida 7m bis #174-25 Apartamento 637"
        }
    }
}
openpay.pse.create(
    newPse,
    function (error, body, response) {
        // ...
    });
With existing client
var customerId = 'Customer ID';
var newPse = {
    "method": "bank_account",
    "amount": 10000,
    "currency": "COP",
    "description": "Cargo inicial a mi cuenta",
    "iva": "1900",
    "redirect_url": "/"
}
openpay.customers.pse.create(
    customerId,
    newPse,
    function (error, body, response) {
        // ...
    });

Subscriptions

Create a subscription

var customerId = 'Customer ID';
var newSubscription = {
    "card": {
        "card_number": "4111111111111111",
        "holder_name": "Juan Perez Ramirez",
        "expiration_year": "20",
        "expiration_month": "12",
        "cvv2": "110",
        "device_session_id": "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f"
    },
    "plan_id": "pbi4kb8hpb64x0uud2eb",
    "trial_end_date": "yyyy-mm-dd",
    "source_id": "pbiskbfhps64f0uudgeb"
}
openpay.customers.subscriptions.create(
    customerId,
    newSubscription,
    function (error, body, response) {
        // ...
    });

Update subscription

var subscriptionId = 'Subscription ID';
const newData = {
    "trial_end_date": "2021-12-12",
    "cancel_at_period_end": true,
    "source_id": "pbiskbfhps64f0uudgeb",
    "card": {
        "card_number": "4111111111111111",
        "holder_name": "Juan Perez Ramirez",
        "expiration_year": "20",
        "expiration_month": "12",
        "cvv2": "110",
        "device_session_id": "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f"
    }
}
openpay.customers.subscriptions.update(
    subscriptionId,
    newData,
    function (error, body, response) {
        // ...
    });

Get a subscription

var customerId = 'Customer ID';
var subscriptionId = 'Subscription ID';
openpay.customers.subscriptions.get(
    customerId,
    subscriptionId,
    function (error, body, response) {
        // ...
    });

Cancel a subscription

var subscriptionId = 'Subscription ID';
openpay.customers.subscriptions.delete(
    subscriptionId,
    function (error, body, response) {
        // ...
    });

List subscriptions

var searchParams = {
    'creation': 'yyyy-mm-dd',
    'limit': 10,
    'offset': 1
};
openpay.customers.subscriptions.list(
    searchParams,
    function (error, body, response) {
        // ...
    });

Instead of the 'creation' field in the 'searchParams' object, you can use:

  • "creationgte" : "2021-10-22" to find subscriptions created after the given date
  • "creationlte" : "2021-10-22" to find subscriptions created before the given date

Webhooks

Create a webhook

var newWebhook = {
    "url": "https://my-site.com/my-webhook",
    "user": "juanito",
    "password": "passjuanito",
    "event_types": [
        "charge.refunded",
        "charge.failed",
        "charge.cancelled",
        "charge.created",
        "chargeback.accepted"
    ]
}
openpay.webhooks.create(
    newWebhook,
    function (error, body, response) {
        // ...
    });

Get a webhook

var webhookId = 'Webhook ID';
openpay.webhooks.get(
    webhookId,
    function (error, body, response) {
        // ...
    });

Delete a webhook

var webhookId = 'Webhook ID';
openpay.webhooks.delete(
    webhookId,
    function (error, body, response) {
        // ...
    });

List webhooks

openpay.webhooks.list(
    function (error, body, response) {
        // ...
    });

Tokens

Create a token

var newToken = {
    "card_number": "4111111111111111",
    "holder_name": "Juan Perez Ramirez",
    "expiration_year": "29",
    "expiration_month": "12",
    "cvv2": "110",
    "address": {
        "city": "Bogotá",
        "country_code": "CO",
        "postal_code": "110511",
        "line1": "Av 5 de Febrero",
        "line2": "Roble 207",
        "line3": "col carrillo",
        "state": "Bogota"
    }
};
openpay.tokens.create(
    tokenNew,
    function (error, body, response) {
        // ...
    });

Get a token

var tokenId = 'Token ID';
openpay.tokens.get(
    tokenId,
    function (error, body, response) {
        // ...
    });

Stores

List stores

var location = {
    "latitud": 4.65589142889691,
    "longitud": -74.11335673251888,
    "kilometers": 10,
    "amount": 1
}
openpay.stores.list(
    location,
    function (error, body, response) {
        // ...
    });

Usage for Peru

Charges

####Create a charge

With customer
var customerId = 'Customer ID';
const newCharge = {
    "source_id": "kdx205scoizh93upqbte",
    "method": "card",
    "amount": 716,
    "currency": "PEN",
    "description": "Cargo inicial a mi cuenta",
    "order_id": "oid-65584",
    "device_session_id": "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f"
}
openpay.customers.charges.create(
    customerId,
    newCharge,
    function (error, body, response) {
        // ...
    });
Without customer
var newCharge = {
    "source_id": "kdx205scoizh93upqbte",
    "method": "card",
    "amount": 100,
    "currency": "PEN",
    "description": "Cargo inicial a mi cuenta",
    "order_id": "oid-65584",
    "device_session_id": "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f",
    "customer": {
        "name": "Cliente Perú",
        "last_name": "Vazquez Juarez",
        "phone_number": "4448936475",
        "email": "juan.vazquez@empresa.pe"
    }
};
openpay.charges.create(
    newCharge,
    function (error, body, response) {
        // ...
    });
Store charge
var newCharge = {
    "source_id": null,
    "method": "store",
    "amount": 100,
    "currency": "PEN",
    "description": "Cargo inicial a mi cuenta",
    "order_id": "oid-65584",
    "device_session_id": "kR1MiQhz2otdIuUlQkbEyitIqVMiI16f",
    "customer": {
        "name": "Cliente Perú",
        "last_name": "Vazquez Juarez",
        "phone_number": "4448936475",
        "email": "juan.vazquez@empresa.pe"
    }
};
openpay.charges.create(
    newCharge,
    function (error, body, response) {
        // ...
    });

Get a charge

Without customer
var chargeId = 'Charge ID';
openpay.charges.get(
    chargeId,
    function (error, body, response) {
        // ...
    });
With customer
var customerId = 'Customer ID';
var chargeId = 'Charge ID';
openpay.customers.charges.get(
    customerId,
    chargeId,
    function (error, body, response) {
        // ...
    });

List charges

Without customer
var searchParams = {
    'order_id': 'Order ID',
    'creation': 'yyyy-mm-dd',
    'offset': 1,
    'limit': 1,
    'amount': 100,
    'status': 'IN_PROGRESS'
}
openpay.charges.list(
    searchParams,
    function (error, body, response) {
        // ...
    });

######With customer

var customerId = 'Customer ID';
var searchParams = {
    'order_id': 'Order ID',
    'creation': 'yyyy-mm-dd',
    'offset': 1,
    'limit': 1,
    'amount': 100,
    'status': 'IN_PROGRESS'
};

openpay.customers.charges.list(
    customerId,
    searchParams,
    function (error, body, response) {
        // ...
    });

Instead of the 'creation' field in the 'searchParams' object, you can use:

  • "creationgte" : "2021-10-22" to find charges created after the given date
  • "creationlte" : "2021-10-22" to find charges created before the given date

Instead of the 'amount' field in the 'searchParams' object, you can use:

  • "amountgte" : 100 to find charges with amount bigger than the amount given
  • "amountlte" : 100 to find charges with amount smaller than the amount given

Allowed statuses:

  • IN_PROGRESS
  • COMPLETED
  • REFUNDED
  • CHARGEBACK_PENDING
  • CHARGEBACK_ACCEPTED
  • CHARGEBACK_ADJUSTMENT
  • CHARGE_PENDING
  • CANCELLED
  • FAILED

Checkouts

Create a checkout

Without customer
var newCheckout = {
    "amount": 250,
    "currency": "PEN",
    "description": "Cargo cobro con link",
    "redirect_url": "https://misitioempresa.pe",
    "order_id": "oid-66393",
    "expiration_date": "2021-08-31 12:50",
    "send_email": "true",
    "customer": {
        "name": "Cliente Perú",
        "last_name": "Vazquez Juarez",
        "phone_number": "4448936475",
        "email": "juan.vazquez@empresa.pe"
    }
}
openpay.checkouts.create(
    newCheckout,
    function (error, body, response) {
        // ...
    });
With customer
var customerId = 'Customer ID';
var newCheckout = {
    "amount": 250,
    "currency": "PEN",
    "description": "Cargo cobro con link cliente",
    "redirect_url": "https://misitioempresa.pe",
    "order_id": "oid-87491",
    "send_email": "true"
}
openpay.customers.checkouts.create(
    customerId,
    newCheckout,
    function (error, body, response) {
        // ...
    });

List checkouts

var searchParams = {
    "limit": 2,
    "startDate": "20211001", // Format: yyyymmdd
    "endDate": "20211011" // Format: yyyymmdd
};
openpay.checkouts.list(
    searchParams,
    function (error, body, response) {
        // ...
    });

Update checkout

var checkoutId = 'Checkout ID';
var newStatus = "available";
var newData = {
    "expiration_date": "2021-10-26 13:43" //Format: yyyy-mm-dd HH:mm
}

openpay.checkouts.update(
    checkoutId,
    newStatus,
    newData,
    function (error, body, response) {
        // ...
    });

Allowed statuses:

  • available
  • other
  • other

Get checkout

var checkoutId = 'Checkout ID';
openpay.checkouts.get(
    checkoutId,
    function (error, body, response) {
        // ...
    });

Customers

Create a customer

var newCustomer = {
    "name": "Juan",
    "last_name": "Perez",
    "email": "juan.perez.@email.com",
    "phone_number": "1234567890",
    "address": {
        "country_code": "PE",
        "postal_code": "12345",
        "city": "Lima",
        "state": "Lima",
        "line1": "Perú",
        "line2": "Perú",
        "line3": "Perú"
    }
};
openpay.customers.create(
    newCustomer,
    function (error, body, response) {
        // ...
    });

Update a customer

var customerId = 'Customer ID';
var newData = {
    "name": "Juan",
    "last_name": "Perez",
    "email": "juan.perez.@email.com",
    "phone_number": "1234567890",
    "address": {
        "country_code": "PE",
        "postal_code": "12345",
        "city": "Lima",
        "state": "Lima",
        "line1": "Perú",
        "line2": "Perú",
        "line3": "Perú"
    }
}
openpay.customers.update(
    customerId,
    newData,
    function (error, body, response) {
        // ...
    });

Get a customer

var customerId = 'Customer ID';
openpay.customers.get(
    customerId,
    function (error, body, respose) {
        // ...
    });

Delete a customer

var customerId = 'Customer ID';
openpay.customers.delete(
    customerId,
    function (error, body, respose) {
        // ...
    });

List clients

var searchParams = {
    'external_id': 'External ID',
    'creation': 'yyyy-mm-dd',
    'offset': 1,
    'limit': 1
};
openpay.customers.list(
    searchParams,
    function (error, body, response) {
        // ...
    });

Instead of the 'creation' field in the 'searchParams' object, you can use:

  • "creationgte" : "2021-10-22" to find customers created after the given date
  • "creationlte" : "2021-10-22" to find customers created before the given date

Cards

Create a card

With customer
var customerId = 'Customer ID';
var newCard = {
    "holder_name": "Juan Perez",
    "card_number": "4111111111111111",
    "cvv2": "651",
    "expiration_month": "09",
    "expiration_year": "25"
};
openpay.customers.cards.create(
    customerId,
    newCard,
    function (error, body, response) {
        // ...
    });
Without customer
var newCard = {
    "holder_name": "Juan Perez",
    "card_number": "4111111111111111",
    "cvv2": "651",
    "expiration_month": "09",
    "expiration_year": "25"
};
openpay.cards.create(
    newCard,
    function (error, body, response) {
        // ...
    });
With Token
var data = {
    "token_id": "Token ID",
    "device_session_id": "Device session ID"
};
openpay.customers.cards.create(
    data,
    function (error, body, response) {
        // ...
    });
With Token and customer
var data = {
    "token_id": "Token ID",
    "device_session_id": "Device session ID"
};
var customerId = 'Customer ID';
openpay.customers.cards.create(
    customerId,
    data,
    function (error, body, response) {
        // ...
    });

Get a card

Without customer
var cardId = 'Card ID';
openpay.cards.get(
    cardId,
    function (error, body, response) {
        // ...
    });
With customer
var customerId = 'Customer ID';
var cardId = 'Card ID';
openpay.customers.cards.get(
    customerId,
    cardId,
    function (error, body, response) {
        // ...
    });

Delete a card

With customer
var customerId = 'Customer ID';
var cardId = 'Card ID';
openpay.customers.cards.delete(
    customerId,
    cardId,
    function (error, body, response) {
        // ...
    });
Without customer
var cardId = 'Card ID';
openpay.cards.delete(
    cardId,
    function (error, body, response) {
        // ...
    });

List cards

With customer
var customerId = 'Customer ID';
var searchParams = {
    'creation': '2021-01-01', // Format yyyy-mm-dd
    'offset': 10,
    'limit': 1
};
openpay.customers.cards.list(
    customerId,
    searchParams,
    function (error, body, response) {
        // ...
    });
Without customer
var searchParams = {
    'creation': '2021-01-01', // Format yyyy-mm-dd
    'offset': 10,
    'limit': 1
};
openpay.cards.list(
    searchParams,
    function (error, body, response) {
        // ...
    });

Instead of the 'creation' field in the 'searchParams' object, you can use:

  • "creationgte" : "2021-10-22" to find cards created after the given date
  • "creationlte" : "2021-10-22" to find cards created before the given date

Webhooks

Create a webhook

var webhook = {
    "url": "https://mysite.com/myWebhook",
    "user": "juanito",
    "password": "passjuanito",
    "event_types": [
        "charge.failed",
        "charge.cancelled",
        "charge.created",
        "chargeback.accepted"
    ]
}
openpay.webhooks.create(webhook, function (error, body, response) {
            printLog(response.statusCode, body, error);
            assert.equal(response.statusCode, 201, '');
            done();
        });

The allowed values fot the field event_types are:

  • charge.refunded
  • charge.failed
  • charge.cancelled
  • charge.created
  • charge.succeeded
  • charge.rescored.to.decline
  • subscription.charge.failed
  • payout.created
  • payout.succeeded
  • payout.failed
  • transfer.succeeded
  • fee.succeeded
  • fee.refund.succeeded
  • spei.received
  • chargeback.created
  • chargeback.rejected
  • chargeback.accepted
  • order.created
  • order.activated
  • order.payment.received
  • order.completed
  • order.expired
  • order.cancelled
  • order.payment.cancelled

Get a webhook

var webhookId = 'Webhook ID';
openpay.webhooks.get(webhookId,
    function (error, body, response) {
        // ...
    });

Delete a webhook

var webhookId = 'Webhook ID';
openpay.webhooks.delete(
    webhookId,
    function (error, body, response) {
        // ...
    });

List webhooks

openpay.webhooks.list(
    function (error, body, response) {
        // ...
    });

Tokens

Create a token

const newToken = {
    "card_number": "4111111111111111",
    "holder_name": "Juan Perez Ramirez",
    "expiration_year": "21",
    "expiration_month": "12",
    "cvv2": "110",
    "address": {
        "city": "Lima",
        "country_code": "PE",
        "postal_code": "110511",
        "line1": "Av 5 de Febrero",
        "line2": "Roble 207",
        "line3": "col carrillo",
        "state": "Lima"
    }
}
openpay.tokens.create(
    newToken,
    function (error, body, response) {
        // ...
    });

Get a token

var tokenId = 'Token ID';
openpay.tokens.get(
    tokenId,
    function (error, body, response) {
        // ...
    });