@proteansoftware/capacitor-square
TypeScript icon, indicating that this package has built-in type declarations

4.1.1 • Public • Published

@proteansoftware/capacitor-square

Integrate with Square Payments SDK

Install

npm install @proteansoftware/capacitor-square
npx cap sync

Usage

App Initalisation - app.component.ts (Angular example)

import { App } from "@capacitor/app";
import { Platform } from "@ionic/angular";
import { CapacitorSquare } from "@proteansoftware/capacitor-square";

export class AppComponent {
  constructor(private platform: Platform) {
    this.initializeApp();
  }
  
  private void initializeApp() {
    this.platform.ready().then(() => {
      App.addListener("appUrlOpen", (data: URLOpenListenerEvent) => {
        console.log("appUrlOpen: " + data.url);

        if (data.url.toLowerCase().startsWith("app-url-scheme://callback-url")) {
          CapacitorSquare.handleIosResponse({
            url: data.url
          }).then(() => {
            console.log("handle ios callback - successful");
          }).catch(e => {
            console.error("handle ios callback - error - " + e);
          });
        }
      });
    });
  }
}

Payment flow

import { CapacitorSquare } from "@proteansoftware/capacitor-square";

//
// Initalise the square plugin
CapacitorSquare.initApp({
  applicationId: "Some square app id"
}).then(() => {
  console.log("Square payment ready");
}).catch(error => {
  console.error(error);
});

// Listen for sucessful payments
CapacitorSquare.addListener("transactionComplete", callback => {
  console.log("clientTransactionId:" + callback.clientTransactionId);
  console.log("serverTransactionId:" + callback.serverTransactionId);
});

// Listen for failed payments
CapacitorSquare.addListener("transactionFailed", callback => {
  console.error(callback.error);
});

// Initiate a transaction
CapacitorSquare.startTransaction({
  totalAmount: 100, // amount in pennies/cents
  currencyCode: "GBP", // ISO currency code, must be support by square
  allowedPaymentMethods: ["CARD"], // Sqaure TendType: https://developer.squareup.com/docs/api/point-of-sale/android/com/squareup/sdk/pos/ChargeRequest.TenderType.html
  autoReturnTimeout: 4000, // The timeout to set in milliseconds, or AutoReturn.NoTimeout. If you specify a timeout, it must be between 3200 milliseconds and 10000 milliseconds.
  callbackUrl: "app-url-scheme://callback-url" // see iOS setup
}).then(() => {
  console.log("transaction started");
}).catch(error => {
  console.error(error);
});

Note: autoReturnTimeout is only available on Android

Follow these setup steps from square to enable call back to your app: Square Documentation.

API

initApp(...)

initApp(options: { applicationId: string; }) => any
Param Type
options { applicationId: string; }

Returns: any


startTransaction(...)

startTransaction(options: { totalAmount: number; currencyCode: string; allowedPaymentMethods?: string[] | null; autoReturnTimeout?: number | AutoReturn.NoTimeout | null; callbackUrl?: string | null; }) => any
Param Type
options { totalAmount: number; currencyCode: string; allowedPaymentMethods?: {} | null; autoReturnTimeout?: number | null; callbackUrl?: string | null; }

Returns: any


handleIosResponse(...)

handleIosResponse(options: { url: string; }) => any
Param Type
options { url: string; }

Returns: any


addListener(...)

addListener(eventName: 'transactionComplete', listenerFunc: TransactionCompletedListener) => Promise<PluginListenerHandle> & PluginListenerHandle
Param Type
eventName "transactionComplete"
listenerFunc (callback: { clientTransactionId: string; serverTransactionId: string; }) => void

Returns: any


addListener(...)

addListener(eventName: 'transactionFailed', listenerFunc: TransactionFailedListener) => Promise<PluginListenerHandle> & PluginListenerHandle
Param Type
eventName "transactionFailed"
listenerFunc (callback: { error: any; }) => void

Returns: any


Interfaces

PluginListenerHandle

Prop Type
remove () => any

Enums

AutoReturn

Members Value Description
NoTimeout 0 No timeout
Min 3200 Minimum timeout value (3200 milliseconds)
Max 10000 Maximum timeout value (10000 milliseconds)

Readme

Keywords

Package Sidebar

Install

npm i @proteansoftware/capacitor-square

Weekly Downloads

1

Version

4.1.1

License

MIT

Unpacked Size

47.3 kB

Total Files

28

Last publish

Collaborators

  • dave_proteansoftware
  • ashleymedway