@akinon/pz-saved-card 1.101.0-rc.74 → 1.101.0-rc.76
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 +12 -0
- package/package.json +1 -1
- package/src/components/card-form-section.tsx +19 -17
- package/src/types/index.ts +1 -0
- package/src/views/iyzico-saved-card-option.tsx +14 -27
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @akinon/pz-saved-card
|
|
2
2
|
|
|
3
|
+
## 1.101.0-rc.76
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 6bfbdc2: ZERO-3653: optimize saved card option
|
|
8
|
+
|
|
9
|
+
## 1.101.0-rc.75
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- 9442cf0: ZERO-3653: make the register_consumer_card option optional
|
|
14
|
+
|
|
3
15
|
## 1.101.0-rc.74
|
|
4
16
|
|
|
5
17
|
## 1.101.0-rc.73
|
package/package.json
CHANGED
|
@@ -14,6 +14,7 @@ export interface CardFormSectionProps {
|
|
|
14
14
|
expiryDate?: string;
|
|
15
15
|
cvv?: string;
|
|
16
16
|
cvvTooltip?: string;
|
|
17
|
+
saveCardForFuture?: string;
|
|
17
18
|
};
|
|
18
19
|
}
|
|
19
20
|
|
|
@@ -23,24 +24,14 @@ export const CardFormSection = ({
|
|
|
23
24
|
errors,
|
|
24
25
|
months,
|
|
25
26
|
years,
|
|
26
|
-
translations = {}
|
|
27
|
+
translations = {},
|
|
27
28
|
}: CardFormSectionProps) => {
|
|
28
|
-
const defaultTranslations = {
|
|
29
|
-
cardHolder: 'Cardholder Name',
|
|
30
|
-
cardNumber: 'Card Number',
|
|
31
|
-
expiryDate: 'Expiration Date',
|
|
32
|
-
cvv: 'CVV',
|
|
33
|
-
cvvTooltip: 'CVV'
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
const mergedTranslations = { ...defaultTranslations, ...translations };
|
|
37
|
-
|
|
38
29
|
return (
|
|
39
30
|
<div className="w-full bg-white">
|
|
40
31
|
<div className="px-4 my-2 w-full flex justify-between flex-wrap">
|
|
41
32
|
<div className="my-2 w-full sm:px-4">
|
|
42
33
|
<Input
|
|
43
|
-
label={
|
|
34
|
+
label={translations.cardHolder}
|
|
44
35
|
{...register('card_holder')}
|
|
45
36
|
error={errors.card_holder}
|
|
46
37
|
/>
|
|
@@ -48,7 +39,7 @@ export const CardFormSection = ({
|
|
|
48
39
|
|
|
49
40
|
<div className="my-2 w-full flex flex-col sm:px-4">
|
|
50
41
|
<div className="text-xs text-gray-800 mb-2 w-full flex justify-between items-center">
|
|
51
|
-
<span>{
|
|
42
|
+
<span>{translations.cardNumber}</span>
|
|
52
43
|
</div>
|
|
53
44
|
|
|
54
45
|
<Input
|
|
@@ -67,7 +58,7 @@ export const CardFormSection = ({
|
|
|
67
58
|
className="flex w-full text-xs text-start text-black-400 mb-1.5"
|
|
68
59
|
htmlFor="card_month"
|
|
69
60
|
>
|
|
70
|
-
{
|
|
61
|
+
{translations.expiryDate}
|
|
71
62
|
</label>
|
|
72
63
|
|
|
73
64
|
<div className="flex w-full h-10 space-x-2.5">
|
|
@@ -96,7 +87,7 @@ export const CardFormSection = ({
|
|
|
96
87
|
className="flex w-full text-xs text-start text-black-400 mb-1.5"
|
|
97
88
|
htmlFor="card_cvv"
|
|
98
89
|
>
|
|
99
|
-
{
|
|
90
|
+
{translations.cvv}
|
|
100
91
|
</label>
|
|
101
92
|
<Input
|
|
102
93
|
format="###"
|
|
@@ -108,7 +99,7 @@ export const CardFormSection = ({
|
|
|
108
99
|
/>
|
|
109
100
|
<div className="group relative flex items-center justify-start text-gray-600 cursor-pointer mt-2 transition-all hover:text-secondary">
|
|
110
101
|
<span className="text-xs underline">
|
|
111
|
-
{
|
|
102
|
+
{translations.cvv}
|
|
112
103
|
</span>
|
|
113
104
|
<Icon name="cvc" size={16} className="leading-none ml-2" />
|
|
114
105
|
<div className="hidden group-hover:block absolute right-0 bottom-5 w-[11rem] lg:w-[21rem] lg:left-auto lg:right-auto border-2">
|
|
@@ -118,7 +109,18 @@ export const CardFormSection = ({
|
|
|
118
109
|
</div>
|
|
119
110
|
</div>
|
|
120
111
|
|
|
121
|
-
<div
|
|
112
|
+
<div className="my-2 w-full flex flex-col sm:px-4">
|
|
113
|
+
<label className="flex items-center space-x-2">
|
|
114
|
+
<input
|
|
115
|
+
type="checkbox"
|
|
116
|
+
{...register('register_consumer_card')}
|
|
117
|
+
className="h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded"
|
|
118
|
+
/>
|
|
119
|
+
<span className="text-sm text-gray-700">
|
|
120
|
+
{translations.saveCardForFuture}
|
|
121
|
+
</span>
|
|
122
|
+
</label>
|
|
123
|
+
</div>
|
|
122
124
|
</div>
|
|
123
125
|
</div>
|
|
124
126
|
);
|
package/src/types/index.ts
CHANGED
|
@@ -69,7 +69,8 @@ const defaultTranslations: IyzicoSavedCardOptionTexts = {
|
|
|
69
69
|
cardHolder: 'Cardholder Name',
|
|
70
70
|
cardNumber: 'Card Number',
|
|
71
71
|
expiryDate: 'Expiration Date',
|
|
72
|
-
cvv: 'CVV'
|
|
72
|
+
cvv: 'CVV',
|
|
73
|
+
saveCardForFuture: 'Save this card for future payments',
|
|
73
74
|
},
|
|
74
75
|
placeholder: {
|
|
75
76
|
cardHolder: 'Name on Card',
|
|
@@ -113,7 +114,8 @@ const createFormSchema = (
|
|
|
113
114
|
const baseSchema = {
|
|
114
115
|
agreement: yup
|
|
115
116
|
.boolean()
|
|
116
|
-
.oneOf([true], errors?.required ?? defaultTranslations.errors.required)
|
|
117
|
+
.oneOf([true], errors?.required ?? defaultTranslations.errors.required),
|
|
118
|
+
register_consumer_card: yup.boolean().default(false)
|
|
117
119
|
};
|
|
118
120
|
|
|
119
121
|
if (type === 'new-card') {
|
|
@@ -208,23 +210,15 @@ const IyzicoSavedCardOption = ({
|
|
|
208
210
|
if (type === 'existing-card') {
|
|
209
211
|
const res = await completeSavedCard({
|
|
210
212
|
agreement: data.agreement,
|
|
211
|
-
register_consumer_card:
|
|
212
|
-
window.universalCardStorage.registerConsumerCard,
|
|
213
213
|
consumer_token: window.universalCardStorage.consumerToken,
|
|
214
|
-
card_token: window.universalCardStorage.cardToken
|
|
214
|
+
card_token: window.universalCardStorage.cardToken,
|
|
215
|
+
register_consumer_card: true
|
|
215
216
|
});
|
|
216
217
|
|
|
217
218
|
if ('data' in res && res.data?.errors) {
|
|
218
219
|
setFormError(res.data.errors);
|
|
219
220
|
}
|
|
220
221
|
} else {
|
|
221
|
-
if (!window.universalCardStorage?.registerConsumerCard) {
|
|
222
|
-
setFormError({
|
|
223
|
-
register_consumer_card: mergedTexts.errors?.saveCardRequired
|
|
224
|
-
});
|
|
225
|
-
return;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
222
|
const res = await completeSavedCard({
|
|
229
223
|
agreement: data.agreement,
|
|
230
224
|
card_holder: data.card_holder,
|
|
@@ -232,8 +226,7 @@ const IyzicoSavedCardOption = ({
|
|
|
232
226
|
card_month: data.card_month,
|
|
233
227
|
card_year: data.card_year,
|
|
234
228
|
card_cvv: data.card_cvv,
|
|
235
|
-
register_consumer_card:
|
|
236
|
-
window.universalCardStorage.registerConsumerCard
|
|
229
|
+
register_consumer_card: data.register_consumer_card || false
|
|
237
230
|
});
|
|
238
231
|
|
|
239
232
|
if ('data' in res && res.data?.errors) {
|
|
@@ -301,7 +294,6 @@ const IyzicoSavedCardOption = ({
|
|
|
301
294
|
useEffect(() => {
|
|
302
295
|
if (window.iyziUcsInit?.scriptType === 'CONSUMER_WITH_CARD_EXIST') {
|
|
303
296
|
if (
|
|
304
|
-
!window.universalCardStorage?.consumerToken ||
|
|
305
297
|
window.universalCardStorage?.cardToken
|
|
306
298
|
) {
|
|
307
299
|
setType('existing-card');
|
|
@@ -312,20 +304,15 @@ const IyzicoSavedCardOption = ({
|
|
|
312
304
|
setType('new-card');
|
|
313
305
|
}
|
|
314
306
|
|
|
315
|
-
const
|
|
316
|
-
if (window.
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
) {
|
|
321
|
-
setType('existing-card');
|
|
322
|
-
} else {
|
|
323
|
-
setType('new-card');
|
|
324
|
-
}
|
|
307
|
+
const checkboxInterval = setInterval(() => {
|
|
308
|
+
if (window.universalCardStorage?.cardToken !== undefined) {
|
|
309
|
+
setType('existing-card');
|
|
310
|
+
} else {
|
|
311
|
+
setType('new-card');
|
|
325
312
|
}
|
|
326
|
-
},
|
|
313
|
+
}, 100);
|
|
327
314
|
|
|
328
|
-
return () => clearInterval(
|
|
315
|
+
return () => clearInterval(checkboxInterval);
|
|
329
316
|
}, [type]);
|
|
330
317
|
|
|
331
318
|
return (
|