-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
54ac2bf
commit a4db080
Showing
1 changed file
with
192 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
} | ||
} |