diff --git a/src/@ionic-native/plugins/sum-up/index.ts b/src/@ionic-native/plugins/sum-up/index.ts new file mode 100644 index 000000000..7e3e5954a --- /dev/null +++ b/src/@ionic-native/plugins/sum-up/index.ts @@ -0,0 +1,192 @@ +import { Injectable } from '@angular/core'; +import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core'; + +export interface SumUpResponse { + // Code to identify the message + code: number; + + // Message for readable usage + message: string; +} + +export interface SumUpLoginStatus { + // Code, to check if an error occured + code: number; + + // Booleand value whether the user is logged in or not + isLoggedIn: boolean; +} + +export interface SumUpPayment { + // Unique transaction code + transaction_code: string; + + // Card type -> like MAESTRO + card_type: string; + + // Merchant code for identification + merchant_code: string; + + // Amount of the payment + amount: number; + + // Tip amount -> default 0 + tip_amount: number; + + // Vat amount -> default 0 + vat_amount: number; + + // Currency code -> like EUR + currency: string; + + // Payment status -> successful or error + status: string; + + // Type -> Card or nfc + payment_type: string; + + // Entry mode -> Like chip or contactless + entry_mode: string; + + // Number of installments -> default 1 + installments: number; +} + +/** + * @name SumUp + * @description + * Plugin to communicate with a SumUp payment terminal + * + * @usage + * ```typescript + * import { SumUp } from '@ionic-native/sum-up'; + * + * + * constructor(private sumUp: SumUp) { } + * + * this.sumUp.login("ACCESS_TOKEN") + * .then((res: SumUpResponse) => console.log(res)) + * .catch((error: SumUpResponse) => console.error(error)); + * + * this.sumUp.auth("ACCESS_TOKEN") + * .then((res: SumUpResponse) => console.log(res)) + * .catch((error: SumUpResponse) => console.error(error)); + * + * this.sumUp.getSettings() + * .then((res: SumUpResponse) => console.log(res)) + * .catch((error: SumUpResponse) => console.error(error)); + * + * this.sumUp.logout() + * .then((res: SumUpResponse) => console.log(res)) + * .catch((error: SumUpResponse) => console.error(error)); + * + * this.sumUp.isLoggedIn() + * .then((res: SumUpLoginStatus) => console.log(res)) + * .catch((error: SumUpLoginStatus) => console.error(error)); + * + * this.sumUp.prepare() + * .then((res: SumUpResponse) => console.log(res)) + * .catch((error: SumUpResponse) => console.error(error)); + * + * this.sumUp.closeConnection() + * .then((res: SumUpResponse) => console.log(res)) + * .catch((error: SumUpResponse) => console.error(error)); + * + * this.sumUp.pay(10.0, "EUR") + * .then((res: SumUpPayment) => console.log(res)) + * .catch((error: SumUpPayment) => console.error(error)); + * + * ``` + */ +@Plugin({ + pluginName: 'SumUp', + plugin: 'cordova-sumup-plugin', + pluginRef: 'window.SumUp', + repo: 'https://github.com/mariusbackes/cordova-plugin-sumup', + install: + 'cordova plugin add cordova-sumup-plugin --variable SUMUP_API_KEY=INSERT_YOUR_KEY', + installVariables: ['SUMUP_API_KEY'], + platforms: ['Android', 'iOS'] +}) +@Injectable() +export class SumUp extends IonicNativePlugin { + /** + * Login a user with an optional access token. + * If the access token is provided and valid, the user is logged in autmatically. + * Otherwise the user has to type in the credentials + * @param accessToken {string} + * @return {Promise} Return a SumUpResponse object + */ + @Cordova() + login(accessToken?: string): Promise { + return; + } + + /** + * Authenticates the account with the given access token. Parameter accessToken is required. + * @param accessToken {string} + * @return {Promise} Return a SumUpResponse object + */ + @Cordova() + auth(accessToken: string): Promise { + return; + } + + /** + * Opens a new window with the all account settings of an logged in user. + * @return {Promise} Return a SumUpResponse object + */ + @Cordova() + getSettings(): Promise { + return; + } + + /** + * Logout a user from the account. + * @return {Promise} Return a SumUpResponse object + */ + @Cordova() + logout(): Promise { + return; + } + + /** + * Checks whether the user is logged in or not and returns an object with the field isLoggedIn which is a boolean value. + * @return {Promise} Return a SumUpResponse object + */ + @Cordova() + isLoggedIn(): Promise { + return; + } + + /** + * Prepares the terminal for a payment. Checks whether the CardReader is ready to transmit and + * if an instance of the CardReaderManager is available. + * @return {Promise} Return a SumUpResponse object + */ + @Cordova() + prepare(): Promise { + return; + } + + /** + * Tries to close the connection to the card terminal. + * @return {Promise} Return a SumUpResponse object + */ + @Cordova() + closeConnection(): Promise { + return; + } + + /** + * Opens a native SumUp window to proceed a payment. Parameter amount and currencycode are required. + * If the Payment was successful it returns an SumUpPayment object with information about the payment. + * @param amount {number} + * @param currencycode {string} + * @return {Promise} Return a SumUpResponse object + */ + @Cordova() + pay(amount: number, currencycode: string): Promise { + return; + } +}