strapi-plugin-payone-provider 4.6.10 → 4.6.12

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 (68) hide show
  1. package/README.md +64 -0
  2. package/admin/src/pages/App/components/AppHeader.jsx +3 -2
  3. package/admin/src/pages/App/components/AppTabs.jsx +34 -88
  4. package/admin/src/pages/App/components/DocsPanel.jsx +1726 -1726
  5. package/admin/src/pages/App/components/GooglePaybutton.jsx +300 -300
  6. package/admin/src/pages/App/components/StatusBadge.jsx +1 -1
  7. package/admin/src/pages/App/components/common/InfoTooltip.jsx +16 -0
  8. package/admin/src/pages/App/components/{ApplePayConfig.jsx → configuration/ApplePayConfig.jsx} +191 -62
  9. package/admin/src/pages/App/components/{ApplePayConfigPanel.jsx → configuration/ApplePayConfigPanel.jsx} +71 -70
  10. package/admin/src/pages/App/components/configuration/ConfigurationFields.jsx +408 -0
  11. package/admin/src/pages/App/components/configuration/ConfigurationPanel.jsx +67 -0
  12. package/admin/src/pages/App/components/{GooglePayConfig.jsx → configuration/GooglePayConfig.jsx} +254 -254
  13. package/admin/src/pages/App/components/{GooglePayConfigPanel.jsx → configuration/GooglePayConfigPanel.jsx} +82 -82
  14. package/admin/src/pages/App/components/configuration/TestConnection.jsx +129 -0
  15. package/admin/src/pages/App/components/paymentActions/ApplePayPanel.jsx +137 -95
  16. package/admin/src/pages/App/components/paymentActions/CaptureForm.jsx +119 -14
  17. package/admin/src/pages/App/components/paymentActions/CardDetailsInput.jsx +85 -24
  18. package/admin/src/pages/App/components/paymentActions/PaymentActionsPanel.jsx +361 -0
  19. package/admin/src/pages/App/components/paymentActions/PaymentMethodSelector.jsx +22 -4
  20. package/admin/src/pages/App/components/paymentActions/RefundForm.jsx +91 -20
  21. package/admin/src/pages/App/components/paymentActions/authorization/AuthorizationForm.jsx +157 -0
  22. package/admin/src/pages/App/components/paymentActions/authorization/AuthorizationFormFields.jsx +308 -0
  23. package/admin/src/pages/App/components/paymentActions/authorization/AuthorizationFormHeader.jsx +27 -0
  24. package/admin/src/pages/App/components/paymentActions/authorization/AuthorizationPaymentButtons.jsx +93 -0
  25. package/admin/src/pages/App/components/paymentActions/preauthorization/PreauthorizationForm.jsx +134 -0
  26. package/admin/src/pages/App/components/paymentActions/preauthorization/PreauthorizationFormFields.jsx +295 -0
  27. package/admin/src/pages/App/components/paymentActions/preauthorization/PreauthorizationFormHeader.jsx +27 -0
  28. package/admin/src/pages/App/components/paymentActions/preauthorization/PreauthorizationPaymentButtons.jsx +53 -0
  29. package/admin/src/pages/App/components/transaction-history/FiltersPanel.jsx +182 -0
  30. package/admin/src/pages/App/components/transaction-history/HistoryPanel.jsx +49 -0
  31. package/admin/src/pages/App/components/transaction-history/TransactionTable.jsx +199 -0
  32. package/admin/src/pages/App/components/transaction-history/TransactionTablePagination.jsx +28 -0
  33. package/admin/src/pages/App/components/transaction-history/details/TransactionDetails.jsx +155 -0
  34. package/admin/src/pages/App/index.jsx +5 -29
  35. package/admin/src/pages/hooks/usePaymentActions.js +87 -11
  36. package/admin/src/pages/hooks/useSettings.js +64 -22
  37. package/admin/src/pages/hooks/useTransactionHistory.js +121 -85
  38. package/admin/src/pages/utils/api.js +31 -3
  39. package/admin/src/pages/utils/countryLanguageUtils.js +236 -0
  40. package/admin/src/pages/utils/transactionTableUtils.js +60 -0
  41. package/package.json +2 -2
  42. package/server/bootstrap.js +6 -6
  43. package/server/content-types/index.js +5 -0
  44. package/server/content-types/transactions/index.js +5 -0
  45. package/server/content-types/transactions/schema.json +87 -0
  46. package/server/controllers/payone.js +29 -3
  47. package/server/index.js +2 -1
  48. package/server/policies/index.js +2 -1
  49. package/server/policies/is-payone-notification.js +31 -0
  50. package/server/routes/index.js +10 -0
  51. package/server/services/applePayService.js +0 -2
  52. package/server/services/payone.js +16 -4
  53. package/server/services/settingsService.js +8 -2
  54. package/server/services/testConnectionService.js +11 -72
  55. package/server/services/transactionService.js +147 -154
  56. package/server/services/transactionStatusService.js +63 -0
  57. package/server/utils/sanitize.js +41 -0
  58. package/admin/src/pages/App/components/ConfigurationPanel.jsx +0 -517
  59. package/admin/src/pages/App/components/CustomerInfoPopover.jsx +0 -147
  60. package/admin/src/pages/App/components/HistoryPanel.jsx +0 -94
  61. package/admin/src/pages/App/components/PaymentActionsPanel.jsx +0 -280
  62. package/admin/src/pages/App/components/RawDataPopover.jsx +0 -113
  63. package/admin/src/pages/App/components/TransactionHistoryItem.jsx +0 -522
  64. package/admin/src/pages/App/components/TransactionHistoryTable/TransactionHistoryTableFilters.jsx +0 -113
  65. package/admin/src/pages/App/components/TransactionHistoryTable/TransactionHistoryTablePagination.jsx +0 -180
  66. package/admin/src/pages/App/components/TransactionHistoryTable/index.jsx +0 -225
  67. package/admin/src/pages/App/components/paymentActions/AuthorizationForm.jsx +0 -197
  68. package/admin/src/pages/App/components/paymentActions/PreauthorizationForm.jsx +0 -142
