strapi-plugin-payone-provider 4.6.9 → 4.6.11

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 (61) 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/common/InfoTooltip.jsx +16 -0
  7. package/admin/src/pages/App/components/{ApplePayConfig.jsx → configuration/ApplePayConfig.jsx} +191 -62
  8. package/admin/src/pages/App/components/{ApplePayConfigPanel.jsx → configuration/ApplePayConfigPanel.jsx} +71 -70
  9. package/admin/src/pages/App/components/configuration/ConfigurationFields.jsx +408 -0
  10. package/admin/src/pages/App/components/configuration/ConfigurationPanel.jsx +67 -0
  11. package/admin/src/pages/App/components/{GooglePayConfig.jsx → configuration/GooglePayConfig.jsx} +254 -254
  12. package/admin/src/pages/App/components/{GooglePayConfigPanel.jsx → configuration/GooglePayConfigPanel.jsx} +82 -82
  13. package/admin/src/pages/App/components/configuration/TestConnection.jsx +129 -0
  14. package/admin/src/pages/App/components/paymentActions/ApplePayPanel.jsx +137 -95
  15. package/admin/src/pages/App/components/paymentActions/CaptureForm.jsx +119 -14
  16. package/admin/src/pages/App/components/paymentActions/CardDetailsInput.jsx +85 -24
  17. package/admin/src/pages/App/components/paymentActions/PaymentActionsPanel.jsx +361 -0
  18. package/admin/src/pages/App/components/paymentActions/PaymentMethodSelector.jsx +22 -4
  19. package/admin/src/pages/App/components/paymentActions/RefundForm.jsx +91 -20
  20. package/admin/src/pages/App/components/paymentActions/authorization/AuthorizationForm.jsx +157 -0
  21. package/admin/src/pages/App/components/paymentActions/authorization/AuthorizationFormFields.jsx +308 -0
  22. package/admin/src/pages/App/components/paymentActions/authorization/AuthorizationFormHeader.jsx +27 -0
  23. package/admin/src/pages/App/components/paymentActions/authorization/AuthorizationPaymentButtons.jsx +93 -0
  24. package/admin/src/pages/App/components/paymentActions/preauthorization/PreauthorizationForm.jsx +134 -0
  25. package/admin/src/pages/App/components/paymentActions/preauthorization/PreauthorizationFormFields.jsx +295 -0
  26. package/admin/src/pages/App/components/paymentActions/preauthorization/PreauthorizationFormHeader.jsx +27 -0
  27. package/admin/src/pages/App/components/paymentActions/preauthorization/PreauthorizationPaymentButtons.jsx +53 -0
  28. package/admin/src/pages/App/components/transaction-history/FiltersPanel.jsx +182 -0
  29. package/admin/src/pages/App/components/transaction-history/HistoryPanel.jsx +49 -0
  30. package/admin/src/pages/App/components/transaction-history/TransactionTable.jsx +169 -0
  31. package/admin/src/pages/App/components/transaction-history/TransactionTablePagination.jsx +28 -0
  32. package/admin/src/pages/App/components/transaction-history/details/TransactionDetails.jsx +155 -0
  33. package/admin/src/pages/App/index.jsx +5 -29
  34. package/admin/src/pages/hooks/usePaymentActions.js +87 -11
  35. package/admin/src/pages/hooks/useSettings.js +64 -22
  36. package/admin/src/pages/hooks/useTransactionHistory.js +100 -88
  37. package/admin/src/pages/utils/api.js +31 -3
  38. package/admin/src/pages/utils/countryLanguageUtils.js +236 -0
  39. package/admin/src/pages/utils/transactionTableUtils.js +60 -0
  40. package/package.json +1 -1
  41. package/server/bootstrap.js +6 -6
  42. package/server/controllers/payone.js +27 -3
  43. package/server/policies/index.js +2 -1
  44. package/server/policies/is-payone-notification.js +31 -0
  45. package/server/routes/index.js +10 -0
  46. package/server/services/payone.js +11 -4
  47. package/server/services/settingsService.js +8 -2
  48. package/server/services/testConnectionService.js +11 -72
  49. package/server/services/transactionService.js +58 -78
  50. package/server/services/transactionStatusService.js +87 -0
  51. package/admin/src/pages/App/components/ConfigurationPanel.jsx +0 -517
  52. package/admin/src/pages/App/components/CustomerInfoPopover.jsx +0 -147
  53. package/admin/src/pages/App/components/HistoryPanel.jsx +0 -94
  54. package/admin/src/pages/App/components/PaymentActionsPanel.jsx +0 -280
  55. package/admin/src/pages/App/components/RawDataPopover.jsx +0 -113
  56. package/admin/src/pages/App/components/TransactionHistoryItem.jsx +0 -522
  57. package/admin/src/pages/App/components/TransactionHistoryTable/TransactionHistoryTableFilters.jsx +0 -113
  58. package/admin/src/pages/App/components/TransactionHistoryTable/TransactionHistoryTablePagination.jsx +0 -180
  59. package/admin/src/pages/App/components/TransactionHistoryTable/index.jsx +0 -225
  60. package/admin/src/pages/App/components/paymentActions/AuthorizationForm.jsx +0 -197
  61. 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;