@akinon/pz-gpay 1.96.0-snapshot-ZERO-3620-20250915165755 → 1.97.0-snapshot-ZERO-3634-20250918132143

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.
package/CHANGELOG.md CHANGED
@@ -1,62 +1,8 @@
1
1
  # @akinon/pz-gpay
2
2
 
3
- ## 1.96.0-snapshot-ZERO-3620-20250915165755
3
+ ## 1.97.0-snapshot-ZERO-3634-20250918132143
4
4
 
5
- ### Minor Changes
6
-
7
- - 4c23847: ZERO-3623 :Enhance GPay integration: add loading state to custom UI rendering and error handling
8
- - d8be48fb: ZERO-3422: Update fetch method to use dynamic request method in wallet complete redirection middleware
9
- - 16aff543: ZERO-3431: Add test script for redirect utility in package.json
10
- - 64699d3ff: ZERO-2761: Fix invalid import for plugin module
11
- - e974d8e8: ZERO-3406: Fix rc build
12
- - 7eb51ca9: ZERO-3424 :Update package versions
13
- - 7727ae55: ZERO-3073: Refactor basket page to use server-side data fetching and simplify component structure
14
- - 8b1d24eb: ZERO-3422: Update fetch method to use dynamic request method in wallet complete redirection middleware
15
- - 2e436c13: ZERO-3389 :Update README.md for GPay component: enhance props documentation, add custom UI usage examples
16
- - 33377cfd: ZERO-3267: Refactor import statement for ROUTES in error-page component
17
-
18
- ## 1.96.0-rc.61
19
-
20
- ### Minor Changes
21
-
22
- - 4c23847: ZERO-3623 :Enhance GPay integration: add loading state to custom UI rendering and error handling
23
- - d8be48fb: ZERO-3422: Update fetch method to use dynamic request method in wallet complete redirection middleware
24
- - 16aff543: ZERO-3431: Add test script for redirect utility in package.json
25
- - 64699d3ff: ZERO-2761: Fix invalid import for plugin module
26
- - e974d8e8: ZERO-3406: Fix rc build
27
- - 7eb51ca9: ZERO-3424 :Update package versions
28
- - 7727ae55: ZERO-3073: Refactor basket page to use server-side data fetching and simplify component structure
29
- - 8b1d24eb: ZERO-3422: Update fetch method to use dynamic request method in wallet complete redirection middleware
30
- - 2e436c13: ZERO-3389 :Update README.md for GPay component: enhance props documentation, add custom UI usage examples
31
- - 33377cfd: ZERO-3267: Refactor import statement for ROUTES in error-page component
32
-
33
- ## 1.96.0-rc.60
34
-
35
- ## 1.96.0-rc.59
36
-
37
- ### Minor Changes
38
-
39
- - 4c23847: ZERO-3623 :Enhance GPay integration: add loading state to custom UI rendering and error handling
40
-
41
- ## 1.96.0-rc.58
42
-
43
- ## 1.96.0-rc.57
44
-
45
- ## 1.96.0-rc.56
46
-
47
- ## 1.96.0-rc.55
48
-
49
- ### Minor Changes
50
-
51
- - d8be48fb: ZERO-3422: Update fetch method to use dynamic request method in wallet complete redirection middleware
52
- - 16aff543: ZERO-3431: Add test script for redirect utility in package.json
53
- - 64699d3ff: ZERO-2761: Fix invalid import for plugin module
54
- - e974d8e8: ZERO-3406: Fix rc build
55
- - 7eb51ca9: ZERO-3424 :Update package versions
56
- - 7727ae55: ZERO-3073: Refactor basket page to use server-side data fetching and simplify component structure
57
- - 8b1d24eb: ZERO-3422: Update fetch method to use dynamic request method in wallet complete redirection middleware
58
- - 2e436c13: ZERO-3389 :Update README.md for GPay component: enhance props documentation, add custom UI usage examples
59
- - 33377cfd: ZERO-3267: Refactor import statement for ROUTES in error-page component
5
+ ## 1.96.0
60
6
 
61
7
  ## 1.95.0
62
8
 
@@ -68,8 +14,6 @@
68
14
 
