Skip to content

Commit

Permalink
feat(sum-up): add plugin (#3080)
Browse files Browse the repository at this point in the history
  • Loading branch information
mariusbackes authored and danielsogl committed Jul 1, 2019
1 parent 54ac2bf commit a4db080
Showing 1 changed file with 192 additions and 0 deletions.
192 changes: 192 additions & 0 deletions src/@ionic-native/plugins/sum-up/index.ts
Original file line number Diff line number Diff line change
@@ -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<SumUpResponse>} Return a SumUpResponse object
*/
@Cordova()
login(accessToken?: string): Promise<SumUpResponse> {
return;
}

/**
* Authenticates the account with the given access token. Parameter accessToken is required.
* @param accessToken {string}
* @return {Promise<SumUpResponse>} Return a SumUpResponse object
*/
@Cordova()
auth(accessToken: string): Promise<SumUpResponse> {
return;
}

/**
* Opens a new window with the all account settings of an logged in user.
* @return {Promise<SumUpResponse>} Return a SumUpResponse object
*/
@Cordova()
getSettings(): Promise<SumUpResponse> {
return;
}

/**
* Logout a user from the account.
* @return {Promise<SumUpResponse>} Return a SumUpResponse object
*/
@Cordova()
logout(): Promise<SumUpResponse> {
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<SumUpResponse>} Return a SumUpResponse object
*/
@Cordova()
isLoggedIn(): Promise<SumUpLoginStatus> {
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<SumUpResponse>} Return a SumUpResponse object
*/
@Cordova()
prepare(): Promise<SumUpResponse> {
return;
}

/**
* Tries to close the connection to the card terminal.
* @return {Promise<SumUpResponse>} Return a SumUpResponse object
*/
@Cordova()
closeConnection(): Promise<SumUpResponse> {
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<SumUpResponse>} Return a SumUpResponse object
*/
@Cordova()
pay(amount: number, currencycode: string): Promise<SumUpPayment> {
return;
}
}

0 comments on commit a4db080

Please sign in to comment.