From 1f48c31a8eaf5079ec8e391b21ea5ce3fa9e1446 Mon Sep 17 00:00:00 2001 From: adarsh-chaudhary <71324632+adarsh-chaudhary@users.noreply.github.com> Date: Fri, 16 Oct 2020 22:49:05 +0530 Subject: [PATCH] feat(all-in-one-sdk): add plugin for Paytm All-in-One SDK (#3536) --- .../plugins/all-in-one-sdk/index.ts | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 src/@ionic-native/plugins/all-in-one-sdk/index.ts diff --git a/src/@ionic-native/plugins/all-in-one-sdk/index.ts b/src/@ionic-native/plugins/all-in-one-sdk/index.ts new file mode 100644 index 0000000000..fb947f9538 --- /dev/null +++ b/src/@ionic-native/plugins/all-in-one-sdk/index.ts @@ -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 /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} Returns a promise that resolves when a transaction completes(both failed and successful). + */ + @Cordova() + startTransaction(options : PaymentIntentModel): Promise { + 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 +}