69
15
  ## 1.91.0
70
16
 
71
- > > > > > > > origin/ZERO-3418
72
-
73
17
  ## 1.90.0
74
18
 
75
19
  ### Minor Changes
@@ -81,46 +25,6 @@
81
25
  ### Minor Changes
82
26
 
83
27
  - 57a6184: ZERO-3332 :Add data-testid attribute to GPay payment button for testing
84
- - 64699d3f: ZERO-2761: Fix invalid import for plugin module
85
- - 7727ae55: ZERO-3073: Refactor basket page to use server-side data fetching and simplify component structure
86
- - 33377cfd: ZERO-3267: Refactor import statement for ROUTES in error-page component
87
-
88
- ## 1.89.0-rc.9
89
-
90
- ### Minor Changes
91
-
92
- - 57a6184: ZERO-3332 :Add data-testid attribute to GPay payment button for testing
93
- - 64699d3f: ZERO-2761: Fix invalid import for plugin module
94
- - 7727ae55: ZERO-3073: Refactor basket page to use server-side data fetching and simplify component structure
95
- - 33377cfd: ZERO-3267: Refactor import statement for ROUTES in error-page component
96
-
97
- ## 1.89.0-rc.8
98
-
99
- ## 1.89.0-rc.7
100
-
101
- ## 1.89.0-rc.6
102
-
103
- ## 1.89.0-rc.5
104
-
105
- ## 1.89.0-rc.4
106
-
107
- ## 1.89.0-rc.3
108
-
109
- ## 1.89.0-rc.2
110
-
111
- ### Minor Changes
112
-
113
- - 57a6184: ZERO-3332 :Add data-testid attribute to GPay payment button for testing
114
-
115
- ## 1.89.0-rc.1
116
-
117
- ## 1.89.0-rc.0
118
-
119
- ### Minor Changes
120
-
121
- - 64699d3f: ZERO-2761: Fix invalid import for plugin module
122
- - 7727ae55: ZERO-3073: Refactor basket page to use server-side data fetching and simplify component structure
123
- - 33377cf: ZERO-3267: Refactor import statement for ROUTES in error-page component
124
28
 
125
29
  ## 1.88.0
126
30
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akinon/pz-gpay",
3
- "version": "1.96.0-snapshot-ZERO-3620-20250915165755",
3
+ "version": "1.97.0-snapshot-ZERO-3634-20250918132143",
4
4
  "license": "MIT",
5
5
  "main": "src/index.tsx",
