@pixelpay/sdk-core 2.1.1 → 2.1.3-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/lib/base/Helpers.d.ts +17 -1
  3. package/lib/base/Helpers.js +45 -8
  4. package/lib/base/Helpers.js.map +1 -1
  5. package/lib/base/RequestBehaviour.d.ts +24 -0
  6. package/lib/base/RequestBehaviour.js +36 -4
  7. package/lib/base/RequestBehaviour.js.map +1 -1
  8. package/lib/base/Response.js +4 -1
  9. package/lib/base/Response.js.map +1 -1
  10. package/lib/base/ServiceBehaviour.d.ts +30 -0
  11. package/lib/base/ServiceBehaviour.js +159 -35
  12. package/lib/base/ServiceBehaviour.js.map +1 -1
  13. package/lib/browser/index.js +3 -3
  14. package/lib/entities/CardResult.js +4 -1
  15. package/lib/entities/CardResult.js.map +1 -1
  16. package/lib/entities/TransactionResult.d.ts +12 -0
  17. package/lib/entities/TransactionResult.js +19 -4
  18. package/lib/entities/TransactionResult.js.map +1 -1
  19. package/lib/exceptions/FailedEncryptionException.d.ts +2 -0
  20. package/lib/exceptions/FailedEncryptionException.js +26 -0
  21. package/lib/exceptions/FailedEncryptionException.js.map +1 -0
  22. package/lib/index.d.ts +2 -0
  23. package/lib/index.js +35 -30
  24. package/lib/index.js.map +1 -1
  25. package/lib/libraries/CardinalManager.js +19 -16
  26. package/lib/libraries/CardinalManager.js.map +1 -1
  27. package/lib/libraries/PayloadManager.js +6 -3
  28. package/lib/libraries/PayloadManager.js.map +1 -1
  29. package/lib/libraries/PixelPayLoading.js +28 -2
  30. package/lib/libraries/PixelPayLoading.js.map +1 -1
  31. package/lib/libraries/PixelPayModal.js +4 -1
  32. package/lib/libraries/PixelPayModal.js.map +1 -1
  33. package/lib/models/Settings.d.ts +4 -0
  34. package/lib/models/Settings.js +13 -6
  35. package/lib/models/Settings.js.map +1 -1
  36. package/lib/requests/AuthTransaction.js +4 -1
  37. package/lib/requests/AuthTransaction.js.map +1 -1
  38. package/lib/requests/CaptureTransaction.js +4 -1
  39. package/lib/requests/CaptureTransaction.js.map +1 -1
  40. package/lib/requests/CardTokenization.d.ts +16 -2
  41. package/lib/requests/CardTokenization.js +51 -4
  42. package/lib/requests/CardTokenization.js.map +1 -1
  43. package/lib/requests/LookupContinueTransaction.js +4 -1
  44. package/lib/requests/LookupContinueTransaction.js.map +1 -1
  45. package/lib/requests/LookupTransaction.d.ts +18 -0
  46. package/lib/requests/LookupTransaction.js +50 -1
  47. package/lib/requests/LookupTransaction.js.map +1 -1
  48. package/lib/requests/PaymentTransaction.d.ts +19 -5
  49. package/lib/requests/PaymentTransaction.js +43 -2
  50. package/lib/requests/PaymentTransaction.js.map +1 -1
  51. package/lib/requests/SaleTransaction.js +5 -2
  52. package/lib/requests/SaleTransaction.js.map +1 -1
  53. package/lib/requests/StatusTransaction.js +4 -1
  54. package/lib/requests/StatusTransaction.js.map +1 -1
  55. package/lib/requests/VoidTransaction.js +4 -1
  56. package/lib/requests/VoidTransaction.js.map +1 -1
  57. package/lib/resources/Locations.js +26 -3
  58. package/lib/resources/Locations.js.map +1 -1
  59. package/lib/responses/ErrorResponse.js +4 -1
  60. package/lib/responses/ErrorResponse.js.map +1 -1
  61. package/lib/responses/FailureResponse.js +4 -1
  62. package/lib/responses/FailureResponse.js.map +1 -1
  63. package/lib/responses/InputErrorResponse.js +4 -1
  64. package/lib/responses/InputErrorResponse.js.map +1 -1
  65. package/lib/responses/NetworkFailureResponse.js +4 -1
  66. package/lib/responses/NetworkFailureResponse.js.map +1 -1
  67. package/lib/responses/NoAccessResponse.js +4 -1
  68. package/lib/responses/NoAccessResponse.js.map +1 -1
  69. package/lib/responses/NotFoundResponse.js +4 -1
  70. package/lib/responses/NotFoundResponse.js.map +1 -1
  71. package/lib/responses/PayloadResponse.js +4 -1
  72. package/lib/responses/PayloadResponse.js.map +1 -1
  73. package/lib/responses/PaymentDeclinedResponse.js +4 -1
  74. package/lib/responses/PaymentDeclinedResponse.js.map +1 -1
  75. package/lib/responses/PreconditionalResponse.js +4 -1
  76. package/lib/responses/PreconditionalResponse.js.map +1 -1
  77. package/lib/responses/SuccessResponse.js +4 -1
  78. package/lib/responses/SuccessResponse.js.map +1 -1
  79. package/lib/responses/TimeoutResponse.js +4 -1
  80. package/lib/responses/TimeoutResponse.js.map +1 -1
  81. package/lib/services/CardinalAuthentication.d.ts +4 -4
  82. package/lib/services/CardinalAuthentication.js +10 -7
  83. package/lib/services/CardinalAuthentication.js.map +1 -1
  84. package/lib/services/Tokenization.js +6 -3
  85. package/lib/services/Tokenization.js.map +1 -1
  86. package/lib/services/Transaction.js +12 -9
  87. package/lib/services/Transaction.js.map +1 -1
  88. package/lib/version.d.ts +1 -1
  89. package/lib/version.js +1 -1
  90. package/lib/version.js.map +1 -1
  91. package/package.json +4 -2
  92. package/tests/Tokenization.test.ts +12 -8
  93. package/tsconfig.json +2 -2
