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)

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