Skip to content

Commit

Permalink
feat(all-in-one-sdk): add plugin for Paytm All-in-One SDK (#3536)
Browse files Browse the repository at this point in the history
  • Loading branch information
adarsh-chaudhary authored Oct 16, 2020
1 parent c62c137 commit 1f48c31
Showing 1 changed file with 78 additions and 0 deletions.
78 changes: 78 additions & 0 deletions src/@ionic-native/plugins/all-in-one-sdk/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova, CordovaProperty, CordovaInstance, InstanceProperty, IonicNativePlugin } from '@ionic-native/core';
import { Observable } from 'rxjs';

/**
* @name AllInOneSDK
* @description
* Paytm All-in-One SDK plugin for Cordova/Ionic Applications
* Paytm All-in-One SDK provides a swift, secure and seamless payment experience to your users by invoking the Paytm app (if installed on your user’s smartphone) to complete payment for your order.
* Paytm All-in-One SDK enables payment acceptance via Paytm wallet, Paytm Payments Bank, saved Debit/Credit cards, Net Banking, BHIM UPI and EMI as available in your customer’s Paytm account. If Paytm app is not installed on a customer's device, the transaction will be processed via web view within the All-in-One SDK.
* For more information about Paytm All-in-One SDK, please visit https://developer.paytm.com/docs/all-in-one-sdk/
*
* @usage
* ```typescript
* import { AllInOneSDK } from '@ionic-native/all-in-one-sdk/ngx';
*
*
* constructor(private allInOneSDK: AllInOneSDK) { }
*
* ...
*
* For below parameters see [documentation](https://developer.paytm.com/docs/all-in-one-sdk/)
* let paymentIntent = { mid : merchantID, orderId: orderId, txnToken: transactionToken, amount: amount, isStaging: isStaging, callbackUrl:callBackURL }
*
* this.allInOneSDK.startTransaction(paymentIntent)
* .then((res: any) => console.log(res))
* .catch((error: any) => console.error(error));
*
* ```
*
* For iOS:
* After adding the plugin, open the iOS project, you can find the same at <projectName>/platforms/ios.
* In case merchant don’t have callback URL, Add an entry into Info.plist LSApplicationQueriesSchemes(Array) Item 0 (String)-> paytm
* Add a URL Scheme “paytm”+”MID”
*
*/
@Plugin({
pluginName: 'AllInOneSDK',
plugin: 'cordova-paytm-allinonesdk',
pluginRef: 'AllInOneSDK',
repo: 'https://github.com/paytm/paytm-allinonesdk-ionic-cordova.git',
platforms: ['Android','iOS']
})
export class AllInOneSDK extends IonicNativePlugin {

/**
* This function checks if Paytm Application is available on the device.
* If Paytm exists then it invokes Paytm Application with the parameters sent and creates an order.
* If the Paytm Application is not available the transaction is continued on a webView within All-in-One SDK.
* @param options {PaymentIntentModel} These parameters are required and will be used to create an order.
* @return {Promise<PaytmResponse>} Returns a promise that resolves when a transaction completes(both failed and successful).
*/
@Cordova()
startTransaction(options : PaymentIntentModel): Promise<PaytmResponse> {
return;
}

}

/**
* The response that will be recieved when any transaction is completed
*/
export interface PaytmResponse{
message : string;
response : string; // A stringified response of a hashmap returned from All-in-One SDK
}

/**
* For below parameters see [documentation](https://developer.paytm.com/docs/all-in-one-sdk/)
*/
export interface PaymentIntentModel{
mid : string; // Merchant ID
orderId : string; // Order ID
txnToken : string; // Transaction Token
amount : string; // Amount
isStaging: boolean; // Environment
callbackUrl: string; // Callback URL
}

0 comments on commit 1f48c31

Please sign in to comment.