No Partying Mariachis

    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)

    Install

    npm i nativescript-plugin-square-pos

    DownloadsWeekly Downloads

    2

    Version

    1.0.0

    License

    MIT

    Unpacked Size

    17.3 kB

    Total Files

    19

    Last publish

    Collaborators

    • nesci
    • mike-okidoo
    • acrilex