6
6
  "peerDependencies": {
package/readme.md CHANGED
@@ -10,86 +10,9 @@ npx @akinon/projectzero@latest --plugins
10
10
 
11
11
  ```
12
12
 
13
- ## GPAY
13
+ ### Example Usage
14
14
 
15
- The `GPayOption` component provides GarantiPay (GPay) payment integration within the checkout process. It supports both default UI rendering and a fully customized UI via the `customUIRender` prop.
16
-
17
- ### Props
18
-
19
- | Prop | Type | Required | Description |
20
- | --- | --- | --- | --- |
21
- | `containerClassName` | `string` | Optional | Custom class for the root `<form>` container |
22
- | `titleClassName` | `string` | Optional | Class for the title (`<h1>` element) |
23
- | `descriptionClassName` | `string` | Optional | Class for the description container |
24
- | `buttonClassName` | `string` | Optional | Class for the submit button |
25
- | `translations` | `Partial<GPayTranslations>` | Optional | Override default title, description, button and error texts |
26
- | `customUIRender` | `function` | Optional | Function to override the internal rendering logic and provide custom layout |
27
-
28
- ---
29
-
30
- ### `customUIRender` Parameters
31
-
32
- | Parameter | Type | Description |
33
- | --- | --- | --- |
34
- | `handleSubmit` | `UseFormHandleSubmit<GPayForm>` | Wrapper for your `onSubmit` function with validation |
35
- | `onSubmit` | `SubmitHandler<GPayForm>` | Submit logic that handles payment integration internally |
36
- | `control` | `Control<GPayForm>` | React Hook Form control object, useful for controlled inputs |
37
- | `errors` | `FieldErrors<GPayForm>` | Validation errors, helpful for form field error handling |
38
- | `translations` | `GPayTranslations` | Final translation object with merged defaults and overrides |
39
-
40
- ### Default Translations
41
-
42
- ```javascript
43
- {
44
- title: 'Pay with GarantiPay',
45
- description: [
46
- 'Click on the "GarantiPay" button. Guarantee for payment you will be redirected to the payment page.',
47
- 'Log in to your account with your username and password on the Garanti Pay page. If you do not have a Garanti Pay membership, create a new membership you can create.',
48
- 'Complete the payment process by selecting your card and payment type.'
49
- ],
50
- button: 'Pay with GarantiPay',
51
- error: 'An error occurred during payment'
52
- }
53
- ```
54
-
55
- ### Usage Examples
56
-
57
- ```bash
58
- /src/views/checkout/steps/payment/options/gpay.tsx
59
- ```
60
-
61
- ## Default Usage
62
-
63
- ```javascript
64
- import PluginModule, { Component } from '@akinon/next/components/plugin-module';
65
-
66
- const GPay = () => {
67
- return (
68
- <PluginModule
69
- component={Component.GPay}
70
- props={{
71
- translations: {
72
- title: 'Pay with GarantiPay',
73
- description: [
74
- 'Click on the "Pay with GarantiPay" button. You will be redirected to the payment page.',
75
- 'Log in with your credentials. If you don’t have an account, create one.',
76
- 'Select your card and complete the payment process.'
77
- ],
78
- button: 'Pay Now'
79
- },
80
- containerClassName: 'bg-gray-50 p-6 rounded-lg',
81
- titleClassName: 'text-xl font-bold',
82
- descriptionClassName: 'text-sm text-gray-700',
83
- buttonClassName: 'bg-primary text-white py-2'
84
- }}
85
- />
86
- );
87
- };
88
-
89
- export default GPay;
90
- ```
91
-
92
- ## Custom UI Usage
15
+ ##### File Path: src/views/checkout/steps/payment/options/gpay.tsx
93
16
 
94
17
  ```javascript
95
18
  import PluginModule, { Component } from '@akinon/next/components/plugin-module';
@@ -101,31 +24,27 @@ const GPay = () => {
101
24
  props={{
102
25
  translations: {
103
26
  title: 'Pay with GarantiPay',
104
- description: [
105
- 'Click the button below to pay for your order using GarantiPay.'
106
- ],
27
+ description:
28
+ 'Click the button below to pay for your order using GarantiPay.',
107
29
  button: 'Pay Now'
108
30
  },
109
- customUIRender: ({ handleSubmit, onSubmit, translations, loading }) => (
110
- <form
111
- onSubmit={handleSubmit(onSubmit)}
112
- className="p-6 bg-white rounded-md space-y-4"
113
- >
114
- <h2 className="text-2xl font-semibold">{translations.title}</h2>
115
- <ul className="text-sm text-gray-700 list-disc pl-4">
31
+ containerClassName: 'bg-gray-50 rounded-md',
32
+ titleClassName: 'text-2xl font-bold',
33
+ descriptionClassName: 'text-sm',
34
+ buttonClassName: 'bg-primary text-white',
35
+ customUIRender: ({ handleSubmit, onSubmit, translations }) => (
36
+ <form onSubmit={handleSubmit(onSubmit)} className="p-6 bg-white">
37
+ <h2 className="text-xl font-bold mb-2">{translations.title}</h2>
38
+ <div className="text-sm mb-4">
116
39
  {translations.description.map((item, index) => (
117
40
  <li key={index}>{item}</li>
118
41
  ))}
119
- </ul>
42
+ </div>
120
43
  <button
121
44
  type="submit"
122
- className="w-full h-10 bg-black text-white rounded"
45
+ className="w-full h-9 bg-black-300 text-white"
123
46
  >
124
- {loading ? (
125
- <LoaderSpinner className="w-5 h-5" />
126
- ) : (
127
- translations.button
128
- )}
47
+ {translations.button}
129
48
  </button>
130
49
  </form>
131
50
  )
@@ -137,14 +56,36 @@ const GPay = () => {
137
56
  export default GPay;
138
57
  ```
139
58
 
140
- ## Garanti Pay Redirect
141
-
142
- ```bash
143
- /src/app/[commerce]/[locale]/[currency]/orders/garanti-pay-redirect/page.tsx
144
- ```
59
+ ##### File Path: src/app/[commerce]/[locale]/[currency]/orders/garanti-pay-redirect/page.tsx
145
60
 
146
61
  ```javascript
147
62
  import { GarantiPayRedirect } from '@akinon/pz-gpay/src/routes/garanti-pay-redirect';
148
63
 
149
64
  export default GarantiPayRedirect;
150
65
  ```
66
+
67
+ ### Props
68
+
69
+ | Properties | Type | Description |
70
+ | --- | --- | --- |
71
+ | translations | object | The translations of the component. |
72
+ | containerClassName | string | The CSS class to apply to the container. |
73
+ | titleClassName | string | The CSS class to apply to the title. |
74
+ | descriptionClassName | string | The CSS class to apply to the description. |
75
+ | buttonClassName | string | The CSS class to apply to the button. |
76
+ | customUIRender | function | Custom render function for the component. Receives form handlers and translations. |
77
+
78
+ ### Default Translations
79
+
80
+ ```javascript
81
+ {
82
+ title: 'Pay with GarantiPay',
83
+ description: [
84
+ 'Click on the "GarantiPay" button. Guarantee for payment you will be redirected to the payment page.',
85
+ 'Log in to your account with your username and password on the Garanti Pay page. If you do not have a Garanti Pay membership, create a new membership you can create.',
86
+ 'Complete the payment process by selecting your card and payment type.'
87
+ ],
88
+ button: 'Pay with GarantiPay',
89
+ error: 'An error occurred during payment'
90
+ }
91
+ ```
@@ -44,7 +44,6 @@ type GPayOptionProps = {
44
44
  control: Control<GPayForm>;
45
45
  errors: FieldErrors<GPayForm>;
46
46
  translations: GPayTranslations;
47
- loading: boolean;
48
47
  }) => ReactElement;
49
48
  };
50
49
 
@@ -79,32 +78,19 @@ export function GPayOption(props: GPayOptionProps) {
79
78
  });
80
79
 
81
80
  const [setPaymentOption] = useSetPaymentOptionMutation();
82
- const [setGPayMethod, { isLoading: isGPayMethodLoading }] =
83
- useSetGPayMethodMutation();
84
- const [setCompleteGPay, { isLoading: isCompleteGPayLoading }] =
85
- useSetCompleteGPayMutation();
81
+ const [setGPayMethod] = useSetGPayMethodMutation();
82
+ const [setCompleteGPay] = useSetCompleteGPayMutation();
86
83
 
87
84
  const onSubmit: SubmitHandler<GPayForm> = async () => {
85
+ if (isPaymentStepBusy) return;
86
+
88
87
  setFormError(null);
88
+ await setGPayMethod();
89
89
 
90
- try {
91
- await setGPayMethod().unwrap();
92
- } catch (e) {
93
- setFormError(translations.error);
94
- return;
95
- }
90
+ const response = await setCompleteGPay().unwrap();
96
91
 
97
- try {
98
- const data = await setCompleteGPay().unwrap();
99
- if (data?.errors?.non_field_errors) {
100
- setFormError(data.errors.non_field_errors);
101
- }
102
- } catch (e: any) {
103
- const msg =
104
- e?.data?.errors?.non_field_errors ??
105
- e?.data?.detail ??
106
- translations.error;
107
- setFormError(msg);
92
+ if (response?.errors?.non_field_errors) {
93
+ setFormError(response.errors.non_field_errors);
108
94
  }
109
95
  };
110
96
 
@@ -127,8 +113,7 @@ export function GPayOption(props: GPayOptionProps) {
127
113
  onSubmit,
128
114
  control,
129
115
  errors: formErrors,
130
- translations,
131
- loading: isGPayMethodLoading || isCompleteGPayLoading || isPaymentStepBusy
116
+ translations
132
117
  });
133
118
  }
134
119