Skip to content

Typescript wrapper for Culqi web services developed for Node.js with 0 runtime dependencies.

Notifications You must be signed in to change notification settings

giwiro/culqi-node

Repository files navigation

culqi-node

Node.js wrapper for Culqi web services. It is written in typescript using pure Node.js api with 0 runtime dependencies.

npm version Build Status Coverage Status License: MIT types code style: prettier Known Vulnerabilities

Install

# Get latest version
$ npm install culqi-node

Quick start

const Culqi = require('culqi-node');
const culqi = new Culqi({
    privateKey: 'sk_test_xxxxxxxxxxxxxxxx',
});

(async () => {
    const token = await culqi.tokens.getToken({
        id: 'tkn_test_xxxxxxxxxxxxxxxx',
    });
    console.log(token.id);
})();

Common operations

In a regular flow, some other culqi frontend library such as the Android or CulqiJS, would generate the token in a "safe" way. That token is going to be the input for generating charges.

Create charge

const Culqi = require('culqi-node');
const culqi = new Culqi({
    privateKey: 'sk_test_xxxxxxxxxxxxxxxx',
});

(async () => {
    const charge = await culqi.charges.createCharge({
        amount: '10000',
        currency_code: 'PEN',
        email: '[email protected]',
        source_id: 'tkn_test_xxxxxxxxxxxxxxxx',
    });

    console.log(charge.id);
})();

Create charge and the capture it

const Culqi = require('culqi-node');
const culqi = new Culqi({
    privateKey: 'sk_test_xxxxxxxxxxxxxxxx',
});

(async () => {
    const charge = await culqi.charges.createCharge({
        amount: '10000',
        currency_code: 'PEN',
        email: '[email protected]',
        source_id: 'tkn_test_xxxxxxxxxxxxxxxx',
        capture: false,
    });
    
    // Do some other operations, such as custom self-made fraud prevention

    const capturedCharge = await culqi.charges.captureCharge({
        // chr_test_xxxxxxxxxxxxxxxx
        id: charge.id,
    });
    
    // This should be true
    console.log(capturedCharge.capture);
})();

Refund charge

const Culqi = require('culqi-node');
const culqi = new Culqi({
    privateKey: 'sk_test_xxxxxxxxxxxxxxxx',
});

(async () => {
    const refund = await culqi.refunds.createRefund({
        amount: 2000,
        charge_id: 'chr_test_xxxxxxxxxxxxxxxx',
        reason: 'Fraud',
    });
    
    console.log(refund.id);
})();

Uncommon operations

Create token

Normally you wouldn't create the token by yourself. To do so, or if any credit card data goes through your server, you will need to be PCI compliant. More information here.

In order to create a token, you will need to create a Culqi instance a bit differently. You will need to provide the pciCompliant property as true and publicKey.

const Culqi = require('culqi-node');
const culqi = new Culqi({
    privateKey: 'sk_test_xxxxxxxxxxxxxxxx',
    pciCompliant: true,
    publicKey: 'pk_test_xxxxxxxxxxxxxxxx',
});

(async () => {
    const token = await culqi.tokens.createToken({
        card_number: '4111111111111111',
        cvv: '123',
        expiration_month: '09',
        expiration_year: '2025',
        email: '[email protected]',
    });
    
    console.log(token.id);
})();

Available operations

  • Create token
  • Get token
  • Get tokens
  • Update token
  • Create charge
  • Get charge
  • Get charges
  • Update charge
  • Capture charge
  • Create refund
  • Get refund
  • Get refunds
  • Update refund
  • Create customer
  • Get customer
  • Get customers
  • Update customer
  • Delete customer
  • Create card
  • Get card
  • Get cards
  • Update card
  • Delete card
  • Create plan
  • Get plan
  • Get plans
  • Update plan
  • Delete plan
  • Create subscription
  • Get subscription
  • Get subscriptions
  • Update subscription
  • Delete subscription
  • Create order
  • Confirm order
  • Get order
  • Get orders
  • Update order
  • Delete order
  • Get event
  • Get events

About

Typescript wrapper for Culqi web services developed for Node.js with 0 runtime dependencies.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published