nativescript-plugin-square-pos
by mike-okidoo | v1.0.0
This plugin allows you to accept square payments from your mobile app through the Square POS app.
npm i --save nativescript-plugin-square-pos

nativescript-square-pos

This plugin allows you to accept square payments from your mobile app through the Square POS app. This is an alternative to using the Square API that is only available in a limited number of countries. For now, only Android is implemented and the demo is only available for Angular, your contribution is welcome.

Prerequisites / Requirements

You simply need to Register your application, because the Square POS needs to authenticate the source of the request.

Installation

tns plugin add nativescript-square-pos

Demo Usage

In the ./demo-angular folder:

Android:

tns debug android

Usage in Angular

// test.component.ts
import {
SquarePos,
SquareChargeEventData,
SquareCurrencies,
} from "nativescript-square-pos";

@Component({
selector: "Test",
templateUrl: "./test.component.html",
})

export class AppComponent {

public currency: SquareCurrencies = "CAD";
public applicationId: string = "YOUR_SQUARE_APPLICATION_ID";
public squarePos: SquarePos = new SquarePos(this.applicationId);

public result: string = "";
public isAppInstalled: boolean;

constructor(private ngZone: NgZone) {
// Add event listeners for transactions
this.ngZone.run(() => {
this.squarePos.on(
"squareChargeUnknownError",
this.onSquareChargeUnknownError,
this
);

this.squarePos.on(
"squareChargeSuccess",
this.onSquareChargeSuccess,
this
);

this.squarePos.on(
"squareChargeError",
this.onSquareChargeError,
this
);
});
this.isAppInstalled = this.squarePos.isAppInstalled();
}

public onTransaction(amount: number): void {
try {
this.squarePos.startTransaction(amount, this.currency);
} catch (e) {
this.result = "An error occured while launching Square Point of Sale app.";
}
}

public onAppInstall(): void {
this.squarePos.openAppInstallation();
const onResume = (args) => {
this.isAppInstalled = this.squarePos.isAppInstalled();
app.off(app.resumeEvent, onResume);
};
app.on(app.resumeEvent, onResume);
}

private onSquareChargeUnknownError(data: SquareChargeEventData) {
this.ngZone.run(() => {
this.result = "An unknown error occured. Square Point of Sale was uninstalled or stopped working.";
});
}

private onSquareChargeSuccess(data: SquareChargeEventData) {
this.ngZone.run(() => {
this.result = `Transaction ${data.object.success.clientTransactionId} was successfully completed.`;
});
}

private onSquareChargeError(data: SquareChargeEventData) {
this.ngZone.run(() => {
this.result = `The transaction was not completed. The error was ${data.object.error.code}: ${data.object.error.debugDescription}.`;
});
}
}

License

MIT (see license file)