@@ -1,82 +1,82 @@
1
- import React, { useState, useEffect } from "react";
2
- import {
3
- Box,
4
- Card,
5
- CardBody,
6
- Flex,
7
- Typography,
8
- Button
9
- } from "@strapi/design-system";
10
- import { Check } from "@strapi/icons";
11
- import GooglePayConfig from "./GooglePayConfig";
12
-
13
- const GooglePayConfigPanel = ({
14
- settings,
15
- onInputChange,
16
- isSaving,
17
- onSave,
18
- onBack
19
- }) => {
20
- const [googlePayConfig, setGooglePayConfig] = useState(settings?.googlePayConfig || {});
21
-
22
- useEffect(() => {
23
- setGooglePayConfig(settings?.googlePayConfig || {});
24
- }, [settings?.googlePayConfig]);
25
-
26
- return (
27
- <Box
28
- className="payment-container"
29
- paddingTop={8}
30
- paddingBottom={8}
31
- paddingLeft={8}
32
- paddingRight={8}
33
- >
34
- <Flex direction="column" alignItems="stretch" gap={8}>
35
- <Box>
36
- <Typography variant="beta" as="h2" fontWeight="bold" className="payment-title" style={{ fontSize: '20px', marginBottom: '4px' }}>
37
- Google Pay Configuration
38
- </Typography>
39
- <Typography variant="pi" textColor="neutral600" marginTop={2} className="payment-subtitle" style={{ fontSize: '14px' }}>
40
- Configure Google Pay settings for your payment gateway
41
- </Typography>
42
- </Box>
43
-
44
- <Box>
45
- <Card className="payment-card">
46
- <CardBody padding={6}>
47
- <GooglePayConfig
48
- config={googlePayConfig}
49
- onConfigChange={(newConfig) => {
50
- setGooglePayConfig(newConfig);
51
- onInputChange("googlePayConfig", newConfig);
52
- }}
53
- settings={settings}
54
- />
55
- </CardBody>
56
- </Card>
57
- </Box>
58
-
59
- <Box paddingTop={4}>
60
- <Flex direction="row" gap={4} alignItems="center">
61
- <Button
62
- loading={isSaving}
63
- onClick={onSave}
64
- startIcon={<Check />}
65
- size="L"
66
- variant="default"
67
- className="payment-button payment-button-success"
68
- >
69
- Save Google Pay Configuration
70
- </Button>
71
- <Typography variant="sigma" textColor="neutral600">
72
- Note: Google Pay configuration is used for Google Pay payment requests. Make sure to configure the correct card networks, authentication methods, and merchant information for your region.
73
- </Typography>
74
- </Flex>
75
- </Box>
76
- </Flex>
77
- </Box>
78
- );
79
- };
80
-
81
- export default GooglePayConfigPanel;
82
-
1
+ import React, { useState, useEffect } from "react";
2
+ import {
3
+ Box,
4
+ Card,
5
+ CardBody,
6
+ Flex,
7
+ Typography,
8
+ Button
9
+ } from "@strapi/design-system";
10
+ import { Check } from "@strapi/icons";
11
+ import GooglePayConfig from "./GooglePayConfig";
12
+
13
+ const GooglePayConfigPanel = ({
14
+ settings,
15
+ onInputChange,
16
+ isSaving,
17
+ onSave,
18
+ onBack
19
+ }) => {
20
+ const [googlePayConfig, setGooglePayConfig] = useState(settings?.googlePayConfig || {});
21
+
22
+ useEffect(() => {
23
+ setGooglePayConfig(settings?.googlePayConfig || {});
24
+ }, [settings?.googlePayConfig]);
25
+
26
+ return (
27
+ <Box
28
+ className="payment-container"
29
+ paddingTop={8}
30
+ paddingBottom={8}
31
+ paddingLeft={8}
32
+ paddingRight={8}
33
+ >
34
+ <Flex direction="column" alignItems="stretch" gap={8}>
35
+ <Box>
36
+ <Typography variant="beta" as="h2" fontWeight="bold" className="payment-title" style={{ fontSize: '20px', marginBottom: '4px' }}>
37
+ Google Pay Configuration
38
+ </Typography>
39
+ <Typography variant="pi" textColor="neutral600" marginTop={2} className="payment-subtitle" style={{ fontSize: '14px' }}>
40
+ Configure Google Pay settings for your payment gateway
41
+ </Typography>
42
+ </Box>
43
+
44
+ <Box>
45
+ <Card className="payment-card">
46
+ <CardBody padding={6}>
47
+ <GooglePayConfig
48
+ config={googlePayConfig}
49
+ onConfigChange={(newConfig) => {
50
+ setGooglePayConfig(newConfig);
51
+ onInputChange("googlePayConfig", newConfig);
52
+ }}
53
+ settings={settings}
54
+ />
55
+ </CardBody>
56
+ </Card>
57
+ </Box>
58
+
59
+ <Box paddingTop={4}>
60
+ <Flex direction="row" gap={4} alignItems="center">
61
+ <Button
62
+ loading={isSaving}
63
+ onClick={onSave}
64
+ startIcon={<Check />}
65
+ size="L"
66
+ variant="default"
67
+ className="payment-button payment-button-success"
68
+ >
69
+ Save Google Pay Configuration
70
+ </Button>
71
+ <Typography variant="sigma" textColor="neutral600">
72
+ Note: Google Pay configuration is used for Google Pay payment requests. Make sure to configure the correct card networks, authentication methods, and merchant information for your region.
73
+ </Typography>
74
+ </Flex>
75
+ </Box>
76
+ </Flex>
77
+ </Box>
78
+ );
79
+ };
80
+
81
+ export default GooglePayConfigPanel;
82
+
@@ -0,0 +1,129 @@
1
+ import React from "react";
2
+ import {
3
+ Box,
4
+ Button,
5
+ Card,
6
+ CardBody,
7
+ Flex,
8
+ Typography,
9
+ } from "@strapi/design-system";
10
+ import { Play } from "@strapi/icons";
11
+
12
+ const TestConnection = ({
13
+ settings,
14
+ isTesting,
15
+ testResult,
16
+ onTestConnection,
17
+ }) => {
18
+ const mode = (settings?.mode || "test").toLowerCase();
19
+
20
+ return (
21
+ <Card padding={8}>
22
+ <CardBody>
23
+ <Flex direction="column" alignItems="stretch" gap={6} paddingTop={6}>
24
+ <Box>
25
+ <Typography
26
+ variant="delta"
27
+ as="h3"
28
+ fontWeight="bold"
29
+ style={{ marginBottom: "16px" }}
30
+ >
31
+ Test Connection
32
+ </Typography>
33
+
34
+ {mode === "test" ? (
35
+ <Typography variant="pi" textColor="neutral600">
36
+ Verify your Payone configuration by testing the API connection
37
+ </Typography>
38
+ ) : (
39
+ <Typography
40
+ variant="pi"
41
+ textColor="neutral600"
42
+ style={{ marginTop: "8px" }}
43
+ >
44
+ Test Connection is disabled in live mode.
45
+ </Typography>
46
+ )}
47
+ </Box>
48
+
49
+ <Button
50
+ variant="default"
51
+ onClick={onTestConnection}
52
+ loading={isTesting}
53
+ startIcon={<Play />}
54
+ className="payment-button payment-button-success"
55
+ disabled={mode === "live"}
56
+ style={{ maxWidth: "200px" }}
57
+ >
58
+ {isTesting ? "Testing Connection..." : "Test Connection"}
59
+ </Button>
60
+
61
+ {testResult && (
62
+ <Flex direction={"column"} alignItems={"stretch"} gap={2}>
63
+ <Typography
64
+ variant="pi"
65
+ fontWeight="medium"
66
+ style={{ marginBottom: "16px" }}
67
+ >
68
+ {testResult.message}
69
+ </Typography>
70
+ {testResult.details && Boolean(testResult.success) ? (
71
+ <Box paddingTop={3}>
72
+ <Card>
73
+ <CardBody padding={4}>
74
+ <Flex direction="column" alignItems="stretch" gap={2}>
75
+ {testResult.details.mode && (
76
+ <Typography variant="pi" textColor="neutral600">
77
+ <strong>Mode:</strong> {testResult.details.mode}
78
+ </Typography>
79
+ )}
80
+ {testResult.details.aid && (
81
+ <Typography variant="pi" textColor="neutral600">
82
+ <strong>AID:</strong> {testResult.details.aid}
83
+ </Typography>
84
+ )}
85
+ {testResult.details.portalid && (
86
+ <Typography variant="pi" textColor="neutral600">
87
+ <strong>Portal ID:</strong>{" "}
88
+ {testResult.details.portalid}
89
+ </Typography>
90
+ )}
91
+ </Flex>
92
+ </CardBody>
93
+ </Card>
94
+ </Box>
95
+ ) : (
96
+ <Card>
97
+ <CardBody padding={4}>
98
+ <Flex direction="column" alignItems="stretch" gap={2}>
99
+ {testResult.error && (
100
+ <Typography variant="pi" textColor="neutral600">
101
+ <strong>Error Code:</strong>{" "}
102
+ {testResult.error.ErrorCode}
103
+ </Typography>
104
+ )}
105
+ {testResult.error.ErrorMessage && (
106
+ <Typography variant="pi" textColor="neutral600">
107
+ <strong>Error Message:</strong>{" "}
108
+ {testResult.error.ErrorMessage}
109
+ </Typography>
110
+ )}
111
+ {testResult.error.CustomerMessage && (
112
+ <Typography variant="pi" textColor="neutral600">
113
+ <strong>Customer Message:</strong>{" "}
114
+ {testResult.error.CustomerMessage}
115
+ </Typography>
116
+ )}
117
+ </Flex>
118
+ </CardBody>
119
+ </Card>
120
+ )}
121
+ </Flex>
122
+ )}
123
+ </Flex>
124
+ </CardBody>
125
+ </Card>
126
+ );
127
+ };
128
+
129
+ export default TestConnection;
@@ -1,95 +1,137 @@
1
- import React from "react";
2
- import { Box, Typography } from "@strapi/design-system";
3
- import PaymentMethodSelector from "./PaymentMethodSelector";
4
- import AuthorizationForm from "./AuthorizationForm";
5
-
6
- const ApplePayOnlyPanel = ({
7
- paymentAmount,
8
- setPaymentAmount,
9
- authReference,
10
- setAuthReference,
11
- isProcessingPayment,
12
- onAuthorization,
13
- paymentMethod,
14
- settings,
15
- setGooglePayToken,
16
- setPaymentMethod,
17
- captureMode,
18
- setCaptureMode,
19
- onNavigateToConfig,
20
- isLiveMode,
21
- setCardcvc2,
22
- cardtype,
23
- setCardtype,
24
- cardpan,
25
- setCardpan,
26
- cardexpiredate,
27
- setCardexpiredate,
28
- cardcvc2,
29
- applePayToken,
30
- setApplePayToken,
31
- }) => {
32
- return (
33
- <Box
34
- style={{
35
- display: "flex",
36
- flexDirection: "column",
37
- alignItems: "flex-start",
38
- gap: "16px",
39
- marginTop: "24px",
40
- width: "100%",
41
- }}
42
- >
43
- <Typography
44
- variant="pi"
45
- textColor="warning600"
46
- style={{
47
- fontSize: "14px",
48
- marginTop: "12px",
49
- marginBottom: "12px",
50
- fontWeight: "bold",
51
- }}
52
- >
53
- ⚠️ Apple Pay can only be tested on a production domain with HTTPS and
54
- Live mode. Testing in Strapi admin panel is not supported. Please test
55
- Apple Pay on your production website.
56
- </Typography>
57
-
58
- <PaymentMethodSelector
59
- paymentMethod={paymentMethod}
60
- setPaymentMethod={setPaymentMethod}
61
- captureMode={captureMode}
62
- setCaptureMode={setCaptureMode}
63
- onNavigateToConfig={onNavigateToConfig}
64
- isLiveMode={isLiveMode}
65
- />
66
-
67
- <hr className="payment-divider" />
68
-
69
- <AuthorizationForm
70
- paymentAmount={paymentAmount}
71
- setPaymentAmount={setPaymentAmount}
72
- authReference={authReference}
73
- setAuthReference={setAuthReference}
74
- isProcessingPayment={isProcessingPayment}
75
- onAuthorization={onAuthorization}
76
- paymentMethod={paymentMethod}
77
- settings={settings}
78
- setGooglePayToken={setGooglePayToken}
79
- applePayToken={applePayToken}
80
- setApplePayToken={setApplePayToken}
81
- cardtype={cardtype}
82
- setCardtype={setCardtype}
83
- cardpan={cardpan}
84
- setCardpan={setCardpan}
85
- cardexpiredate={cardexpiredate}
86
- setCardexpiredate={setCardexpiredate}
87
- cardcvc2={cardcvc2}
88
- setCardcvc2={setCardcvc2}
89
- isLiveMode={isLiveMode}
90
- />
91
- </Box>
92
- );
93
- };
94
-
95
- export default ApplePayOnlyPanel;
1
+ import { Box, Typography } from "@strapi/design-system";
2
+ import PaymentMethodSelector from "./PaymentMethodSelector";
3
+ import AuthorizationForm from "./authorization/AuthorizationForm";
4
+
5
+ const ApplePayOnlyPanel = ({
6
+ paymentAmount,
7
+ setPaymentAmount,
8
+ authReference,
9
+ setAuthReference,
10
+ isProcessingPayment,
11
+ onAuthorization,
12
+ paymentMethod,
13
+ settings,
14
+ setGooglePayToken,
15
+ setPaymentMethod,
16
+ captureMode,
17
+ setCaptureMode,
18
+ onNavigateToConfig,
19
+ isLiveMode,
20
+ setCardcvc2,
21
+ cardtype,
22
+ setCardtype,
23
+ cardpan,
24
+ setCardpan,
25
+ cardexpiredate,
26
+ setCardexpiredate,
27
+ cardcvc2,
28
+ applePayToken,
29
+ setApplePayToken,
30
+ firstname,
31
+ setFirstname,
32
+ lastname,
33
+ setLastname,
34
+ email,
35
+ setEmail,
36
+ telephonenumber,
37
+ setTelephonenumber,
38
+ gender,
39
+ setGender,
40
+ salutation,
41
+ setSalutation,
42
+ country,
43
+ setCountry,
44
+ currency,
45
+ setCurrency,
46
+ city,
47
+ setCity,
48
+ street,
49
+ setStreet,
50
+ zip,
51
+ setZip,
52
+ }) => {
53
+ return (
54
+ <Box
55
+ style={{
56
+ display: "flex",
57
+ flexDirection: "column",
58
+ alignItems: "flex-start",
59
+ gap: "16px",
60
+ marginTop: "24px",
61
+ width: "100%",
62
+ }}
63
+ >
64
+ <Typography
65
+ variant="pi"
66
+ textColor="warning600"
67
+ style={{
68
+ fontSize: "14px",
69
+ marginTop: "12px",
70
+ marginBottom: "12px",
71
+ fontWeight: "bold",
72
+ }}
73
+ >
74
+ ⚠️ Apple Pay can only be tested on a production domain with HTTPS and
75
+ Live mode. Testing in Strapi admin panel is not supported. Please test
76
+ Apple Pay on your production website.
77
+ </Typography>
78
+
79
+ <PaymentMethodSelector
80
+ paymentMethod={paymentMethod}
81
+ setPaymentMethod={setPaymentMethod}
82
+ captureMode={captureMode}
83
+ setCaptureMode={setCaptureMode}
84
+ onNavigateToConfig={onNavigateToConfig}
85
+ isLiveMode={isLiveMode}
86
+ />
87
+
88
+ <hr className="payment-divider" />
89
+
90
+ <AuthorizationForm
91
+ paymentAmount={paymentAmount}
92
+ setPaymentAmount={setPaymentAmount}
93
+ authReference={authReference}
94
+ setAuthReference={setAuthReference}
95
+ isProcessingPayment={isProcessingPayment}
96
+ onAuthorization={onAuthorization}
97
+ paymentMethod={paymentMethod}
98
+ settings={settings}
99
+ setGooglePayToken={setGooglePayToken}
100
+ applePayToken={applePayToken}
101
+ setApplePayToken={setApplePayToken}
102
+ cardtype={cardtype}
103
+ setCardtype={setCardtype}
104
+ cardpan={cardpan}
105
+ setCardpan={setCardpan}
106
+ cardexpiredate={cardexpiredate}
107
+ setCardexpiredate={setCardexpiredate}
108
+ cardcvc2={cardcvc2}
109
+ setCardcvc2={setCardcvc2}
110
+ firstname={firstname}
111
+ setFirstname={setFirstname}
112
+ lastname={lastname}
113
+ setLastname={setLastname}
114
+ email={email}
115
+ setEmail={setEmail}
116
+ telephonenumber={telephonenumber}
117
+ setTelephonenumber={setTelephonenumber}
118
+ gender={gender}
119
+ setGender={setGender}
120
+ salutation={salutation}
121
+ setSalutation={setSalutation}
122
+ country={country}
123
+ setCountry={setCountry}
124
+ currency={currency}
125
+ setCurrency={setCurrency}
126
+ city={city}
127
+ setCity={setCity}
128
+ street={street}
129
+ setStreet={setStreet}
130
+ zip={zip}
131
+ setZip={setZip}
132
+ />
133
+ </Box>
134
+ );
135
+ };
136
+
137
+ export default ApplePayOnlyPanel;