1.0.1 • Published 4 years ago

opayo v1.0.1

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago

OPayo

A Node.js Client for interracting with the OPayo(SagePay) API

NPM version Build Status

Documentation

See SagePay API Reference

Installation

Install the package with

npm install @mhayk/sagepay --save

or

yarn add @mhayk/sagepay

Usage

Create a Client instance and provide the access_token and environment you want to use.

const sagepay = require("@mhayk/sagepay");
const Client = sagepay.Client;

// Gets Access Token stored in environment variable
const VENDOR_NAME = process.env.VENDOR_NAME
const SANDBOX_INTEGRATION_KEY = process.env.SANDBOX_INTEGRATION_KEY
const SANDBOX_INTEGRATION_PASSWORD = process.env.SANDBOX_INTEGRATION_PASSWORD

const client = new Client({
      vendor_name: VENDOR_NAME,
      integration_key: SANDBOX_INTEGRATION_KEY,
      integration_password: SANDBOX_INTEGRATION_PASSWORD,
      environment: "sandbox",
      card: "007",
    });

console.log(client)

const merchant = await client.merchant_session_keys.create(
  { vendorName: VENDOR_NAME }
  );
const { expiry, merchantSessionKey } = merchant
console.log(`Expiry: ${expiry}, Merchant Session Key: ${merchantSessionKey}`)

client.merchantSessionKey = merchantSessionKey;

const card = {
  cardDetails: {
  cardholderName: 'TEST',
  cardNumber: '4929000005559',
  expiryDate: '0821',
  securityCode: '123'
  }
}
const newCardIdentifier = await client.card_identifiers.create(card)
const { cardIdentifier } = newCardIdentifier
console.log(`Card Identifier: ${cardIdentifier}`)

const payment = {
  transactionType: 'Payment',
  paymentMethod: {
    card: {
      merchantSessionKey,
      cardIdentifier,
    }
  },
  vendorTxCode: '0102030405-faraan',
  amount: 100,
  currency: 'GBP',
  description: 'MHAYK TEST LIBRARY',
  customerFirstName: 'MHAYK WHANDSON',
  customerLastName: 'DA SILVA LIMA',
  billingAddress: {
    address1: "11, Worton Road",
    city: 'London',
    postalCode: "TW7 6HJ",
    country: "GB"
  }
}
const transaction = await client.transactions.create(payment)
console.log(transaction)

Usage with Typescript

import { Client } from "@mhayk/sagepay";

// Gets Access Token stored in environment variable
const VENDOR_NAME = process.env.VENDOR_NAME
const SANDBOX_INTEGRATION_KEY = process.env.SANDBOX_INTEGRATION_KEY
const SANDBOX_INTEGRATION_PASSWORD = process.env.SANDBOX_INTEGRATION_PASSWORD

const client = new Client({
      vendor_name: VENDOR_NAME,
      integration_key: SANDBOX_INTEGRATION_KEY,
      integration_password: SANDBOX_INTEGRATION_PASSWORD,
      environment: "sandbox",
      card: "007",
    });

console.log(client)

const merchant = await client.merchant_session_keys.create(
  { vendorName: VENDOR_NAME }
  );
const { expiry, merchantSessionKey } = merchant
console.log(`Expiry: ${expiry}, Merchant Session Key: ${merchantSessionKey}`)

client.merchantSessionKey = merchantSessionKey;

const card = {
  cardDetails: {
  cardholderName: 'TEST',
  cardNumber: '4929000005559',
  expiryDate: '0821',
  securityCode: '123'
  }
}
const newCardIdentifier = await client.card_identifiers.create(card)
const { cardIdentifier } = newCardIdentifier
console.log(`Card Identifier: ${cardIdentifier}`)

const payment = {
  transactionType: 'Payment',
  paymentMethod: {
    card: {
      merchantSessionKey,
      cardIdentifier,
    }
  },
  vendorTxCode: '0102030405-faraan',
  amount: 100,
  currency: 'GBP',
  description: 'MHAYK TEST LIBRARY',
  customerFirstName: 'MHAYK WHANDSON',
  customerLastName: 'DA SILVA LIMA',
  billingAddress: {
    address1: "11, Worton Road",
    city: 'London',
    postalCode: "TW7 6HJ",
    country: "GB"
  }
}
const transaction = await client.transactions.create(payment)
console.log(transaction)

Events

The SagePay Client instance emits request and response events

const sagepay = require("@mhayk/sagepay");
const Client = sagepay.Client;

const VENDOR_NAME = process.env.VENDOR_NAME
const SANDBOX_INTEGRATION_KEY = process.env.SANDBOX_INTEGRATION_KEY
const SANDBOX_INTEGRATION_PASSWORD = process.env.SANDBOX_INTEGRATION_PASSWORD

// Gets Access Token stored in environment variable
const access_token = process.env.ACCESS_TOKEN;
const environment = "sandbox";

const client = new Client({
    vendor_name: VENDOR_NAME,
    integration_key: SANDBOX_INTEGRATION_KEY,
    integration_password: SANDBOX_INTEGRATION_PASSWORD,
    environment: "sandbox",
    card: "007",
  });

// Add the request event handler function:
client.on("request", request => {
  // Carry out some actions
});

// Add the request event handler function:
client.on("response", response => {
  // Carry out some actions
});

Avaliable resources

  • Merchant Session Keys
  • Card Identifiers
  • Transactions

Development

Running tests

$ npm install
$ npm test

or

$ yarn
$ yarn test

To use your Sandbox Access Token to run the tests, you need to set the file .env with the following variables:

VENDOR_NAME=
SANDBOX_INTEGRATION_KEY=
SANDBOX_INTEGRATION_PASSWORD=