package/CHANGELOG.md CHANGED
@@ -5,9 +5,31 @@ El formato se basa en [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  y este proyecto se adhiere a [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
  Tipos de cambios: `Added`, `Changed`, `Deprecated`, `Removed`, `Fixed`, `Security`.
7
7
 
8
+ ## [v2.1.3-beta.0] - 2023-08-16
9
+ ### Added
10
+ - Se agregó campo de cuotas para autenticación con 3D Secure
11
+
12
+ ## [v2.1.2] - 2023-08-16
13
+ ### Added
14
+ - Se omiten los métodos de encriptación si la petición no lo requiere
15
+
16
+ ### Changed
17
+ - En caso de fallos, se hacen reintentos para adquirir la llave pública del comercio
18
+ - En caso de fallos, se hacen reintentos para encriptar los datos de tarjeta
19
+
20
+ ### Fixed
21
+ - Se corrigió caso donde reintentos de transacciones con una misma instancia de `RequestBehaviour` encripta datos múltiples veces
22
+ - Se corrigió encriptación para transacciones de 3D Secure
23
+ - Se arregló conflicto de encriptación al reutilizar instancias de `RequestBehaviour`
24
+ - Se arregló servicios de tokenización enviando fecha de expiración incorrecta si no se llenan los campos
25
+
8
26
  ## [v2.1.1] - 2023-08-09
27
+ ### Changed
28
+ - Rollback temporal a v2.0.6
29
+
30
+ ## [v2.1.0] - 2023-07-18
9
31
  ### Added
10
- - Rollback a versión de SDK sin encriptación
32
+ - Se agregó encriptación de datos de tarjeta.
11
33
 
12
34
  ## [v2.0.6] - 2023-06-09
13
35
  ### Added
@@ -1,3 +1,4 @@
1
+ import nacl from 'tweetnacl';
1
2
  declare const _default: {
2
3
  /**
3
4
  * Serialize object to JSON string without empties
@@ -5,7 +6,7 @@ declare const _default: {
5
6
  * @param value
6
7
  * @return
7
8
  */
8
- objectToJson(value: any): string;
9
+ objectToJson(value: any, ignore?: string[]): string;
9
10
  /**
10
11
  * Helper to hash object by algorithm
11
12
  *
@@ -35,6 +36,21 @@ declare const _default: {
35
36
  * @return
36
37
  */
37
38
  parseAmount(amount: number | null | undefined): string | null;
39
+ /**
40
+ * Generate encryption key pair
41
+ *
42
+ * @return
43
+ */
44
+ getKeyPair(): nacl.BoxKeyPair;
45
+ /**
46
+ * Encrypt message, returns encrypted value concatenated with base64 nonce.
47
+ *
48
+ * @param message
49
+ * @param publicKey
50
+ * @param keyPair
51
+ * @return
52
+ */
53
+ encrypt(message: string | null, publicKey: string | null, keyPair: nacl.BoxKeyPair): string | null;
38
54
  /**
39
55
  * Verify if environment is a Browser
40
56
  */
@@ -10,7 +10,12 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
13
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ var tweetnacl_1 = __importDefault(require("tweetnacl"));
18
+ var tweetnacl_util_1 = __importDefault(require("tweetnacl-util"));
14
19
  var crypto_js_1 = require("crypto-js");
15
20
  exports.default = {
16
21
  /**
@@ -19,10 +24,11 @@ exports.default = {
19
24
  * @param value
20
25
  * @return
21
26
  */
22
- objectToJson: function (value) {
27
+ objectToJson: function (value, ignore) {
28
+ if (ignore === void 0) { ignore = []; }
23
29
  var filtered = __assign({}, value);
24
30
  for (var propName in filtered) {
25
- if (filtered[propName] === null || filtered[propName] === undefined) {
31
+ if (filtered[propName] === null || filtered[propName] === undefined || ignore.includes(propName)) {
26
32
  delete filtered[propName];
27
33
  }
28
34
  }
@@ -37,12 +43,12 @@ exports.default = {
37
43
  */
38
44
  hash: function (algorithm, value) {
39
45
  switch (algorithm) {
40
- case "MD5":
46
+ case 'MD5':
41
47
  return (0, crypto_js_1.MD5)(value).toString();
42
- case "SHA-512":
48
+ case 'SHA-512':
43
49
  return (0, crypto_js_1.SHA512)(value).toString();
44
50
  default:
45
- return "";
51
+ return '';
46
52
  }
47
53
  },
48
54
  /**
@@ -81,11 +87,42 @@ exports.default = {
81
87
  }
82
88
  return null;
83
89
  },
90
+ /**
91
+ * Generate encryption key pair
92
+ *
93
+ * @return
94
+ */
95
+ getKeyPair: function () {
96
+ return tweetnacl_1.default.box.keyPair();
97
+ },
98
+ /**
99
+ * Encrypt message, returns encrypted value concatenated with base64 nonce.
100
+ *
101
+ * @param message
102
+ * @param publicKey
103
+ * @param keyPair
104
+ * @return
105
+ */
106
+ encrypt: function (message, publicKey, keyPair) {
107
+ if (!message) {
108
+ return null;
109
+ }
110
+ if (message.includes('|')) {
111
+ return message;
112
+ }
113
+ var nonce = tweetnacl_1.default.randomBytes(24);
114
+ var merchantPublicKey = tweetnacl_util_1.default.decodeBase64(publicKey);
115
+ var sharedKey = tweetnacl_1.default.box.before(merchantPublicKey, keyPair.secretKey);
116
+ var box = tweetnacl_1.default.box.after(tweetnacl_util_1.default.decodeUTF8(message), nonce, sharedKey);
117
+ var boxb64 = tweetnacl_util_1.default.encodeBase64(box);
118
+ var nonceb64 = tweetnacl_util_1.default.encodeBase64(nonce);
119
+ return "".concat(boxb64, "|").concat(nonceb64);
120
+ },
84
121
  /**
85
122
  * Verify if environment is a Browser
86
123
  */
87
124
  checkIsBrowser: function () {
88
- return typeof window !== "undefined" && typeof window.document !== "undefined";
125
+ return typeof window !== 'undefined' && typeof window.document !== 'undefined';
89
126
  },
90
127
  /**
91
128
  * Append website script and load
@@ -95,11 +132,11 @@ exports.default = {
95
132
  addScriptToWebsite: function (src) {
96
133
  return new Promise(function (resolve, reject) {
97
134
  var id = (0, crypto_js_1.MD5)(src).toString();
98
- var script = document.createElement("script");
135
+ var script = document.createElement('script');
99
136
  if (!document.querySelector("script[id=\"".concat(id, "\"]"))) {
100
137
  script.id = id;
101
138
  script.src = src;
102
- script.type = "text/javascript";
139
+ script.type = 'text/javascript';
103
140
  script.onload = resolve;
104
141
  script.onerror = reject;
105
142
  document.body.appendChild(script);
@@ -1 +1 @@
1
- {"version":3,"file":"Helpers.js","sourceRoot":"","sources":["../../src/base/Helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Helpers.js","sourceRoot":"","sources":["../../src/base/Helpers.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import nacl from 'tweetnacl';
1
2
  export default class RequestBehaviour {
2
3
  /**
3
4
  * Environment identifier (live|test|sandbox)
@@ -15,10 +16,33 @@ export default class RequestBehaviour {
15
16
  * SDK version
16
17
  */
17
18
  sdk_version: string;
19
+ /**
20
+ * For internal use to prevent encrypting same request instance twice
21
+ */
22
+ protected sdk_key_pair: nacl.BoxKeyPair;
18
23
  /**
19
24
  * Initialize request
20
25
  */
21
26
  constructor();
27
+ /**
28
+ * Get sdk_key_pair from current instance
29
+ *
30
+ * @return
31
+ */
32
+ getSDKKeyPair(): nacl.BoxKeyPair | null;
33
+ /**
34
+ * Check if current request needs encryption, must be overriden by inherited classes.
35
+ *
36
+ * @return
37
+ */
38
+ isEncryptable(): boolean;
39
+ /**
40
+ * Encrypt fields with sensitive data, must be overriden by inherited classes.
41
+ *
42
+ * @param publicKey
43
+ * @return
44
+ */
45
+ withEncryption(publicKey: string): string | null;
22
46
  /**
23
47
  * Serialize object to JSON string
24
48
  *
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var Helpers_1 = require("./Helpers");
4
- var version_1 = require("../version");
6
+ var Helpers_1 = __importDefault(require("./Helpers"));
7
+ var version_1 = __importDefault(require("../version"));
5
8
  var RequestBehaviour = /** @class */ (function () {
6
9
  /**
7
10
  * Initialize request
@@ -23,20 +26,49 @@ var RequestBehaviour = /** @class */ (function () {
23
26
  * SDK version
24
27
  */
25
28
  this.sdk_version = null;
29
+ /**
30
+ * For internal use to prevent encrypting same request instance twice
31
+ */
32
+ this.sdk_key_pair = null;
26
33
  this.lang = Intl.DateTimeFormat().resolvedOptions().locale;
27
- this.from = "sdk-javascript";
34
+ this.from = 'sdk-javascript';
28
35
  this.sdk_version = version_1.default;
29
36
  if (this.lang != 'es' && this.lang != 'en') {
30
37
  this.lang = 'es';
31
38
  }
32
39
  }
40
+ /**
41
+ * Get sdk_key_pair from current instance
42
+ *
43
+ * @return
44
+ */
45
+ RequestBehaviour.prototype.getSDKKeyPair = function () {
46
+ return this.sdk_key_pair;
47
+ };
48
+ /**
49
+ * Check if current request needs encryption, must be overriden by inherited classes.
50
+ *
51
+ * @return
52
+ */
53
+ RequestBehaviour.prototype.isEncryptable = function () {
54
+ return false;
55
+ };
56
+ /**
57
+ * Encrypt fields with sensitive data, must be overriden by inherited classes.
58
+ *
59
+ * @param publicKey
60
+ * @return
61
+ */
62
+ RequestBehaviour.prototype.withEncryption = function (publicKey) {
63
+ return null;
64
+ };
33
65
  /**
34
66
  * Serialize object to JSON string
35
67
  *
36
68
  * @return
37
69
  */
38
70
  RequestBehaviour.prototype.toJson = function () {
39
- return Helpers_1.default.objectToJson(this);
71
+ return Helpers_1.default.objectToJson(this, ['sdk_key_pair']);
40
72
  };
41
73
  return RequestBehaviour;
42
74
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"RequestBehaviour.js","sourceRoot":"","sources":["../../src/base/RequestBehaviour.ts"],"names":[],"mappings":";;AAAA,qCAAgC;AAChC,sCAAiC;AAEjC;IAqBC;;OAEG;IACH;QAvBA;;WAEG;QACH,QAAG,GAAW,IAAI,CAAC;QAEnB;;WAEG;QACH,SAAI,GAAW,IAAI,CAAC;QAEpB;;WAEG;QACH,SAAI,GAAW,IAAI,CAAC;QAEpB;;WAEG;QACH,gBAAW,GAAW,IAAI,CAAC;QAM1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC;QAC3D,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,iBAAO,CAAC;QAE3B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SACjB;IACF,CAAC;IAED;;;;OAIG;IACH,iCAAM,GAAN;QACC,OAAO,iBAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IACF,uBAAC;AAAD,CAAC,AA1CD,IA0CC"}
1
+ {"version":3,"file":"RequestBehaviour.js","sourceRoot":"","sources":["../../src/base/RequestBehaviour.ts"],"names":[],"mappings":";;;;;AACA,sDAAgC;AAChC,uDAAiC;AAEjC;IA0BC;;OAEG;IACH;QA5BA;;WAEG;QACH,QAAG,GAAW,IAAI,CAAC;QAEnB;;WAEG;QACH,SAAI,GAAW,IAAI,CAAC;QAEpB;;WAEG;QACH,SAAI,GAAW,IAAI,CAAC;QAEpB;;WAEG;QACH,gBAAW,GAAW,IAAI,CAAC;QAE3B;;WAEG;QACO,iBAAY,GAAoB,IAAI,CAAC;QAM9C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC;QAC3D,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,iBAAO,CAAC;QAE3B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SACjB;IACF,CAAC;IAED;;;;OAIG;IACH,wCAAa,GAAb;QACC,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,wCAAa,GAAb;QACC,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,yCAAc,GAAd,UAAe,SAAiB;QAC/B,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;OAIG;IACH,iCAAM,GAAN;QACC,OAAO,iBAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IACrD,CAAC;IACF,uBAAC;AAAD,CAAC,AA3ED,IA2EC"}
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var Helpers_1 = require("./Helpers");
6
+ var Helpers_1 = __importDefault(require("./Helpers"));
4
7
  var Response = /** @class */ (function () {
5
8
  function Response() {
6
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Response.js","sourceRoot":"","sources":["../../src/base/Response.ts"],"names":[],"mappings":";;AAAA,qCAAgC;AAEhC;IAAA;QAMC;;WAEG;QACH,WAAM,GAAW,IAAI,CAAC;QAOtB;;WAEG;QACH,YAAO,GAAY,KAAK,CAAC;QAEzB;;WAEG;QACH,YAAO,GAAW,IAAI,CAAC;QAEvB;;WAEG;QACH,SAAI,GAAQ,SAAS,CAAC;QAEtB;;WAEG;QACH,WAAM,GAAW,SAAS,CAAC;IA4D5B,CAAC;IA1DA;;;;OAIG;IACH,4BAAS,GAAT,UAAU,MAAc;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,4BAAS,GAAT;QACC,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACH,gCAAa,GAAb,UAAc,GAAW;QACxB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACjB,OAAO,KAAK,CAAC;SACb;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACH,0BAAO,GAAP,UAAQ,GAAW;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACf,OAAO,IAAI,CAAC;SACZ;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YACnC,OAAO,IAAI,CAAC;SACZ;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,yBAAM,GAAN;QACC,OAAO,iBAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IACF,eAAC;AAAD,CAAC,AA9FD,IA8FC"}
1
+ {"version":3,"file":"Response.js","sourceRoot":"","sources":["../../src/base/Response.ts"],"names":[],"mappings":";;;;;AAAA,sDAAgC;AAEhC;IAAA;QAMC;;WAEG;QACH,WAAM,GAAW,IAAI,CAAC;QAOtB;;WAEG;QACH,YAAO,GAAY,KAAK,CAAC;QAEzB;;WAEG;QACH,YAAO,GAAW,IAAI,CAAC;QAEvB;;WAEG;QACH,SAAI,GAAQ,SAAS,CAAC;QAEtB;;WAEG;QACH,WAAM,GAAW,SAAS,CAAC;IA4D5B,CAAC;IA1DA;;;;OAIG;IACH,4BAAS,GAAT,UAAU,MAAc;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,4BAAS,GAAT;QACC,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACH,gCAAa,GAAb,UAAc,GAAW;QACxB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACjB,OAAO,KAAK,CAAC;SACb;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACH,0BAAO,GAAP,UAAQ,GAAW;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACf,OAAO,IAAI,CAAC;SACZ;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YACnC,OAAO,IAAI,CAAC;SACZ;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,yBAAM,GAAN;QACC,OAAO,iBAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IACF,eAAC;AAAD,CAAC,AA9FD,IA8FC"}
@@ -6,6 +6,10 @@ export default class ServiceBehaviour {
6
6
  * Settings service model
7
7
  */
8
8
  settings: Settings;
9
+ /**
10
+ * Public key from pair generated by current instance.
11
+ */
12
+ private sdk_public_key;
9
13
  /**
10
14
  * Initialize service
11
15
  */
@@ -33,6 +37,32 @@ export default class ServiceBehaviour {
33
37
  * @returns
34
38
  */
35
39
  private exceptionResponse;
40
+ /**
41
+ * Verify and set request encryption values
42
+ *
43
+ * @param request
44
+ */
45
+ private validateEncryption;
46
+ /**
47
+ * Resiliently fetch merchant public key, trying at least 3 times before failing
48
+ *
49
+ * @throws InvalidCredentialsException
50
+ */
51
+ private validateMerchantPublicKey;
52
+ /**
53
+ * Resiliently generate keys and encrypt request, trying at least 3 times before failing
54
+ *
55
+ * @param request
56
+ * @throws FailedEncryptionException
57
+ */
58
+ private validateSDKPublicKey;
59
+ /**
60
+ * Fetch merchant public key for encryption
61
+ *
62
+ * @return
63
+ * @throws InvalidCredentialsException
64
+ */
65
+ private fetchMerchantPublicKey;
36
66
  /**
37
67
  * Get API route
38
68
  *
@@ -35,24 +35,30 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
35
35
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
36
  }
37
37
  };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
38
41
  Object.defineProperty(exports, "__esModule", { value: true });
39
- var axios_1 = require("axios");
40
- var InvalidCredentialsException_1 = require("../exceptions/InvalidCredentialsException");
41
- var Response_1 = require("./Response");
42
- var ErrorResponse_1 = require("../responses/ErrorResponse");
43
- var FailureResponse_1 = require("../responses/FailureResponse");
44
- var InputErrorResponse_1 = require("../responses/InputErrorResponse");
45
- var NetworkFailureResponse_1 = require("../responses/NetworkFailureResponse");
46
- var NoAccessResponse_1 = require("../responses/NoAccessResponse");
47
- var NotFoundResponse_1 = require("../responses/NotFoundResponse");
48
- var PayloadResponse_1 = require("../responses/PayloadResponse");
49
- var PaymentDeclinedResponse_1 = require("../responses/PaymentDeclinedResponse");
50
- var PreconditionalResponse_1 = require("../responses/PreconditionalResponse");
51
- var SuccessResponse_1 = require("../responses/SuccessResponse");
52
- var TimeoutResponse_1 = require("../responses/TimeoutResponse");
42
+ var axios_1 = __importDefault(require("axios"));
43
+ var InvalidCredentialsException_1 = __importDefault(require("../exceptions/InvalidCredentialsException"));
44
+ var FailedEncryptionException_1 = __importDefault(require("../exceptions/FailedEncryptionException"));
45
+ var RequestBehaviour_1 = __importDefault(require("./RequestBehaviour"));
46
+ var Response_1 = __importDefault(require("./Response"));
47
+ var ErrorResponse_1 = __importDefault(require("../responses/ErrorResponse"));
48
+ var FailureResponse_1 = __importDefault(require("../responses/FailureResponse"));
49
+ var InputErrorResponse_1 = __importDefault(require("../responses/InputErrorResponse"));
50
+ var NetworkFailureResponse_1 = __importDefault(require("../responses/NetworkFailureResponse"));
51
+ var NoAccessResponse_1 = __importDefault(require("../responses/NoAccessResponse"));
52
+ var NotFoundResponse_1 = __importDefault(require("../responses/NotFoundResponse"));
53
+ var PayloadResponse_1 = __importDefault(require("../responses/PayloadResponse"));
54
+ var PaymentDeclinedResponse_1 = __importDefault(require("../responses/PaymentDeclinedResponse"));
55
+ var PreconditionalResponse_1 = __importDefault(require("../responses/PreconditionalResponse"));
56
+ var SuccessResponse_1 = __importDefault(require("../responses/SuccessResponse"));
57
+ var TimeoutResponse_1 = __importDefault(require("../responses/TimeoutResponse"));
53
58
  axios_1.default.defaults.validateStatus = function () {
54
59
  return true;
55
60
  };
61
+ var PUBLIC_KEY_PATH = 'api/v2/merchant/public_key';
56
62
  var ServiceBehaviour = /** @class */ (function () {
57
63
  /**
58
64
  * Initialize service
@@ -69,7 +75,7 @@ var ServiceBehaviour = /** @class */ (function () {
69
75
  */
70
76
  ServiceBehaviour.prototype.buildRequest = function (url, transaction) {
71
77
  if (!this.settings.auth_key || !this.settings.auth_hash) {
72
- throw new InvalidCredentialsException_1.default("The merchant credentials are not definied (key/hash).");
78
+ throw new InvalidCredentialsException_1.default('The merchant credentials are not definied (key/hash).');
73
79
  }
74
80
  if (this.settings.environment != null) {
75
81
  transaction.env = this.settings.environment;
@@ -84,7 +90,10 @@ var ServiceBehaviour = /** @class */ (function () {
84
90
  'x-auth-hash': this.settings.auth_hash,
85
91
  };
86
92
  if (this.settings.auth_user) {
87
- headers["x-auth-user"] = this.settings.auth_user;
93
+ headers['x-auth-user'] = this.settings.auth_user;
94
+ }
95
+ if (this.sdk_public_key) {
96
+ headers['x-auth-secure'] = this.sdk_public_key;
88
97
  }
89
98
  return axios_1.default.create({
90
99
  baseURL: this.settings.endpoint,
@@ -163,6 +172,107 @@ var ServiceBehaviour = /** @class */ (function () {
163
172
  response.message = e.message;
164
173
  return response;
165
174
  };
175
+ /**
176
+ * Verify and set request encryption values
177
+ *
178
+ * @param request
179
+ */
180
+ ServiceBehaviour.prototype.validateEncryption = function (request) {
181
+ return __awaiter(this, void 0, void 0, function () {
182
+ return __generator(this, function (_a) {
183
+ switch (_a.label) {
184
+ case 0:
185
+ if (!request.isEncryptable()) {
186
+ return [2 /*return*/];
187
+ }
188
+ return [4 /*yield*/, this.validateMerchantPublicKey()];
189
+ case 1:
190
+ _a.sent();
191
+ this.validateSDKPublicKey(request);
192
+ return [2 /*return*/];
193
+ }
194
+ });
195
+ });
196
+ };
197
+ /**
198
+ * Resiliently fetch merchant public key, trying at least 3 times before failing
199
+ *
200
+ * @throws InvalidCredentialsException
201
+ */
202
+ ServiceBehaviour.prototype.validateMerchantPublicKey = function () {
203
+ return __awaiter(this, void 0, void 0, function () {
204
+ var tries, _a;
205
+ return __generator(this, function (_b) {
206
+ switch (_b.label) {
207
+ case 0:
208
+ tries = 0;
209
+ _b.label = 1;
210
+ case 1:
211
+ if (!(!this.settings.public_key && tries < 3)) return [3 /*break*/, 3];
212
+ _a = this.settings;
213
+ return [4 /*yield*/, this.fetchMerchantPublicKey()];
214
+ case 2:
215
+ _a.public_key = _b.sent();
216
+ tries++;
217
+ return [3 /*break*/, 1];
218
+ case 3:
219
+ if (this.settings.public_key == null) {
220
+ throw new InvalidCredentialsException_1.default('Could not obtain necessary credentials for transaction.');
221
+ }
222
+ return [2 /*return*/];
223
+ }
224
+ });
225
+ });
226
+ };
227
+ /**
228
+ * Resiliently generate keys and encrypt request, trying at least 3 times before failing
229
+ *
230
+ * @param request
231
+ * @throws FailedEncryptionException
232
+ */
233
+ ServiceBehaviour.prototype.validateSDKPublicKey = function (request) {
234
+ var tries = 0;
235
+ var lastError = null;
236
+ while (!this.sdk_public_key && tries < 3 || tries === 0) {
237
+ try {
238
+ this.sdk_public_key = request.withEncryption(this.settings.public_key);
239
+ }
240
+ catch (err) {
241
+ lastError = err;
242
+ }
243
+ finally {
244
+ tries++;
245
+ }
246
+ }
247
+ if (!this.sdk_public_key && lastError) {
248
+ throw lastError;
249
+ }
250
+ if (!this.sdk_public_key) {
251
+ throw new FailedEncryptionException_1.default('Could not process encryption, please try again.');
252
+ }
253
+ };
254
+ /**
255
+ * Fetch merchant public key for encryption
256
+ *
257
+ * @return
258
+ * @throws InvalidCredentialsException
259
+ */
260
+ ServiceBehaviour.prototype.fetchMerchantPublicKey = function () {
261
+ return __awaiter(this, void 0, void 0, function () {
262
+ var response;
263
+ return __generator(this, function (_a) {
264
+ switch (_a.label) {
265
+ case 0: return [4 /*yield*/, this.get(PUBLIC_KEY_PATH, new RequestBehaviour_1.default())];
266
+ case 1:
267
+ response = _a.sent();
268
+ if (response.success) {
269
+ return [2 /*return*/, response.getData('public_key')];
270
+ }
271
+ return [2 /*return*/, null];
272
+ }
273
+ });
274
+ });
275
+ };
166
276
  /**
167
277
  * Get API route
168
278
  *
@@ -170,7 +280,7 @@ var ServiceBehaviour = /** @class */ (function () {
170
280
  * @return
171
281
  */
172
282
  ServiceBehaviour.prototype.getRoute = function (route) {
173
- return this.settings.endpoint + "/" + route;
283
+ return this.settings.endpoint + '/' + route;
174
284
  };
175
285
  /**
176
286
  * API POST request
@@ -186,15 +296,18 @@ var ServiceBehaviour = /** @class */ (function () {
186
296
  return __generator(this, function (_a) {
187
297
  switch (_a.label) {
188
298
  case 0:
189
- _a.trys.push([0, 2, , 3]);
190
- return [4 /*yield*/, this.buildRequest(url, body).post(url, JSON.parse(body.toJson()))];
299
+ _a.trys.push([0, 3, , 4]);
300
+ return [4 /*yield*/, this.validateEncryption(body)];
191
301
  case 1:
302
+ _a.sent();
303
+ return [4 /*yield*/, this.buildRequest(url, body).post(url, JSON.parse(body.toJson()))];
304
+ case 2:
192
305
  response = _a.sent();
193
306
  return [2 /*return*/, this.parseResponse(response.data, response.status)];
194
- case 2:
307
+ case 3:
195
308
  e_1 = _a.sent();
196
309
  return [2 /*return*/, this.exceptionResponse(e_1)];
197
- case 3: return [2 /*return*/];
310
+ case 4: return [2 /*return*/];
198
311
  }
199
312
  });
200
313
  });
@@ -213,15 +326,18 @@ var ServiceBehaviour = /** @class */ (function () {
213
326
  return __generator(this, function (_a) {
214
327
  switch (_a.label) {
215
328
  case 0:
216
- _a.trys.push([0, 2, , 3]);
217
- return [4 /*yield*/, this.buildRequest(url, body).put(url, JSON.parse(body.toJson()))];
329
+ _a.trys.push([0, 3, , 4]);
330
+ return [4 /*yield*/, this.validateEncryption(body)];
218
331
  case 1:
332
+ _a.sent();
333
+ return [4 /*yield*/, this.buildRequest(url, body).put(url, JSON.parse(body.toJson()))];
334
+ case 2:
219
335
  response = _a.sent();
220
336
  return [2 /*return*/, this.parseResponse(response.data, response.status)];
221
- case 2:
337
+ case 3:
222
338
  e_2 = _a.sent();
223
339
  return [2 /*return*/, this.exceptionResponse(e_2)];
224
- case 3: return [2 /*return*/];
340
+ case 4: return [2 /*return*/];
225
341
  }
226
342
  });
227
343
  });
@@ -240,17 +356,20 @@ var ServiceBehaviour = /** @class */ (function () {
240
356
  return __generator(this, function (_a) {
241
357
  switch (_a.label) {
242
358
  case 0:
243
- _a.trys.push([0, 2, , 3]);
359
+ _a.trys.push([0, 3, , 4]);
360
+ return [4 /*yield*/, this.validateEncryption(body)];
361
+ case 1:
362
+ _a.sent();
244
363
  return [4 /*yield*/, this.buildRequest(url, body).delete(url, {
245
364
  params: JSON.parse(body.toJson()),
246
365
  })];
247
- case 1:
366
+ case 2:
248
367
  response = _a.sent();
249
368
  return [2 /*return*/, this.parseResponse(response.data, response.status)];
250
- case 2:
369
+ case 3:
251
370
  e_3 = _a.sent();
252
371
  return [2 /*return*/, this.exceptionResponse(e_3)];
253
- case 3: return [2 /*return*/];
372
+ case 4: return [2 /*return*/];
254
373
  }
255
374
  });
256
375
  });
@@ -269,17 +388,22 @@ var ServiceBehaviour = /** @class */ (function () {
269
388
  return __generator(this, function (_a) {
270
389
  switch (_a.label) {
271
390
  case 0:
272
- _a.trys.push([0, 2, , 3]);
273
- return [4 /*yield*/, this.buildRequest(url, body).get(url, {
274
- params: JSON.parse(body.toJson()),
275
- })];
391
+ _a.trys.push([0, 4, , 5]);
392
+ if (!(url !== PUBLIC_KEY_PATH)) return [3 /*break*/, 2];
393
+ return [4 /*yield*/, this.validateEncryption(body)];
276
394
  case 1:
395
+ _a.sent();
396
+ _a.label = 2;
397
+ case 2: return [4 /*yield*/, this.buildRequest(url, body).get(url, {
398
+ params: JSON.parse(body.toJson()),
399
+ })];
400
+ case 3:
277
401
  response = _a.sent();
278
402
  return [2 /*return*/, this.parseResponse(response.data, response.status)];
279
- case 2:
403
+ case 4:
280
404
  e_4 = _a.sent();
281
405
  return [2 /*return*/, this.exceptionResponse(e_4)];
282
- case 3: return [2 /*return*/];
406
+ case 5: return [2 /*return*/];
283
407
  }
284
408
  });
285
409
  });