From 079fc0c69102eb694a1e2d175416f7a77176e6a3 Mon Sep 17 00:00:00 2001 From: Romain Fournereau Date: Fri, 20 Apr 2018 17:34:41 +0200 Subject: [PATCH 01/13] fix(handler): duplicated doReAuthorization for manual launch --- .gitignore | 1 + handler.ts | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index db14e0f..a4b16aa 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ npm-debug.log *.iml /.build /.serverless +package-lock.json \ No newline at end of file diff --git a/handler.ts b/handler.ts index c2979e7..c329a68 100644 --- a/handler.ts +++ b/handler.ts @@ -7,8 +7,7 @@ import {CURRENCIES, Environment} from "./src/model"; const merchantId: string = process.env.MERCHANT_ID || "XXX"; const accessKey: string = process.env.ACCESS_KEY ||"XXX"; const contractId: string = process.env.CONTRACT_ID || "1234567"; -const environment: Environment = (process.env.ENVIRONMENT || "") === Environment.production ? - Environment.production : Environment.homologation; +const environment: Environment = (process.env.ENVIRONMENT || "") === Environment.production ? Environment.production : Environment.homologation; const currency: CURRENCIES = CURRENCIES[process.env.CURRENCY || ""] || CURRENCIES.USD; // instances @@ -76,6 +75,14 @@ export const doAuthorization = async (event, context, callback) => { }; export const doReAuthorization = async (event, context, callback) => { + // Get params from SNS payload + let snsPayload = JSON.parse(event.Records[0].Sns.Message); + // Execute function + result(callback, await payline(snsPayload).doReAuthorization(snsPayload.transactionID, snsPayload.payment, + snsPayload.referencePrefix, snsPayload.currency, snsPayload.order)); +}; + +export const doReAuthorizationManual = async (event, context, callback) => { result(callback, await payline(event).doReAuthorization(event.transactionID, event.payment, event.referencePrefix, event.currency, event.order)); }; From 40751010fa53ec47dc24d000f682d0904b9a3e07 Mon Sep 17 00:00:00 2001 From: Romain Fournereau Date: Mon, 23 Apr 2018 09:52:04 +0200 Subject: [PATCH 02/13] fix(handler): reAuth currency param --- handler.ts | 3 ++- src/model.ts | 14 +++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/handler.ts b/handler.ts index c329a68..b15750b 100644 --- a/handler.ts +++ b/handler.ts @@ -77,9 +77,10 @@ export const doAuthorization = async (event, context, callback) => { export const doReAuthorization = async (event, context, callback) => { // Get params from SNS payload let snsPayload = JSON.parse(event.Records[0].Sns.Message); + console.log(snsPayload); // Execute function result(callback, await payline(snsPayload).doReAuthorization(snsPayload.transactionID, snsPayload.payment, - snsPayload.referencePrefix, snsPayload.currency, snsPayload.order)); + snsPayload.referencePrefix, snsPayload.payment.currency, snsPayload.order)); }; export const doReAuthorizationManual = async (event, context, callback) => { diff --git a/src/model.ts b/src/model.ts index 2dc1e6b..ad14d89 100644 --- a/src/model.ts +++ b/src/model.ts @@ -10,7 +10,7 @@ export type OperationsProperty = {[key in Operation]:T}; export enum CURRENCIES { EUR = 978, USD = 840, - GBP = 826, + GBP = 826 } export enum ACTIONS { @@ -20,7 +20,7 @@ export enum ACTIONS { } export enum MODE { - CPT = "CPT", + CPT = "CPT" } export interface Wallet { @@ -33,13 +33,13 @@ export interface Wallet { comment?: string, default?: string, cardStatus?: string, - cardBrand?: string, + cardBrand?: string } export interface PaymentData { transactionID: string, network: string, - tokenData: string, + tokenData: string } export interface Card { @@ -54,7 +54,7 @@ export interface Card { cardPresent?: string, cardholder?: string, token?: string, - paymentData?: PaymentData, + paymentData?: PaymentData } export interface Payment { @@ -63,14 +63,14 @@ export interface Payment { action?: ACTIONS, mode?: MODE, contractNumber?: string, - softDescriptor?: string, + softDescriptor?: string } export interface Order { ref?: string, amount?: number, currency?: CURRENCIES, - date?: Date, + date?: Date } /** From 43416f5697246e8d4ae8b799e14b7aa5d8ac2477 Mon Sep 17 00:00:00 2001 From: Romain Fournereau Date: Mon, 23 Apr 2018 10:10:06 +0200 Subject: [PATCH 03/13] fix(handler): added try/catch in reAuth promise --- handler.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/handler.ts b/handler.ts index b15750b..a929aab 100644 --- a/handler.ts +++ b/handler.ts @@ -79,8 +79,12 @@ export const doReAuthorization = async (event, context, callback) => { let snsPayload = JSON.parse(event.Records[0].Sns.Message); console.log(snsPayload); // Execute function - result(callback, await payline(snsPayload).doReAuthorization(snsPayload.transactionID, snsPayload.payment, - snsPayload.referencePrefix, snsPayload.payment.currency, snsPayload.order)); + try { + result(callback, await payline(snsPayload).doReAuthorization(snsPayload.transactionID, snsPayload.payment, + snsPayload.referencePrefix, snsPayload.payment.currency, snsPayload.order)); + } catch (error) { + console.log(error); + } }; export const doReAuthorizationManual = async (event, context, callback) => { From 7e37817edd54a76c56d95bf8f2193fe0d7256ac2 Mon Sep 17 00:00:00 2001 From: Romain Fournereau Date: Mon, 23 Apr 2018 11:42:10 +0200 Subject: [PATCH 04/13] fix(payline): added multiple try catch in doReAuth --- handler.ts | 6 +----- src/payline.ts | 26 +++++++++++++++++++------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/handler.ts b/handler.ts index a929aab..3f12281 100644 --- a/handler.ts +++ b/handler.ts @@ -79,12 +79,8 @@ export const doReAuthorization = async (event, context, callback) => { let snsPayload = JSON.parse(event.Records[0].Sns.Message); console.log(snsPayload); // Execute function - try { - result(callback, await payline(snsPayload).doReAuthorization(snsPayload.transactionID, snsPayload.payment, + result(callback, await payline(snsPayload).doReAuthorization(snsPayload.transactionID, snsPayload.payment, snsPayload.referencePrefix, snsPayload.payment.currency, snsPayload.order)); - } catch (error) { - console.log(error); - } }; export const doReAuthorizationManual = async (event, context, callback) => { diff --git a/src/payline.ts b/src/payline.ts index 7de9156..fd68f43 100644 --- a/src/payline.ts +++ b/src/payline.ts @@ -134,13 +134,25 @@ export default class Payline extends PaylineCore { public async doReAuthorization(transactionID: string, payment: Payment, referencePrefix?: string, currency?: CURRENCIES, order: Order = {}): Promise { - this.setPaymentDefaults(payment, ACTIONS.AUTHORIZATION, currency); - this.setOrderDefaults(order, referencePrefix, currency, payment.amount); - return this.extractTransactionalResult(await this.runAction("doReAuthorization", { - transactionID, - payment, - order, - })); + try { + this.setPaymentDefaults(payment, ACTIONS.AUTHORIZATION, currency); + } catch (error) { + console.log("SetPaymentDefaults", error); + } + try { + this.setOrderDefaults(order, referencePrefix, currency, payment.amount); + } catch (error) { + console.log("SetOrderDefaults", error); + } + try { + return this.extractTransactionalResult(await this.runAction("doReAuthorization", { + transactionID, + payment, + order, + })); + } catch (error) { + console.log("extractTransactionalResult", error); + } } public async doCapture(transactionID, payment: Payment, currency?: CURRENCIES): Promise { From a73ec917dfeb5c7acb8bfb7ec8d29166b954f5fe Mon Sep 17 00:00:00 2001 From: Romain Fournereau Date: Mon, 23 Apr 2018 14:34:42 +0200 Subject: [PATCH 05/13] fix(core): move try/catch to _runAction --- handler.ts | 1 - src/core.ts | 24 ++++++++++++++---------- src/payline.ts | 26 +++++++------------------- 3 files changed, 21 insertions(+), 30 deletions(-) diff --git a/handler.ts b/handler.ts index 3f12281..1e14e43 100644 --- a/handler.ts +++ b/handler.ts @@ -77,7 +77,6 @@ export const doAuthorization = async (event, context, callback) => { export const doReAuthorization = async (event, context, callback) => { // Get params from SNS payload let snsPayload = JSON.parse(event.Records[0].Sns.Message); - console.log(snsPayload); // Execute function result(callback, await payline(snsPayload).doReAuthorization(snsPayload.transactionID, snsPayload.payment, snsPayload.referencePrefix, snsPayload.payment.currency, snsPayload.order)); diff --git a/src/core.ts b/src/core.ts index 0bbf324..02b0016 100644 --- a/src/core.ts +++ b/src/core.ts @@ -191,16 +191,20 @@ export class PaylineCore { } private async _runAction(client: any, action: string, args: any): Promise { - //args.version = args.version || this.paylineVersion; - const _args: any = this.ensureAttributes(args); - const response = await client[this.actionMethodName(action)](_args); - const result = this.extractResult(response); - debug(`action ${action} got result ${JSON.stringify(result)} from response ${JSON.stringify(response)}`); - - if (this.isResultSuccessful(result)) { - return response; - } else { - throw response; + // args.version = args.version || this.paylineVersion; + try { + const _args: any = this.ensureAttributes(args); + const response = await client[this.actionMethodName(action)](_args); + const result = this.extractResult(response); + debug(`action ${action} got result ${JSON.stringify(result)} from response ${JSON.stringify(response)}`); + if (this.isResultSuccessful(result)) { + return response; + } else { + throw response; + } + } catch (error) { + console.log("ensureAttributes - client - extractResult - debug", error); } + } } diff --git a/src/payline.ts b/src/payline.ts index fd68f43..41e7a5d 100644 --- a/src/payline.ts +++ b/src/payline.ts @@ -134,25 +134,13 @@ export default class Payline extends PaylineCore { public async doReAuthorization(transactionID: string, payment: Payment, referencePrefix?: string, currency?: CURRENCIES, order: Order = {}): Promise { - try { - this.setPaymentDefaults(payment, ACTIONS.AUTHORIZATION, currency); - } catch (error) { - console.log("SetPaymentDefaults", error); - } - try { - this.setOrderDefaults(order, referencePrefix, currency, payment.amount); - } catch (error) { - console.log("SetOrderDefaults", error); - } - try { - return this.extractTransactionalResult(await this.runAction("doReAuthorization", { - transactionID, - payment, - order, - })); - } catch (error) { - console.log("extractTransactionalResult", error); - } + this.setPaymentDefaults(payment, ACTIONS.AUTHORIZATION, currency); + this.setOrderDefaults(order, referencePrefix, currency, payment.amount); + return this.extractTransactionalResult(await this.runAction("doReAuthorization", { + transactionID, + payment, + order + })); } public async doCapture(transactionID, payment: Payment, currency?: CURRENCIES): Promise { From 5a8646e37758d1235a34d258b128144dc50cc822 Mon Sep 17 00:00:00 2001 From: Romain Fournereau Date: Mon, 23 Apr 2018 14:47:02 +0200 Subject: [PATCH 06/13] fix(core): removed try/catch in favor of console.log --- src/core.ts | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/core.ts b/src/core.ts index 02b0016..7b41e7f 100644 --- a/src/core.ts +++ b/src/core.ts @@ -192,19 +192,16 @@ export class PaylineCore { private async _runAction(client: any, action: string, args: any): Promise { // args.version = args.version || this.paylineVersion; - try { - const _args: any = this.ensureAttributes(args); - const response = await client[this.actionMethodName(action)](_args); - const result = this.extractResult(response); - debug(`action ${action} got result ${JSON.stringify(result)} from response ${JSON.stringify(response)}`); - if (this.isResultSuccessful(result)) { - return response; - } else { - throw response; - } - } catch (error) { - console.log("ensureAttributes - client - extractResult - debug", error); + const _args: any = this.ensureAttributes(args); + const response = await client[this.actionMethodName(action)](_args); + const result = this.extractResult(response); + debug(`action ${action} got result ${JSON.stringify(result)} from response ${JSON.stringify(response)}`); + if (this.isResultSuccessful(result)) { + console.log("isResultSuccessful - true", response); + return response; + } else { + console.log("isResultSuccessful - false", response); + throw response; } - } } From c86f3b0957041925e522e1ef67ab25c2d6c5f3a4 Mon Sep 17 00:00:00 2001 From: Romain Fournereau Date: Mon, 23 Apr 2018 14:53:26 +0200 Subject: [PATCH 07/13] fix(core): added precision in debuging --- src/core.ts | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/core.ts b/src/core.ts index 7b41e7f..1607d25 100644 --- a/src/core.ts +++ b/src/core.ts @@ -192,9 +192,23 @@ export class PaylineCore { private async _runAction(client: any, action: string, args: any): Promise { // args.version = args.version || this.paylineVersion; - const _args: any = this.ensureAttributes(args); - const response = await client[this.actionMethodName(action)](_args); - const result = this.extractResult(response); + let _args: any, response: any, result: any; + try { + _args = this.ensureAttributes(args); + } catch (error) { + console.log("ensureAttributes", error, args, _args); + } + try { + response = await client[this.actionMethodName(action)](_args); + } catch (error) { + console.log("client", error, response); + } + try { + result = this.extractResult(response); + } catch (error) { + console.log("extractResult", error, result); + } + debug(`action ${action} got result ${JSON.stringify(result)} from response ${JSON.stringify(response)}`); if (this.isResultSuccessful(result)) { console.log("isResultSuccessful - true", response); From 7776516df76b0141429280212360c91e7c8000eb Mon Sep 17 00:00:00 2001 From: Romain Fournereau Date: Mon, 23 Apr 2018 15:11:12 +0200 Subject: [PATCH 08/13] fix(core): details on client / action / args --- src/core.ts | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/src/core.ts b/src/core.ts index 1607d25..b9ab60c 100644 --- a/src/core.ts +++ b/src/core.ts @@ -192,23 +192,11 @@ export class PaylineCore { private async _runAction(client: any, action: string, args: any): Promise { // args.version = args.version || this.paylineVersion; - let _args: any, response: any, result: any; - try { - _args = this.ensureAttributes(args); - } catch (error) { - console.log("ensureAttributes", error, args, _args); - } - try { - response = await client[this.actionMethodName(action)](_args); - } catch (error) { - console.log("client", error, response); - } - try { - result = this.extractResult(response); - } catch (error) { - console.log("extractResult", error, result); - } - + const _args: any = this.ensureAttributes(args); + console.log("args - _args", args, _args); + console.log("client - action", client, action); + const response = await client[this.actionMethodName(action)](_args); + const result = this.extractResult(response); debug(`action ${action} got result ${JSON.stringify(result)} from response ${JSON.stringify(response)}`); if (this.isResultSuccessful(result)) { console.log("isResultSuccessful - true", response); From 5f9d1cba808dea02502c3797d2cd99cb3394f8be Mon Sep 17 00:00:00 2001 From: Romain Fournereau Date: Mon, 23 Apr 2018 16:03:22 +0200 Subject: [PATCH 09/13] fix(core): added try/catch --- src/core.ts | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/core.ts b/src/core.ts index b9ab60c..5ffd3e0 100644 --- a/src/core.ts +++ b/src/core.ts @@ -193,17 +193,21 @@ export class PaylineCore { private async _runAction(client: any, action: string, args: any): Promise { // args.version = args.version || this.paylineVersion; const _args: any = this.ensureAttributes(args); - console.log("args - _args", args, _args); - console.log("client - action", client, action); - const response = await client[this.actionMethodName(action)](_args); - const result = this.extractResult(response); - debug(`action ${action} got result ${JSON.stringify(result)} from response ${JSON.stringify(response)}`); - if (this.isResultSuccessful(result)) { - console.log("isResultSuccessful - true", response); - return response; - } else { - console.log("isResultSuccessful - false", response); - throw response; + // console.log("args - _args", args, _args); + // console.log("client - action", client, action); + try { + const response = await client[this.actionMethodName(action)](_args); + const result = this.extractResult(response); + debug(`action ${action} got result ${JSON.stringify(result)} from response ${JSON.stringify(response)}`); + if (this.isResultSuccessful(result)) { + console.log("isResultSuccessful - true", response); + return response; + } else { + console.log("isResultSuccessful - false", response); + throw response; + } + } catch (error) { + console.log("client error", error); } } } From b1662add051034361587b142e4581637a30daeef Mon Sep 17 00:00:00 2001 From: Romain Fournereau Date: Mon, 23 Apr 2018 16:54:23 +0200 Subject: [PATCH 10/13] chore(core): cleanup after debugging --- src/core.ts | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/src/core.ts b/src/core.ts index 5ffd3e0..7f4f81d 100644 --- a/src/core.ts +++ b/src/core.ts @@ -193,21 +193,13 @@ export class PaylineCore { private async _runAction(client: any, action: string, args: any): Promise { // args.version = args.version || this.paylineVersion; const _args: any = this.ensureAttributes(args); - // console.log("args - _args", args, _args); - // console.log("client - action", client, action); - try { - const response = await client[this.actionMethodName(action)](_args); - const result = this.extractResult(response); - debug(`action ${action} got result ${JSON.stringify(result)} from response ${JSON.stringify(response)}`); - if (this.isResultSuccessful(result)) { - console.log("isResultSuccessful - true", response); - return response; - } else { - console.log("isResultSuccessful - false", response); - throw response; - } - } catch (error) { - console.log("client error", error); + const response = await client[this.actionMethodName(action)](_args); + const result = this.extractResult(response); + debug(`action ${action} got result ${JSON.stringify(result)} from response ${JSON.stringify(response)}`); + if (this.isResultSuccessful(result)) { + return response; + } else { + throw response; } } } From c1d82822870d89570a21f26eacb42a92a626bff8 Mon Sep 17 00:00:00 2001 From: Romain Fournereau Date: Tue, 24 Apr 2018 10:02:04 +0200 Subject: [PATCH 11/13] fix(handler): checking access ids --- handler.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/handler.ts b/handler.ts index 1e14e43..9af227d 100644 --- a/handler.ts +++ b/handler.ts @@ -77,6 +77,9 @@ export const doAuthorization = async (event, context, callback) => { export const doReAuthorization = async (event, context, callback) => { // Get params from SNS payload let snsPayload = JSON.parse(event.Records[0].Sns.Message); + + console.log("MerchantID - AccessKey", merchantId, accessKey); + // Execute function result(callback, await payline(snsPayload).doReAuthorization(snsPayload.transactionID, snsPayload.payment, snsPayload.referencePrefix, snsPayload.payment.currency, snsPayload.order)); From a98c894d26483dfc64eb5687d7001a8aa5831479 Mon Sep 17 00:00:00 2001 From: Romain Fournereau Date: Tue, 24 Apr 2018 16:04:33 +0200 Subject: [PATCH 12/13] fix(handler): added logging --- handler.ts | 4 +--- src/payline.ts | 14 +++++++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/handler.ts b/handler.ts index 9af227d..3f12281 100644 --- a/handler.ts +++ b/handler.ts @@ -77,9 +77,7 @@ export const doAuthorization = async (event, context, callback) => { export const doReAuthorization = async (event, context, callback) => { // Get params from SNS payload let snsPayload = JSON.parse(event.Records[0].Sns.Message); - - console.log("MerchantID - AccessKey", merchantId, accessKey); - + console.log(snsPayload); // Execute function result(callback, await payline(snsPayload).doReAuthorization(snsPayload.transactionID, snsPayload.payment, snsPayload.referencePrefix, snsPayload.payment.currency, snsPayload.order)); diff --git a/src/payline.ts b/src/payline.ts index 41e7a5d..aeebdc1 100644 --- a/src/payline.ts +++ b/src/payline.ts @@ -136,11 +136,15 @@ export default class Payline extends PaylineCore { currency?: CURRENCIES, order: Order = {}): Promise { this.setPaymentDefaults(payment, ACTIONS.AUTHORIZATION, currency); this.setOrderDefaults(order, referencePrefix, currency, payment.amount); - return this.extractTransactionalResult(await this.runAction("doReAuthorization", { - transactionID, - payment, - order - })); + try { + return this.extractTransactionalResult(await this.runAction("doReAuthorization", { + transactionID, + payment, + order + })); + } catch(err) { + console.log(err); + } } public async doCapture(transactionID, payment: Payment, currency?: CURRENCIES): Promise { From 4a5ea4b2f3bc220d2c8a85400b1471e324694915 Mon Sep 17 00:00:00 2001 From: Romain Fournereau Date: Mon, 30 Apr 2018 14:06:15 +0200 Subject: [PATCH 13/13] fix(handler): restored doReAuth without sns parsing --- handler.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/handler.ts b/handler.ts index 3f12281..ba9d7f2 100644 --- a/handler.ts +++ b/handler.ts @@ -74,16 +74,16 @@ export const doAuthorization = async (event, context, callback) => { event.referencePrefix, event.currency, event.order)); }; -export const doReAuthorization = async (event, context, callback) => { - // Get params from SNS payload - let snsPayload = JSON.parse(event.Records[0].Sns.Message); - console.log(snsPayload); - // Execute function - result(callback, await payline(snsPayload).doReAuthorization(snsPayload.transactionID, snsPayload.payment, - snsPayload.referencePrefix, snsPayload.payment.currency, snsPayload.order)); -}; +// export const doReAuthorization = async (event, context, callback) => { +// // Get params from SNS payload +// let snsPayload = JSON.parse(event.Records[0].Sns.Message); +// console.log(snsPayload); +// // Execute function +// result(callback, await payline(snsPayload).doReAuthorization(snsPayload.transactionID, snsPayload.payment, +// snsPayload.referencePrefix, snsPayload.payment.currency, snsPayload.order)); +// }; -export const doReAuthorizationManual = async (event, context, callback) => { +export const doReAuthorization = async (event, context, callback) => { result(callback, await payline(event).doReAuthorization(event.transactionID, event.payment, event.referencePrefix, event.currency, event.order)); };