1.1.0 • Published 5 months ago

@dolaned/capacitor-square v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

@dolaned/capacitor-square

Integrate with Square Payments SDK

Package VersionCapacitor Version
1.X5.X

Install

Version 1.X is compatible with Capacitor 5.X

npm install @dolaned/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 "@dolaned/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 "@dolaned/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
ParamType
options{ applicationId: string; }

Returns: any


startTransaction(...)

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

Returns: any


handleIosResponse(...)

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

Returns: any


addListener(...)

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

Returns: any


addListener(...)

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

Returns: any


Interfaces

PluginListenerHandle

PropType
remove() => any

Enums

AutoReturn

MembersValueDescription
NoTimeout0No timeout
Min3200Minimum timeout value (3200 milliseconds)
Max10000Maximum timeout value (10000 milliseconds)
acornacorn-jsxajvansi-colorsansi-regexansi-stylesargparsearray-includesarray-unionarray.prototype.flatastral-regexat-least-nodebalanced-matchbrace-expansionbracescall-bindcallsiteschalkchevrotaincolor-convertcolor-namecoloretteconcat-mapcosmiconfigcross-spawndebugdeep-isdefine-propertiesdir-globdoctrineemoji-regexenquirererror-exes-abstractes-to-primitiveescape-string-regexpeslint-config-prettiereslint-import-resolver-nodeeslint-module-utilseslint-plugin-importeslint-scopeeslint-utilseslint-visitor-keysespreeesprimaesqueryesrecurseestraverseesutilsfast-deep-equalfast-globfast-json-stable-stringifyfast-levenshteinfastqfile-entry-cachefill-rangefind-upflat-cacheflattedfs-extrafs.realpathfunction-bindfunctional-red-black-treeget-intrinsicget-stdingithub-sluggerglobglob-parentglobalsglobbygraceful-fshashas-bigintshas-flaghas-symbolshosted-git-infoignoreimport-freshimurmurhashinflightinheritsis-arrayishis-bigintis-boolean-objectis-callableis-core-moduleis-date-objectis-extglobis-fullwidth-code-pointis-globis-negative-zerois-numberis-number-objectis-regexis-stringis-symbolisexejava-parserjs-tokensjs-yamljson-parse-better-errorsjson-parse-even-better-errorsjson-schema-traversejson-stable-stringify-without-jsonifyjson5jsonfilelevnlines-and-columnsload-json-filelocate-pathlodashlodash.clonedeeplodash.mergelodash.truncatelru-cachemerge2micromatchminimatchminimistmsnatural-comparenormalize-package-dataobject-inspectobject-keysobject.assignobject.valuesonceoptionatorp-limitp-locatep-tryparent-moduleparse-jsonpath-existspath-is-absolutepath-keypath-parsepath-typepicomatchpifypkg-dirpkg-upprelude-lsprogresspunycodequeue-microtaskread-pkgread-pkg-upregexp-to-astregexpprequire-from-stringresolveresolve-fromreusifyrun-parallelsemvershebang-commandshebang-regexsignal-exitslashslice-ansispdx-correctspdx-exceptionsspdx-expression-parsespdx-license-idssprintf-jsstring-widthstring.prototype.trimendstring.prototype.trimstartstrip-ansistrip-bomstrip-json-commentssupports-colortabletext-tableto-regex-rangetree-killtsconfig-pathstslibtsutilstype-checktype-festunbox-primitiveuniversalifyuntildifyuri-jsv8-compile-cachevalidate-npm-package-licensewhichwhich-boxed-primitiveword-wrapwrap-ansiwrappyyallistyaml
1.1.0

5 months ago

1.0.1

5 months ago

1.0.0

5 months ago