Skip to content

Commit

Permalink
Merge branch 'master' into fix-native-login-ios
Browse files Browse the repository at this point in the history
  • Loading branch information
shadowsheep1 authored Jul 2, 2024
2 parents ab6b2e9 + a0f75f0 commit 3db1a52
Show file tree
Hide file tree
Showing 11 changed files with 121 additions and 15 deletions.
2 changes: 1 addition & 1 deletion assets/wallet/wallet_payment.html
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
const transactionId = urlParams.get("transactionId");
const container = document.getElementById("outcomeSelect");
if (container.value === "0") {
fetch('/ecommerce/io/v1/mock-transaction', {
fetch('/ecommerce/io/v2/mock-transaction', {
method: 'POST',
body: JSON.stringify({
transactionId,
Expand Down
12 changes: 8 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,11 @@
"api_pn": "https://raw.githubusercontent.com/pagopa/io-backend/v13.39.1-RELEASE/api_pn.yaml",
"api_idpay": "https://raw.githubusercontent.com/pagopa/cstar-infrastructure/v6.5.0/src/domains/idpay-app/api/idpay_appio_full/openapi.appio.full.yml",
"api_fast_login": "https://raw.githubusercontent.com/pagopa/io-backend/v13.39.1-RELEASE/openapi/generated/api_fast_login.yaml",
"api_pagopa_walletv3": "https://raw.githubusercontent.com/pagopa/pagopa-infra/v1.35.1/src/domains/wallet-app/api/payment-wallet/v1/_openapi.json.tpl",
"api_pagopa_ecommerce": "https://raw.githubusercontent.com/pagopa/pagopa-infra/v1.35.1/src/domains/ecommerce-app/api/ecommerce-io/v1/_openapi.json.tpl",
"api_pagopa_biz_events": "https://raw.githubusercontent.com/pagopa/pagopa-infra/0a6784276fd43aaff7709dd90e0d379e77326f28/src/domains/bizevents-app/api/transaction-service/v1/_openapi-jwt.json.tpl",
"api_trial_system": "https://raw.githubusercontent.com/pagopa/io-backend/v13.39.1-RELEASE/api_trial_system.yaml",
"api_pagopa_walletv3": "https://raw.githubusercontent.com/pagopa/pagopa-infra/v1.64.0/src/domains/pay-wallet-app/api/io-payment-wallet/v1/_openapi.json.tpl",
"api_pagopa_ecommerce": "https://raw.githubusercontent.com/pagopa/pagopa-infra/v1.64.0/src/domains/ecommerce-app/api/ecommerce-io/v2/_openapi.json.tpl",
"api_pagopa_biz_events": "https://raw.githubusercontent.com/pagopa/pagopa-biz-events-service/0.1.37/openapi/openapi_io_patch.json",
"api_pagopa_platform": "https://raw.githubusercontent.com/pagopa/pagopa-infra/v1.64.0/src/domains/shared-app/api/session-wallet/v1/_openapi.json.tpl",
"api_services": "https://raw.githubusercontent.com/pagopa/io-backend/master/api_services_app_backend.yaml",
"author": "Matteo Boschi",
"license": "MIT",
Expand All @@ -47,6 +49,7 @@
"generate:pagopa-walletv3-definitions": "rimraf generated/definitions/pagopa/walletv3 && mkdir -p generated/definitions/pagopa/walletv3 && gen-api-models --api-spec $npm_package_api_pagopa_walletv3 --out-dir ./generated/definitions/pagopa/walletv3",
"generate:pagopa-ecommerce-definitions": "rimraf generated/definitions/pagopa/ecommerce && mkdir -p generated/definitions/pagopa/ecommerce && gen-api-models --api-spec $npm_package_api_pagopa_ecommerce --out-dir ./generated/definitions/pagopa/ecommerce",
"generate:pagopa-transactions-definitions": "rimraf generated/definitions/pagopa/transactions && mkdir -p generated/definitions/pagopa/transactions && gen-api-models --api-spec $npm_package_api_pagopa_biz_events --out-dir ./generated/definitions/pagopa/transactions",
"generate:pagopa-platform-definitions": "rimraf generated/definitions/pagopa/platform && mkdir -p generated/definitions/pagopa/platform && gen-api-models --api-spec $npm_package_api_pagopa_platform --out-dir ./generated/definitions/pagopa/platform",
"generate:pagopa-api": "rimraf generated/definitions/pagopa && mkdir -p generated/definitions/pagopa && gen-api-models --api-spec $npm_package_api_pagopa --out-dir ./generated/definitions/pagopa",
"generate:cgn-definitions": "rimraf generated/definitions/cgn && mkdir -p generated/definitions/cgn && gen-api-models --api-spec $npm_package_api_cgn --out-dir ./generated/definitions/cgn ",
"generate:cgn-merchants-definitions": "rimraf generated/definitions/cgn/merchants && mkdir -p generated/definitions/cgn/merchants && gen-api-models --api-spec $npm_package_api_cgn_merchants --out-dir ./generated/definitions/cgn/merchants ",
Expand All @@ -57,7 +60,8 @@
"generate:pn-definitions": "rimraf generated/definitions/pn && mkdir -p generated/definitions/pn && gen-api-models --api-spec $npm_package_api_pn --out-dir ./generated/definitions/pn --no-strict --request-types --response-decoders",
"generate:idpay-definitions": "rimraf generated/definitions/idpay && mkdir -p generated/definitions/idpay && gen-api-models --api-spec $npm_package_api_idpay --out-dir ./generated/definitions/idpay --no-strict",
"generate:fast-login-definitions": "rimraf generated/definitions/fast_login && mkdir -p generated/definitions/fast_login && gen-api-models --api-spec $npm_package_api_fast_login --out-dir ./generated/definitions/fast_login --no-strict --request-types --response-decoders",
"generate:pagopa": "npm-run-all generate:pagopa-walletv2-definitions generate:pagopa-privative-configuration-definitions generate:pagopa-cobadge-configuration-definitions generate:pagopa-walletv3-definitions generate:pagopa-ecommerce-definitions generate:pagopa-transactions-definitions",
"generate:trial-system-definitions": "rimraf generated/definitions/trial_systwem && mkdir -p generated/definitions/trial_systwem && gen-api-models --api-spec $npm_package_api_trial_system --out-dir ./generated/definitions/trial_systwem --no-strict --response-decoders --request-types",
"generate:pagopa": "npm-run-all generate:pagopa-walletv2-definitions generate:pagopa-privative-configuration-definitions generate:pagopa-cobadge-configuration-definitions generate:pagopa-walletv3-definitions generate:pagopa-ecommerce-definitions generate:pagopa-transactions-definitions generate:pagopa-platform-definitions",
"generate:services-definitions": "rimraf generated/definitions/services && mkdir -p generated/definitions/services && gen-api-models --api-spec $npm_package_api_services --out-dir ./generated/definitions/services --no-strict",
"generate": "npm-run-all generate:*"
},
Expand Down
16 changes: 16 additions & 0 deletions src/features/payments/persistence/paymentMethods.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,22 @@ export const paymentMethodsDB: ReadonlyArray<PaymentMethodResponse> = [
} as Range
],
methodManagement: PaymentMethodManagementTypeEnum.NOT_ONBOARDABLE
},
{
id: "4",
name: "POSTEPAY",
description: "PostePay",
asset:
"https://github.com/pagopa/io-services-metadata/raw/master/logos/apps/paga-con-postepay.png",
status: PaymentMethodStatusEnum.ENABLED,
paymentTypeCode: "PPAY",
ranges: [
{
min: 0,
max: Math.floor(Math.random() * 5000)
} as Range
],
methodManagement: PaymentMethodManagementTypeEnum.REDIRECT
}
];

Expand Down
1 change: 1 addition & 0 deletions src/features/payments/routers/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import "./payment";
import "./wallets";
import "./transactions";
import "./platform";

export { walletRouter } from "./router";
5 changes: 0 additions & 5 deletions src/features/payments/routers/payment.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,6 @@ import { generateOnboardablePaymentMethods } from "../utils/onboarding";
import { WALLET_PAYMENT_PATH } from "../utils/payment";
import { addPaymentHandler } from "./router";

// eCommerce session token
addPaymentHandler("post", "/sessions", (req, res) =>
res.status(200).json({ sessionToken: ulid() })
);

// Verify single payment notices
addPaymentHandler("get", "/payment-requests/:rpt_id", (req, res) =>
pipe(
Expand Down
7 changes: 7 additions & 0 deletions src/features/payments/routers/platform.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { PAGOPA_PLATFORM_SESSION_TOKEN } from "../utils/platform";
import { addPlatformHandler } from "./router";

// Generates a new pagoPA platform session token
addPlatformHandler("post", "/session", (_, res) =>
res.status(201).json({ token: PAGOPA_PLATFORM_SESSION_TOKEN })
);
15 changes: 12 additions & 3 deletions src/features/payments/routers/router.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ import { addHandler, SupportedMethod } from "../../../payloads/response";

export const walletRouter = Router();

export const PAYMENT_WALLET_PREFIX = "/payment-wallet/v1";
export const ECOMMERCE_PREFIX = "/ecommerce/io/v1";
export const TRANSACTIONS_PREFIX = "/bizevents/bizevents/tx-service-jwt/v1";
export const PAYMENT_WALLET_PREFIX = "/io-payment-wallet/v1";
export const ECOMMERCE_PREFIX = "/ecommerce/io/v2";
export const TRANSACTIONS_PREFIX = "/bizevents/tx-service-jwt/v1";
export const PLATFORM_PREFIX = "/session-wallet/v1";

export const addPaymentWalletPrefix = (path: string) =>
`${PAYMENT_WALLET_PREFIX}${path}`;
Expand All @@ -16,6 +17,8 @@ export const addECommercePrefix = (path: string) =>
export const addTransactionPrefix = (path: string) =>
`${TRANSACTIONS_PREFIX}${path}`;

export const addPlatformPrefix = (path: string) => `${PLATFORM_PREFIX}${path}`;

export const addPaymentWalletHandler = (
method: SupportedMethod,
path: string,
Expand All @@ -35,3 +38,9 @@ export const addTransactionHandler = (
handleRequest: (request: Request, response: Response) => void
) =>
addHandler(walletRouter, method, addTransactionPrefix(path), handleRequest);

export const addPlatformHandler = (
method: SupportedMethod,
path: string,
handleRequest: (request: Request, response: Response) => void
) => addHandler(walletRouter, method, addPlatformPrefix(path), handleRequest);
2 changes: 2 additions & 0 deletions src/features/payments/utils/platform.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export const PAGOPA_PLATFORM_SESSION_TOKEN =
"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJncm91cCI6ImFuZHJvaWQiLCJhdWQiOiJhbmRyb2lkIiwiaXNzIjoiYXBpLnNvY2lhbGRlYWwubmwiLCJtZW1iZXIiOnsibmFtZSI6ImVyaWsifSwiZXhwIjoxNDUyMDgzMjA3LCJpYXQiOjE0NTE5OTY4MDd9.u7ZBa9RB8U4QL8eBk4hmsjg8oFW19AHuen12c8CvLMj0IQUsNqeC-vwNQvAINpgBM0bzDf5cotyrUzf55eXch6mzfKMa-OJXguO-lARp4fc40HaBWbfnEvGe7yEgSESkt6gJNuprG51A6f4AJyNlXG_3u7O4bAMwiPZJc3AAU84_JXC7Vlq1X3FMaLVGmZdxzA4TvYZEiTt_KHoA49UgzeZtNXo3YiDq-GgL1eV8Li01fwy-M--xzbp4cPcY89jkPyYxUIJEoITOULr3zXQwRfYVe6i0P28oyu5ZzAwYCajBb2T98zN7sFJarNmtcxSKNfhCPnMVn3wrpxx4_Kd2Pw";
16 changes: 15 additions & 1 deletion src/features/services/payloads/get-featured-services.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { FeaturedService } from "../../../../generated/definitions/services/Feat
import { FeaturedServices } from "../../../../generated/definitions/services/FeaturedServices";
import { ioDevServerConfig } from "../../../config";
import ServicesDB from "../../../persistence/services";
import { cgnServiceId } from "../../../payloads/services/special/cgn/factoryCGNService";

const featuredServicesSize =
ioDevServerConfig.features.service.featuredServicesSize;
Expand Down Expand Up @@ -52,7 +53,20 @@ export const getFeaturedServicesResponsePayload = (): FeaturedServices => {
featuredServicesSize
);

// CGN Service
const cgnSpecialService = featuredSpecialServices.find(
service => service.id === cgnServiceId
);

// eslint-disable-next-line @typescript-eslint/no-unused-vars
const [first, ...rest] = featuredServices;

return {
services: featuredServices
services: cgnSpecialService
? [
cgnSpecialService,
...rest.filter(service => service.id !== cgnSpecialService.id)
]
: featuredServices
};
};
56 changes: 56 additions & 0 deletions src/features/trialSystem/routers/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/* eslint-disable functional/immutable-data */
import { Router } from "express";
import { addApiV1Prefix } from "../../../utils/strings";
import { addHandler } from "../../../payloads/response";
import { Subscription } from "../../../../generated/definitions/trial_systwem/Subscription";
import { TrialId } from "../../../../generated/definitions/trial_systwem/TrialId";
import { SubscriptionStateEnum } from "../../../../generated/definitions/trial_systwem/SubscriptionState";

export const trialSystemRouter = Router();

const addPrefix = (path: string) => addApiV1Prefix(`/trials${path}`);

const trials: Record<TrialId, Subscription> = {};

addHandler(
trialSystemRouter,
"post",
addPrefix("/:trialId/subscriptions"),
(req, res) => {
const currentTrial = trials[req.params.trialId as TrialId];

if (currentTrial) {
return res.status(200).json({
...currentTrial,
state: SubscriptionStateEnum.SUBSCRIBED
});
}

trials[req.params.trialId as TrialId] = {
trialId: req.params.trialId as TrialId,
state: SubscriptionStateEnum.SUBSCRIBED,
createdAt: new Date()
};

res.status(201).json({
trialId: req.params.trialId as TrialId,
state: SubscriptionStateEnum.SUBSCRIBED,
createdAt: new Date()
} as Subscription);
}
);

addHandler(
trialSystemRouter,
"get",
addPrefix("/:trialId/subscriptions"),
(req, res) => {
const currentTrial = trials[req.params.trialId as TrialId];

if (currentTrial) {
return res.status(200).json(currentTrial);
}

res.sendStatus(404);
}
);
4 changes: 3 additions & 1 deletion src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import { delayer } from "./utils/delay_middleware";
import { walletRouter as newWalletRouter } from "./features/payments";
import { serviceRouter as newServiceRouter } from "./features/services";
import { dashboardHomeRouter } from "./routers/configHomeDashboard/configHomeDashboard";
import { trialSystemRouter } from "./features/trialSystem/routers";

// create express server
const app: Application = express();
Expand Down Expand Up @@ -82,7 +83,8 @@ app.use(fastLoginMiddleware);
lollipopRouter,
fastLoginRouter,
newWalletRouter,
newServiceRouter
newServiceRouter,
trialSystemRouter
].forEach(r => app.use(r));

export default app;

0 comments on commit 3db1a52

Please sign in to comment.