@unchainedshop/plugins 2.8.8 → 2.8.10

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.
@@ -1,3 +1,3 @@
1
1
  /// <reference lib="dom" />
2
- declare const _default: (endpoint: string, merchantId: string, secret: string) => (path: string, body: unknown) => Promise<Response>;
2
+ declare const _default: (endpoint: string, merchantId: string, secret: string) => ((path: string, body: unknown) => Promise<Response>);
3
3
  export default _default;
@@ -30,7 +30,7 @@ export const datatransHandler = async (req, res) => {
30
30
  try {
31
31
  if (transaction.type === 'card_check') {
32
32
  const paymentProviderId = referenceId;
33
- const paymentCredentials = await modules.payment.registerCredentials(paymentProviderId, { userId, transactionContext: { transactionId: transaction.transactionId } }, { ...resolvedContext });
33
+ const paymentCredentials = await modules.payment.registerCredentials(paymentProviderId, { userId, transactionContext: { transactionId: transaction.transactionId } }, resolvedContext);
34
34
  logger.info(`registered payment credentials for ${userId}`, {
35
35
  userId,
36
36
  });
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/payment/datatrans-v2/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,iBAAiB,EAAE,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIrE,MAAM,EACJ,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,GAAG,QAAQ,CAAC,YAAY,GAC3C,GAAG,OAAO,CAAC,GAAG,CAAC;AAEhB,MAAM,MAAM,GAAG,YAAY,CAAC,0CAA0C,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACjD,MAAM,eAAe,GAAG,GAAG,CAAC,gBAA2B,CAAC;IACxD,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC;IACpC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACrD,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,SAAS,EAAE,CAAC;QACvC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrD,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE9C,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;YAC5C,QAAQ,EAAE,kBAAyB;YACnC,OAAO,EAAE,mBAAmB,IAAI,kBAAkB;SACnD,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAExB,IAAI,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,kBAAkB,SAAS,MAAM,mBAAmB,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/E,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAA0B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAA0B,CAAC;QAEzF,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE;YACjC,IAAI,EAAE,WAAW,CAAC,IAAI;SACvB,CAAC,CAAC;QAEH,IAAI,WAAW,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;YAClC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAE7E,IAAI,CAAC;gBACH,IAAI,WAAW,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACtC,MAAM,iBAAiB,GAAG,WAAW,CAAC;oBACtC,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAClE,iBAAiB,EACjB,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,aAAa,EAAE,EAAE,EAC5E,EAAE,GAAG,eAAe,EAAE,CACvB,CAAC;oBACF,MAAM,CAAC,IAAI,CAAC,sCAAsC,MAAM,EAAE,EAAE;wBAC1D,MAAM;qBACP,CAAC,CAAC;oBACH,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAC5C,OAAO;gBACT,CAAC;gBACD,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBACnC,MAAM,cAAc,GAAG,WAAW,CAAC;oBACnC,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC;wBAClE,cAAc;qBACf,CAAC,CAAC;oBACH,IAAI,CAAC,YAAY;wBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,cAAc,YAAY,CAAC,CAAC;oBAExF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CACzC,YAAY,CAAC,OAAO,EACpB,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,aAAa,EAAE,EAAE,EACxE,eAAe,CAChB,CAAC;oBACF,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC,gCAAgC,KAAK,CAAC,WAAW,EAAE,EAAE;wBAC/D,OAAO,EAAE,KAAK,CAAC,GAAG;qBACnB,CAAC,CAAC;oBACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC/B,OAAO;gBACT,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,CAAC,CAAC,CAAC;gBACrD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC5E,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;IACD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACnB,GAAG,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC,CAAC"}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/payment/datatrans-v2/middleware.ts"],"names":[],"mappings":"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"}
@@ -25,8 +25,6 @@ export type GatewayObject = {
25
25
  };
26
26
  export type TransactionObject = any;
27
27
  declare const createPayrexxAPI: (instance: string, secret: string) => {
28
- buildSignature(query?: string): Promise<string>;
29
- buildUrl(path: any, params?: {}): string;
30
28
  chargePreAuthorized(id: any, params: any): Promise<any>;
31
29
  deleteReservation(id: any): Promise<any>;
32
30
  getGateway(id: any): Promise<GatewayObject>;
@@ -1,3 +1,4 @@
1
+ import makeFetcher from './makeFetcher.js';
1
2
  const baseUrl = 'https://api.payrexx.com/v1.0/';
2
3
  export var GatewayObjectStatus;
3
4
  (function (GatewayObjectStatus) {
@@ -14,78 +15,41 @@ export var GatewayObjectStatus;
14
15
  GatewayObjectStatus["error"] = "error";
15
16
  GatewayObjectStatus["uncaptured"] = "_";
16
17
  })(GatewayObjectStatus || (GatewayObjectStatus = {}));
17
- const createPayrexxAPI = (instance, secret) => ({
18
- async buildSignature(query = '') {
19
- const key = await crypto.subtle.importKey('raw', new TextEncoder().encode(secret), { name: 'HMAC', hash: 'SHA-256' }, false, ['sign', 'verify']);
20
- const signature = await crypto.subtle.sign('HMAC', key, new TextEncoder().encode(query));
21
- return btoa(String.fromCharCode(...new Uint8Array(signature)));
22
- },
23
- buildUrl(path, params = {}) {
24
- const url = new URL(path, baseUrl);
25
- url.search = new URLSearchParams({ instance, ...params }).toString();
26
- return url.href;
27
- },
28
- async chargePreAuthorized(id, params) {
29
- const queryParams = { ...params };
30
- const signature = await this.buildSignature(new URLSearchParams(queryParams).toString());
31
- queryParams.ApiSignature = signature;
32
- const url = this.buildUrl(`Transaction/${id}/`);
33
- const result = await fetch(url, {
34
- method: 'POST',
35
- body: new URLSearchParams(queryParams).toString(),
36
- headers: {
37
- accept: 'application/json',
38
- 'content-type': 'application/x-www-form-urlencoded',
39
- },
40
- });
41
- if (result.ok) {
42
- return result.json();
43
- }
44
- throw new Error(await result.text());
45
- },
46
- async deleteReservation(id) {
47
- const url = this.buildUrl(`Transaction/${id}/`, { ApiSignature: await this.buildSignature() });
48
- const result = await fetch(url, {
49
- method: 'DELETE',
50
- headers: {
51
- accept: 'application/json',
52
- 'content-type': 'application/x-www-form-urlencoded',
53
- },
54
- });
55
- if (result.ok) {
56
- return result.json();
57
- }
58
- throw new Error(await result.text());
59
- },
60
- async getGateway(id) {
61
- const url = this.buildUrl(`Gateway/${id}/`, { ApiSignature: await this.buildSignature() });
62
- const result = await fetch(url);
63
- if (!result.ok)
18
+ const createPayrexxAPI = (instance, secret) => {
19
+ const fetchPayrexx = makeFetcher(baseUrl, instance, secret);
20
+ return {
21
+ async chargePreAuthorized(id, params) {
22
+ const result = await fetchPayrexx(`Transaction/${id}`, 'POST', params);
23
+ if (result.ok) {
24
+ return result.json();
25
+ }
64
26
  throw new Error(await result.text());
65
- const { status, data } = await result.json();
66
- if (status !== 'success')
67
- return null;
68
- return data?.[0];
69
- },
70
- async createGateway(params) {
71
- const queryParams = { ...params };
72
- const signature = await this.buildSignature(new URLSearchParams(queryParams).toString());
73
- queryParams.ApiSignature = signature;
74
- const url = this.buildUrl('Gateway/');
75
- const result = await fetch(url, {
76
- method: 'POST',
77
- body: new URLSearchParams(queryParams).toString(),
78
- headers: {
79
- accept: 'application/json',
80
- 'content-type': 'application/x-www-form-urlencoded',
81
- },
82
- });
83
- if (result.ok) {
84
- return result.json();
85
- }
86
- throw new Error(await result.text());
87
- },
88
- });
27
+ },
28
+ async deleteReservation(id) {
29
+ const result = await fetchPayrexx(`Transaction/${id}`, 'DELETE');
30
+ if (result.ok) {
31
+ return result.json();
32
+ }
33
+ throw new Error(await result.text());
34
+ },
35
+ async getGateway(id) {
36
+ const result = await fetchPayrexx(`Gateway/${id}`, 'GET');
37
+ if (!result.ok)
38
+ throw new Error(await result.text());
39
+ const { status, data } = await result.json();
40
+ if (status !== 'success')
41
+ return null;
42
+ return data?.[0];
43
+ },
44
+ async createGateway(params) {
45
+ const result = await fetchPayrexx('Gateway', 'POST', params);
46
+ if (result.ok) {
47
+ return result.json();
48
+ }
49
+ throw new Error(await result.text());
50
+ },
51
+ };
52
+ };
89
53
  export default createPayrexxAPI;
90
54
  // where you want to consume the payrexx module:
91
55
  // const payrexx = payrexx.init(instance, api_secret);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/payment/payrexx/api/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/payment/payrexx/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAE3C,MAAM,OAAO,GAAG,+BAA+B,CAAC;AAEhD,MAAM,CAAN,IAAY,mBAaX;AAbD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,8CAAuB,CAAA;IACvB,8CAAuB,CAAA;IACvB,4CAAqB,CAAA;IACrB,gDAAyB,CAAA;IACzB,4CAAqB,CAAA;IACrB,4CAAqB,CAAA;IACrB,sDAA+B,CAAA;IAC/B,gEAA2C,CAAA;IAC3C,gDAAyB,CAAA;IACzB,sCAAe,CAAA;IACf,uCAAgB,CAAA;AAClB,CAAC,EAbW,mBAAmB,KAAnB,mBAAmB,QAa9B;AAgBD,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAE,MAAc,EAAE,EAAE;IAC5D,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE5D,OAAO;QACL,KAAK,CAAC,mBAAmB,CAAC,EAAE,EAAE,MAAM;YAClC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACvE,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACd,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;YACvB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,KAAK,CAAC,iBAAiB,CAAC,EAAE;YACxB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;YACjE,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACd,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;YACvB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,EAAE;YACjB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAC1D,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACrD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC7C,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC;YACtC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,MAAM;YACxB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7D,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACd,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;YACvB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC;AAEhC,gDAAgD;AAChD,sDAAsD;AACtD,iDAAiD;AACjD,iBAAiB;AACjB,4BAA4B;AAC5B,MAAM;AAEN,iCAAiC;AACjC,2CAA2C;AAC3C,qCAAqC;AACrC,IAAI"}
@@ -0,0 +1,3 @@
1
+ /// <reference lib="dom" />
2
+ declare const _default: (baseUrl?: string, instance?: string, secret?: string) => ((path: string, method: 'GET' | 'DELETE' | 'PUT' | 'POST', data?: any) => Promise<Response>);
3
+ export default _default;
@@ -0,0 +1,72 @@
1
+ /// <reference lib="dom" />
2
+ import fs from 'fs';
3
+ import util from 'util';
4
+ import { resolve } from 'path';
5
+ import { createLogger } from '@unchainedshop/logger';
6
+ const readFile = util.promisify(fs.readFile);
7
+ const { PAYREXX_API_MOCKS_PATH } = process.env;
8
+ const logger = createLogger('unchained:payrexx');
9
+ export default (baseUrl = 'https://api.payrexx.com/v1.0/', instance = null, secret = null) => {
10
+ if (PAYREXX_API_MOCKS_PATH) {
11
+ return async (path) => {
12
+ try {
13
+ const filePath = resolve(process.env.PWD, PAYREXX_API_MOCKS_PATH, `${path}.json`);
14
+ const content = await readFile(filePath);
15
+ const textData = content.toString();
16
+ const jsonData = JSON.parse(textData);
17
+ return {
18
+ json: async () => jsonData,
19
+ text: async () => textData,
20
+ ok: !jsonData?.error,
21
+ status: jsonData?.error ? 500 : 204,
22
+ };
23
+ }
24
+ catch (error) {
25
+ logger.error('Mock: Error while trying reading and parsing file', {
26
+ ...error,
27
+ });
28
+ return {
29
+ json: async () => ({ error: { code: 'MOCK', message: 'MOCK' } }),
30
+ text: async () => 'MOCK',
31
+ ok: false,
32
+ status: 500,
33
+ };
34
+ }
35
+ };
36
+ }
37
+ const buildSignature = async (query = '') => {
38
+ const key = await crypto.subtle.importKey('raw', new TextEncoder().encode(secret), { name: 'HMAC', hash: 'SHA-256' }, false, ['sign', 'verify']);
39
+ const signature = await crypto.subtle.sign('HMAC', key, new TextEncoder().encode(query));
40
+ return btoa(String.fromCharCode(...new Uint8Array(signature)));
41
+ };
42
+ const buildUrl = (path, params = {}) => {
43
+ const url = new URL(`${path}/`, baseUrl);
44
+ url.search = new URLSearchParams({ instance, ...params }).toString();
45
+ return url.href;
46
+ };
47
+ return async (path, method, data) => {
48
+ logger.verbose(`${method} ${path}`);
49
+ if (method === 'POST') {
50
+ const queryParams = { ...data };
51
+ const signature = await buildSignature(new URLSearchParams(queryParams).toString());
52
+ queryParams.ApiSignature = signature;
53
+ const url = buildUrl(path);
54
+ return fetch(url, {
55
+ method,
56
+ body: new URLSearchParams(queryParams).toString(),
57
+ headers: {
58
+ accept: 'application/json',
59
+ 'content-type': 'application/x-www-form-urlencoded',
60
+ },
61
+ });
62
+ }
63
+ if (method === 'DELETE' || method === 'GET') {
64
+ const url = buildUrl(path, { ApiSignature: await buildSignature() });
65
+ return fetch(url, {
66
+ method,
67
+ });
68
+ }
69
+ throw new Error('Method not supported');
70
+ };
71
+ };
72
+ //# sourceMappingURL=makeFetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeFetcher.js","sourceRoot":"","sources":["../../../../src/payment/payrexx/api/makeFetcher.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { PaymentAdapter, PaymentDirector, PaymentError } from '@unchainedshop/core-payment';
2
2
  import { createLogger } from '@unchainedshop/logger';
3
- import { mapOrderDataToGatewayObject } from './payrexx.js';
3
+ import { mapOrderDataToGatewayObject, mapUserToGatewayObject } from './payrexx.js';
4
4
  import createPayrexxAPI, { GatewayObjectStatus } from './api/index.js';
5
5
  export * from './middleware.js';
6
6
  const logger = createLogger('unchained:core-payment:payrexx');
@@ -37,21 +37,46 @@ const Payrexx = {
37
37
  isPayLaterAllowed() {
38
38
  return false;
39
39
  },
40
- validate: async () => {
41
- throw new Error('Token Registration Flow not implemented yet');
42
- },
43
- register: async () => {
44
- throw new Error('Token Registration Flow not implemented yet');
45
- },
46
40
  sign: async (transactionContext = {}) => {
47
- const { orderPayment, order } = params.paymentContext;
41
+ const { orderPayment, userId, order } = params.paymentContext;
48
42
  if (orderPayment) {
43
+ // Order Checkout signing (One-time payment)
49
44
  const pricing = await modules.orders.pricingSheet(order);
50
45
  const gatewayObject = mapOrderDataToGatewayObject({ order, orderPayment, pricing }, transactionContext);
51
46
  const gateway = await api.createGateway(gatewayObject);
52
47
  return JSON.stringify(gateway);
53
48
  }
54
- throw new Error('Token Registration Flow not implemented yet');
49
+ // Payment Credential Registration signing
50
+ const user = await modules.users.findUserById(userId);
51
+ const emailAddress = modules.users.primaryEmail(user)?.address;
52
+ const gateway = await api.createGateway(mapUserToGatewayObject({
53
+ userId,
54
+ emailAddress,
55
+ currencyCode: 'CHF',
56
+ }));
57
+ return JSON.stringify(gateway);
58
+ },
59
+ // async validate(credentials) {
60
+ // if (!credentials.meta) return false;
61
+ // const { objectKey, currency } = credentials.meta;
62
+ // const result = await api().validate({
63
+ // refno: Buffer.from(`valid-${new Date().getTime()}`, 'hex').toString('base64'),
64
+ // currency,
65
+ // [objectKey]: JSON.parse(credentials.token),
66
+ // });
67
+ // return Boolean((result as ValidateResponseSuccess)?.transactionId);
68
+ // },
69
+ async register(transactionResponse) {
70
+ // const { transactionId } = transactionResponse;
71
+ console.log({ transactionResponse });
72
+ throw new Error('Not implemented');
73
+ // const result = (await api().status({
74
+ // transactionId,
75
+ // })) as StatusResponseSuccess;
76
+ // if (result.transactionId) {
77
+ // return parseRegistrationData(result);
78
+ // }
79
+ return null;
55
80
  },
56
81
  async confirm() {
57
82
  const { orderPayment } = params.paymentContext;
@@ -63,13 +88,17 @@ const Payrexx = {
63
88
  if (!gatewayObject) {
64
89
  return false;
65
90
  }
66
- if (gatewayObject.status === GatewayObjectStatus.authorized ||
67
- gatewayObject.status === GatewayObjectStatus.reserved) {
91
+ if (
92
+ // gatewayObject.status === GatewayObjectStatus.authorized || // authorized is only used for tokenization!
93
+ gatewayObject.status === GatewayObjectStatus.reserved) {
68
94
  const allTransactions = gatewayObject.invoices?.flatMap((invoice) => invoice.transactions);
69
- await Promise.all(allTransactions.map(async (transaction) => api.chargePreAuthorized(transaction.id, {})));
95
+ await Promise.all(allTransactions.map(async (transaction) => api.chargePreAuthorized(transaction.id, { referenceId: '__IGNORE_WEBHOOK__' })));
70
96
  return true;
71
97
  }
72
- return false;
98
+ if (gatewayObject.status === GatewayObjectStatus.confirmed) {
99
+ return true; // already confirmed, no need to confirm
100
+ }
101
+ return false; // some other status with refund or anything, can't confirm!
73
102
  },
74
103
  async cancel() {
75
104
  const { orderPayment } = params.paymentContext;
@@ -86,7 +115,10 @@ const Payrexx = {
86
115
  await Promise.all(allTransactions.map(async (transaction) => api.deleteReservation(transaction.id)));
87
116
  return true;
88
117
  }
89
- return false;
118
+ if (gatewayObject.status === GatewayObjectStatus.confirmed) {
119
+ return false; // already confirmed, can't cancel anymore
120
+ }
121
+ return true; // some other status with refund or anything, no need to cancel
90
122
  },
91
123
  charge: async ({ gatewayId, paymentCredentials }) => {
92
124
  if (!gatewayId && !paymentCredentials) {
@@ -102,22 +134,18 @@ const Payrexx = {
102
134
  }
103
135
  const pricing = await modules.orders.pricingSheet(order);
104
136
  const { currency, amount } = pricing.total({ useNetPrice: false });
105
- if (gatewayObject.currency !== currency.toUpperCase() ||
106
- gatewayObject.amount !== Math.round(amount)) {
107
- throw new Error('The price has changed since the intent has been created');
108
- }
109
- if (gatewayObject.referenceId !== orderPayment?._id) {
110
- throw new Error('The order payment is different from the initiating intent');
111
- }
112
- switch (gatewayObject.status) {
113
- case GatewayObjectStatus.waiting:
114
- logger.verbose('Charge postponed because Gateway is pending', {
115
- orderPaymentId: gatewayObject.referenceId,
116
- });
117
- return false;
118
- case GatewayObjectStatus.authorized:
119
- case GatewayObjectStatus.reserved:
120
- case GatewayObjectStatus.confirmed:
137
+ if (
138
+ // gatewayObject.status === 'authorized' || // authorized is only used for tokenization!
139
+ gatewayObject.status === 'reserved' ||
140
+ gatewayObject.status === 'confirmed') {
141
+ try {
142
+ if (gatewayObject.currency !== currency.toUpperCase() ||
143
+ gatewayObject.amount !== Math.round(amount)) {
144
+ throw new Error('The price has changed since the intent has been created');
145
+ }
146
+ if (gatewayObject.referenceId !== orderPayment?._id) {
147
+ throw new Error('The order payment is different from the initiating intent');
148
+ }
121
149
  // confirm will do the transition, to do a checkout those stati above are fine
122
150
  logger.verbose(`Mark as charged, status is ${gatewayObject.status}`, {
123
151
  orderPaymentId: gatewayObject.referenceId,
@@ -126,13 +154,21 @@ const Payrexx = {
126
154
  transactionId: gatewayId,
127
155
  gatewayObject,
128
156
  };
129
- default:
130
- logger.verbose('Charge not possible', {
131
- orderPaymentId: gatewayObject.referenceId,
132
- status: gatewayObject.status,
133
- });
134
- throw new Error(`Gateway Status ${gatewayObject.status} does not allow checkout`);
157
+ }
158
+ catch (e) {
159
+ if (gatewayObject.status === GatewayObjectStatus.reserved) {
160
+ // Cancel the reservation if it's reserved and the order has been manipulated
161
+ const allTransactions = gatewayObject.invoices?.flatMap((invoice) => invoice.transactions);
162
+ await Promise.all(allTransactions.map(async (transaction) => api.deleteReservation(transaction.id)));
163
+ }
164
+ throw e;
165
+ }
135
166
  }
167
+ logger.verbose('Charge not possible', {
168
+ orderPaymentId: gatewayObject.referenceId,
169
+ status: gatewayObject.status,
170
+ });
171
+ throw new Error(`Gateway Status ${gatewayObject.status} does not allow checkout`);
136
172
  },
137
173
  };
138
174
  return adapterActions;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/payment/payrexx/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/payment/payrexx/index.ts"],"names":[],"mappings":"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"}
@@ -15,16 +15,15 @@ export const payrexxHandler = async (request, response) => {
15
15
  }));
16
16
  return;
17
17
  }
18
- if (transaction.status === 'confirmed') {
18
+ if ((transaction.status === 'confirmed' && transaction.referenceId === '__IGNORE_WEBHOOK__') ||
19
+ transaction.status === 'waiting') {
19
20
  // Ignore confirmed transactions, because those hooks are generated through calling the confirm()
20
21
  // method in the payment adapter and could lead to double bookings.
21
- logger.verbose(`unhandled event state`, {
22
- type: Object.keys(request.body).join(','),
23
- });
22
+ logger.verbose(`unhandled transaction state: ${transaction.status}`);
24
23
  response.writeHead(200);
25
24
  response.end(JSON.stringify({
26
25
  ignored: true,
27
- message: `Unhandled event state: transaction.confirmed`,
26
+ message: `Unhandled transaction state: ${transaction.status}`,
28
27
  }));
29
28
  return;
30
29
  }
@@ -32,31 +31,50 @@ export const payrexxHandler = async (request, response) => {
32
31
  transactionId: transaction.id,
33
32
  });
34
33
  try {
35
- const { referenceId: orderPaymentId, invoice } = transaction;
36
- logger.verbose(`checkout with orderPaymentId: ${orderPaymentId}`);
37
- await modules.orders.payments.logEvent(orderPaymentId, {
38
- transactionId: transaction.id,
39
- });
40
- const orderPayment = await modules.orders.payments.findOrderPayment({
41
- orderPaymentId,
42
- });
43
- if (!orderPayment) {
44
- throw new Error(`order payment not found with orderPaymentId: ${orderPaymentId}`);
34
+ if (transaction.preAuthorizationId) {
35
+ // Pre-Authorization Flow, referenceId is a userId
36
+ const { referenceId: paymentProviderId, invoice } = transaction;
37
+ const userId = '';
38
+ logger.verbose(`register credentials for: ${userId}`);
39
+ await modules.payment.registerCredentials(paymentProviderId, { userId, transactionContext: { gatewayId: invoice.paymentRequestId } }, resolvedContext);
40
+ logger.info(`registration successful`, {
41
+ paymentProviderId,
42
+ userId,
43
+ });
44
+ response.writeHead(200);
45
+ response.end(JSON.stringify({
46
+ message: 'registration successful',
47
+ paymentProviderId,
48
+ userId,
49
+ }));
50
+ }
51
+ else {
52
+ const { referenceId: orderPaymentId, invoice } = transaction;
53
+ logger.verbose(`checkout with orderPaymentId: ${orderPaymentId}`);
54
+ await modules.orders.payments.logEvent(orderPaymentId, {
55
+ transactionId: transaction.id,
56
+ });
57
+ const orderPayment = await modules.orders.payments.findOrderPayment({
58
+ orderPaymentId,
59
+ });
60
+ if (!orderPayment) {
61
+ throw new Error(`order payment not found with orderPaymentId: ${orderPaymentId}`);
62
+ }
63
+ const order = await modules.orders.checkout(orderPayment.orderId, {
64
+ paymentContext: {
65
+ gatewayId: invoice.paymentRequestId,
66
+ },
67
+ }, resolvedContext);
68
+ logger.info(`checkout successful`, {
69
+ orderPaymentId,
70
+ orderId: order._id,
71
+ });
72
+ response.writeHead(200);
73
+ response.end(JSON.stringify({
74
+ message: 'checkout successful',
75
+ orderId: order._id,
76
+ }));
45
77
  }
46
- const order = await modules.orders.checkout(orderPayment.orderId, {
47
- paymentContext: {
48
- gatewayId: invoice.paymentRequestId,
49
- },
50
- }, resolvedContext);
51
- logger.info(`checkout successful`, {
52
- orderPaymentId,
53
- orderId: order._id,
54
- });
55
- response.writeHead(200);
56
- response.end(JSON.stringify({
57
- message: 'checkout successful',
58
- orderId: order._id,
59
- }));
60
78
  }
61
79
  catch (error) {
62
80
  logger.error(error, {
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/payment/payrexx/middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/payment/payrexx/middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,MAAM,GAAG,YAAY,CAAC,wCAAwC,CAAC,CAAC;AAEtE,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;IACxD,MAAM,eAAe,GAAG,OAAO,CAAC,gBAA2B,CAAC;IAC5D,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC;IAEpC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAErC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE;YACrC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAC1C,CAAC,CAAC;QACH,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACxB,QAAQ,CAAC,GAAG,CACV,IAAI,CAAC,SAAS,CAAC;YACb,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,yBAAyB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,+BAA+B;SACrG,CAAC,CACH,CAAC;QACF,OAAO;IACT,CAAC;IACD,IACE,CAAC,WAAW,CAAC,MAAM,KAAK,WAAW,IAAI,WAAW,CAAC,WAAW,KAAK,oBAAoB,CAAC;QACxF,WAAW,CAAC,MAAM,KAAK,SAAS,EAChC,CAAC;QACD,iGAAiG;QACjG,mEAAmE;QACnE,MAAM,CAAC,OAAO,CAAC,gCAAgC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QACrE,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACxB,QAAQ,CAAC,GAAG,CACV,IAAI,CAAC,SAAS,CAAC;YACb,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,gCAAgC,WAAW,CAAC,MAAM,EAAE;SAC9D,CAAC,CACH,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE;QACjC,aAAa,EAAE,WAAW,CAAC,EAAE;KAC9B,CAAC,CAAC;IACH,IAAI,CAAC;QACH,IAAI,WAAW,CAAC,kBAAkB,EAAE,CAAC;YACnC,kDAAkD;YAClD,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;YAChE,MAAM,MAAM,GAAG,EAAE,CAAC;YAClB,MAAM,CAAC,OAAO,CAAC,6BAA6B,MAAM,EAAE,CAAC,CAAC;YACtD,MAAM,OAAO,CAAC,OAAO,CAAC,mBAAmB,CACvC,iBAAiB,EACjB,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,gBAAgB,EAAE,EAAE,EACvE,eAAe,CAChB,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;gBACrC,iBAAiB;gBACjB,MAAM;aACP,CAAC,CAAC;YACH,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACxB,QAAQ,CAAC,GAAG,CACV,IAAI,CAAC,SAAS,CAAC;gBACb,OAAO,EAAE,yBAAyB;gBAClC,iBAAiB;gBACjB,MAAM;aACP,CAAC,CACH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;YAC7D,MAAM,CAAC,OAAO,CAAC,iCAAiC,cAAc,EAAE,CAAC,CAAC;YAClE,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE;gBACrD,aAAa,EAAE,WAAW,CAAC,EAAE;aAC9B,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBAClE,cAAc;aACf,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,gDAAgD,cAAc,EAAE,CAAC,CAAC;YACpF,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CACzC,YAAY,CAAC,OAAO,EACpB;gBACE,cAAc,EAAE;oBACd,SAAS,EAAE,OAAO,CAAC,gBAAgB;iBACpC;aACF,EACD,eAAe,CAChB,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;gBACjC,cAAc;gBACd,OAAO,EAAE,KAAK,CAAC,GAAG;aACnB,CAAC,CAAC;YACH,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACxB,QAAQ,CAAC,GAAG,CACV,IAAI,CAAC,SAAS,CAAC;gBACb,OAAO,EAAE,qBAAqB;gBAC9B,OAAO,EAAE,KAAK,CAAC,GAAG;aACnB,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;YAClB,aAAa,EAAE,WAAW,CAAC,EAAE;SAC9B,CAAC,CAAC;QACH,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACxB,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC,CAAC"}
@@ -3,13 +3,28 @@ export declare const mapOrderDataToGatewayObject: ({ order, orderPayment, pricin
3
3
  orderPayment: any;
4
4
  pricing: any;
5
5
  }, options?: {}) => {
6
+ referenceId: any;
7
+ successRedirectUrl: string;
8
+ failedRedirectUrl: string;
9
+ cancelRedirectUrl: string;
6
10
  amount: number;
7
11
  currency: any;
8
12
  purpose: string;
9
13
  reservation: boolean;
10
14
  skipResultPage: boolean;
15
+ };
16
+ export declare const mapUserToGatewayObject: ({ userId, emailAddress, currencyCode }: {
17
+ userId: any;
18
+ emailAddress: any;
19
+ currencyCode: any;
20
+ }, options?: {}) => {
21
+ referenceId: any;
11
22
  successRedirectUrl: string;
12
23
  failedRedirectUrl: string;
13
24
  cancelRedirectUrl: string;
14
- referenceId: any;
25
+ amount: number;
26
+ currency: any;
27
+ purpose: string;
28
+ preAuthorization: boolean;
29
+ skipResultPage: boolean;
15
30
  };