nativescript-plugin-square-pos
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

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)

/nativescript-plugin-square-pos/

    Package Sidebar

    Install

    npm i nativescript-plugin-square-pos

    Weekly Downloads

    0

    Version

    1.0.0

    License

    MIT

    Unpacked Size

    17.3 kB

    Total Files

    19

    Last publish

    Collaborators

    • mike-okidoo
    • nesci