strapi-plugin-payone-provider 1.4.2 → 1.5.0
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/APPLE_PAY_INTEGRATION.md +472 -0
- package/CSP_SETUP.md +184 -0
- package/HTTPS_REQUIREMENT.md +136 -0
- package/admin/src/pages/App/components/AppTabs.js +2 -0
- package/admin/src/pages/App/components/ApplePayButton.js +704 -0
- package/admin/src/pages/App/components/ApplePayConfig.js +305 -0
- package/admin/src/pages/App/components/PaymentActionsPanel.js +6 -0
- package/admin/src/pages/App/components/paymentActions/AuthorizationForm.js +29 -2
- package/admin/src/pages/App/components/paymentActions/CaptureForm.js +1 -0
- package/admin/src/pages/App/components/paymentActions/CardDetailsInput.js +18 -16
- package/admin/src/pages/App/components/paymentActions/PreauthorizationForm.js +44 -2
- package/admin/src/pages/App/components/paymentActions/RefundForm.js +1 -0
- package/admin/src/pages/hooks/usePaymentActions.js +13 -2
- package/admin/src/pages/utils/applePayConstants.js +222 -0
- package/admin/src/pages/utils/paymentUtils.js +22 -74
- package/package.json +1 -1
- package/server/bootstrap.js +5 -1
- package/server/config/index.js +5 -1
- package/server/controllers/payone.js +10 -0
- package/server/routes/index.js +17 -0
- package/server/services/applePayService.js +261 -0
- package/server/services/payone.js +10 -0
- package/server/utils/paymentMethodParams.js +19 -2
|
@@ -0,0 +1,472 @@
|
|
|
1
|
+
# Apple Pay Integration Setup Guide - Payone Plugin
|
|
2
|
+
|
|
3
|
+
## Kirish
|
|
4
|
+
|
|
5
|
+
Bu qo'llanma Apple Pay ni Payone orqali integratsiya qilish uchun **qadama-qadam** ko'rsatma beradi.
|
|
6
|
+
|
|
7
|
+
**Muhim:** Bu usulda Apple Developer hisobiga ega bo'lish **shart emas**, chunki Payone merchant validationni o'zi boshqaradi. Biroq, quyidagi qadamlarni **to'liq** bajarish kerak.
|
|
8
|
+
|
|
9
|
+
## Umumiy ko'rinish
|
|
10
|
+
|
|
11
|
+
Payone orqali Apple Pay integratsiyasi quyidagi afzalliklarga ega:
|
|
12
|
+
- ✅ Apple Developer hisobiga ega bo'lish shart emas
|
|
13
|
+
- ✅ Payone merchant validationni boshqaradi
|
|
14
|
+
- ✅ To'liq konfiguratsiya qilinadigan
|
|
15
|
+
- ✅ Test va Live muhitlar uchun qo'llab-quvvatlanadi
|
|
16
|
+
|
|
17
|
+
## Qadama-qadam Setup
|
|
18
|
+
|
|
19
|
+
### QADAM 1: Domain Verification (Domain Tasdiqlash)
|
|
20
|
+
|
|
21
|
+
#### 1.1. Domain Verification Faylini Olish
|
|
22
|
+
|
|
23
|
+
**Payone dan fayl yuklab olish:**
|
|
24
|
+
|
|
25
|
+
1. Payone PMI (Payment Method Integration) ga kiring
|
|
26
|
+
2. **KONFIGURATSIYA** > **PLATYEZHNYE PORTALY** ga o'ting
|
|
27
|
+
3. Portal ni tanlang
|
|
28
|
+
4. Apple Pay bo'limida **"Domain Verification File"** ni yuklab oling
|
|
29
|
+
|
|
30
|
+
Yoki Payone support ga murojaat qiling va domain verification faylini so'rang.
|
|
31
|
+
|
|
32
|
+
**Fayl nomi:** `apple-developer-merchantid-domain-association`
|
|
33
|
+
|
|
34
|
+
#### 1.2. Fayl Joylashuvi
|
|
35
|
+
|
|
36
|
+
**Muhim:** Fayl quyidagi path da bo'lishi kerak:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
/.well-known/apple-developer-merchantid-domain-association
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**To'liq URL misol:**
|
|
43
|
+
```
|
|
44
|
+
https://yourdomain.com/.well-known/apple-developer-merchantid-domain-association
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
#### 1.3. Strapi da Fayl Qo'yish
|
|
48
|
+
|
|
49
|
+
**Variant 1: Public papkada (Tavsiya etiladi)**
|
|
50
|
+
|
|
51
|
+
1. Strapi project root da `public` papkasini yarating (agar yo'q bo'lsa)
|
|
52
|
+
2. `public/.well-known/` papkasini yarating
|
|
53
|
+
3. `apple-developer-merchantid-domain-association` faylini qo'ying
|
|
54
|
+
|
|
55
|
+
**Struktura:**
|
|
56
|
+
```
|
|
57
|
+
your-strapi-project/
|
|
58
|
+
├── public/
|
|
59
|
+
│ └── .well-known/
|
|
60
|
+
│ └── apple-developer-merchantid-domain-association
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Variant 2: Static Files Middleware**
|
|
64
|
+
|
|
65
|
+
Agar Strapi da static files middleware ishlatilsa, faylni static files papkasiga qo'ying.
|
|
66
|
+
|
|
67
|
+
#### 1.4. Fayl Sozlamalari
|
|
68
|
+
|
|
69
|
+
Fayl quyidagi talablarga javob berishi kerak:
|
|
70
|
+
|
|
71
|
+
- ✅ **MIME Type:** `text/plain` yoki `application/json`
|
|
72
|
+
- ✅ **Access:** Fayl **public** bo'lishi kerak (authentication talab qilmasligi kerak)
|
|
73
|
+
- ✅ **Path:** To'g'ri path da bo'lishi kerak (`/.well-known/apple-developer-merchantid-domain-association`)
|
|
74
|
+
- ✅ **SSL:** Domen SSL sertifikatiga ega bo'lishi kerak (HTTPS)
|
|
75
|
+
|
|
76
|
+
#### 1.5. Domain Verification Test
|
|
77
|
+
|
|
78
|
+
Fayl to'g'ri qo'yilganligini tekshirish:
|
|
79
|
+
|
|
80
|
+
1. Browser da quyidagi URL ni oching:
|
|
81
|
+
```
|
|
82
|
+
https://yourdomain.com/.well-known/apple-developer-merchantid-domain-association
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
2. **Kutilayotgan natija:**
|
|
86
|
+
- ✅ Fayl yuklanishi va ko'rinishi kerak
|
|
87
|
+
- ✅ Fayl ichida text content bo'lishi kerak
|
|
88
|
+
- ❌ 404 xatosi ko'rsatilmasligi kerak
|
|
89
|
+
- ❌ Authentication so'ralmasligi kerak
|
|
90
|
+
|
|
91
|
+
3. **Agar 404 xatosi ko'rsatilsa:**
|
|
92
|
+
- Fayl path ni tekshiring
|
|
93
|
+
- Server sozlamalarini tekshiring
|
|
94
|
+
- Static files middleware sozlamalarini tekshiring
|
|
95
|
+
|
|
96
|
+
4. **Agar authentication talab qilinsa:**
|
|
97
|
+
- Fayl public bo'lishi kerak
|
|
98
|
+
- Server sozlamalarida authentication ni o'chiring
|
|
99
|
+
- `.well-known` papkasi uchun public access ni ta'minlang
|
|
100
|
+
|
|
101
|
+
### QADAM 2: Server va Web Page Sozlamalari
|
|
102
|
+
|
|
103
|
+
#### 2.1. SSL Sertifikati
|
|
104
|
+
|
|
105
|
+
**Muhim talablar:**
|
|
106
|
+
|
|
107
|
+
1. **SSL Sertifikati mavjud bo'lishi kerak:**
|
|
108
|
+
- Apple Pay faqat HTTPS orqali ishlaydi
|
|
109
|
+
- HTTP da ishlamaydi
|
|
110
|
+
|
|
111
|
+
2. **SSL Sertifikati amal qilishi kerak:**
|
|
112
|
+
- Sertifikat muddati tugamagan bo'lishi kerak
|
|
113
|
+
- Sertifikat domen uchun to'g'ri bo'lishi kerak
|
|
114
|
+
|
|
115
|
+
3. **SSL Sertifikati yangilanishi:**
|
|
116
|
+
- ⚠️ **Muhim:** SSL sertifikati muddati tugashidan **7 kun oldin** yangilanishi kerak
|
|
117
|
+
- Agar 7 kun ichida yangilanmasa, Apple Pay ishlamay qoladi
|
|
118
|
+
- Bu holatda Payone support ga murojaat qilishingiz kerak
|
|
119
|
+
|
|
120
|
+
**SSL Sertifikati tekshirish:**
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# SSL sertifikati muddatini tekshirish
|
|
124
|
+
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com < /dev/null 2>/dev/null | openssl x509 -noout -dates
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
#### 2.2. Apple IP Addresslariga Ruxsat
|
|
128
|
+
|
|
129
|
+
Serveringiz Apple IP addresslaridan keladigan so'rovlarni qabul qilishi kerak.
|
|
130
|
+
|
|
131
|
+
**Apple IP Address Ranges:**
|
|
132
|
+
|
|
133
|
+
- `17.0.0.0/8` - Apple network range
|
|
134
|
+
- `17.172.224.0/19` - Apple Pay servers
|
|
135
|
+
|
|
136
|
+
**Firewall Sozlamalari:**
|
|
137
|
+
|
|
138
|
+
1. Serveringizda firewall sozlamalarini tekshiring
|
|
139
|
+
2. Apple IP addresslariga ruxsat bering
|
|
140
|
+
3. Agar Cloudflare yoki boshqa CDN ishlatilsa, Apple IP addresslariga ruxsat bering
|
|
141
|
+
|
|
142
|
+
**Nginx misol:**
|
|
143
|
+
|
|
144
|
+
```nginx
|
|
145
|
+
# Allow Apple IP addresses
|
|
146
|
+
allow 17.0.0.0/8;
|
|
147
|
+
allow 17.172.224.0/19;
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**Apache misol:**
|
|
151
|
+
|
|
152
|
+
```apache
|
|
153
|
+
# Allow Apple IP addresses
|
|
154
|
+
<RequireAll>
|
|
155
|
+
Require ip 17.0.0.0/8
|
|
156
|
+
Require ip 17.172.224.0/19
|
|
157
|
+
</RequireAll>
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
#### 2.3. Server Konfiguratsiyasi
|
|
161
|
+
|
|
162
|
+
**Strapi Server Config:**
|
|
163
|
+
|
|
164
|
+
`config/server.js` yoki `config/env/production/server.js`:
|
|
165
|
+
|
|
166
|
+
```javascript
|
|
167
|
+
module.exports = {
|
|
168
|
+
host: '0.0.0.0',
|
|
169
|
+
port: process.env.PORT || 1337,
|
|
170
|
+
url: process.env.SERVER_URL || 'https://yourdomain.com',
|
|
171
|
+
proxy: true, // Agar reverse proxy ishlatilsa
|
|
172
|
+
cron: {
|
|
173
|
+
enabled: false
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Environment Variables:**
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
SERVER_URL=https://yourdomain.com
|
|
182
|
+
PORT=1337
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
#### 2.4. Static Files Middleware
|
|
186
|
+
|
|
187
|
+
Agar `.well-known` papkasi ishlamasa, static files middleware sozlang:
|
|
188
|
+
|
|
189
|
+
`config/middlewares.js`:
|
|
190
|
+
|
|
191
|
+
```javascript
|
|
192
|
+
module.exports = [
|
|
193
|
+
'strapi::logger',
|
|
194
|
+
'strapi::errors',
|
|
195
|
+
{
|
|
196
|
+
name: 'strapi::security',
|
|
197
|
+
config: {
|
|
198
|
+
contentSecurityPolicy: {
|
|
199
|
+
useDefaults: true,
|
|
200
|
+
directives: {
|
|
201
|
+
'connect-src': ["'self'", 'https:'],
|
|
202
|
+
'img-src': ["'self'", 'data:', 'blob:', 'https:'],
|
|
203
|
+
'media-src': ["'self'", 'data:', 'blob:', 'https:'],
|
|
204
|
+
upgradeInsecureRequests: null,
|
|
205
|
+
},
|
|
206
|
+
},
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
'strapi::cors',
|
|
210
|
+
'strapi::poweredBy',
|
|
211
|
+
'strapi::query',
|
|
212
|
+
'strapi::body',
|
|
213
|
+
'strapi::session',
|
|
214
|
+
'strapi::favicon',
|
|
215
|
+
'strapi::public',
|
|
216
|
+
];
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### QADAM 3: Merchant Identifier Olish
|
|
220
|
+
|
|
221
|
+
#### 3.1. Payone Support ga Murojaat
|
|
222
|
+
|
|
223
|
+
Domain verification va server setup qadamlari bajarilgandan so'ng, Payone support ga murojaat qiling.
|
|
224
|
+
|
|
225
|
+
**Email yuborish:**
|
|
226
|
+
|
|
227
|
+
**To:** Payone support email (sizning mintaqangizga mos)
|
|
228
|
+
|
|
229
|
+
**Mavzu:** `Apple Pay Integration Request - Domain Verified`
|
|
230
|
+
|
|
231
|
+
**Email matni:**
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
Assalomu alaykum,
|
|
235
|
+
|
|
236
|
+
Men Apple Pay integratsiyasini sozlashni xohlayman.
|
|
237
|
+
|
|
238
|
+
Quyidagi ma'lumotlar:
|
|
239
|
+
|
|
240
|
+
1. Domain: yourdomain.com
|
|
241
|
+
2. MID (Merchant ID): [sizning MID]
|
|
242
|
+
3. Portal ID: [sizning Portal ID]
|
|
243
|
+
4. Domain Verification:
|
|
244
|
+
- Fayl joylashuvi: https://yourdomain.com/.well-known/apple-developer-merchantid-domain-association
|
|
245
|
+
- SSL sertifikati: Amal qilmoqda (muddati: [sana])
|
|
246
|
+
5. Server sozlamalari: Tayyor
|
|
247
|
+
|
|
248
|
+
Iltimos, Apple Pay uchun merchant identifier ni faollashtiring.
|
|
249
|
+
|
|
250
|
+
Rahmat.
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
#### 3.2. Payone dan Javob
|
|
254
|
+
|
|
255
|
+
Payone support sizga quyidagilarni beradi:
|
|
256
|
+
|
|
257
|
+
1. **Merchant Identifier** - Apple Pay uchun merchant identifier
|
|
258
|
+
2. **Konfiguratsiya ma'lumotlari** - Plugin sozlash uchun kerakli ma'lumotlar
|
|
259
|
+
3. **Test/Live muhit ma'lumotlari**
|
|
260
|
+
|
|
261
|
+
#### 3.3. PMI da Ko'rish
|
|
262
|
+
|
|
263
|
+
Merchant identifier ni Payone PMI da ko'rishingiz mumkin:
|
|
264
|
+
|
|
265
|
+
1. PMI ga kiring: https://pmi.pay1.de
|
|
266
|
+
2. **KONFIGURATSIYA** > **PLATYEZHNYE PORTALY** ga o'ting
|
|
267
|
+
3. Portal ni tanlang
|
|
268
|
+
4. **Konfiguratsiya tipov platezhey** tabiga o'ting
|
|
269
|
+
5. Apple Pay bo'limida **merchant identifier** ni ko'rasiz
|
|
270
|
+
|
|
271
|
+
**Merchant Identifier format:**
|
|
272
|
+
```
|
|
273
|
+
merchant.com.yourdomain
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### QADAM 4: Plugin Konfiguratsiyasi
|
|
277
|
+
|
|
278
|
+
#### 4.1. Admin Panelida Sozlash
|
|
279
|
+
|
|
280
|
+
1. Strapi Admin Panel ga kiring
|
|
281
|
+
2. **Settings** > **Payone Provider** ga o'ting
|
|
282
|
+
3. **Configuration** tabiga o'ting
|
|
283
|
+
|
|
284
|
+
#### 4.2. Asosiy Sozlamalar
|
|
285
|
+
|
|
286
|
+
Quyidagi maydonlarni to'ldiring:
|
|
287
|
+
|
|
288
|
+
- **AID (Account ID):** Payone Account ID
|
|
289
|
+
- **Portal ID:** Payone Portal ID
|
|
290
|
+
- **MID (Merchant ID):** Payone Merchant ID
|
|
291
|
+
- **Key:** Payone API Key
|
|
292
|
+
- **Mode:** `test` yoki `live`
|
|
293
|
+
- `test` - Test muhit
|
|
294
|
+
- `live` - Live muhit
|
|
295
|
+
- **Merchant Name:** Store nomi (optional, lekin tavsiya etiladi)
|
|
296
|
+
- **Domain Name:** Domen nomi (optional, avtomatik aniqlanadi)
|
|
297
|
+
- **Merchant Identifier:** Payone dan olingan merchant identifier (optional)
|
|
298
|
+
|
|
299
|
+
#### 4.3. Apple Pay Konfiguratsiyasi
|
|
300
|
+
|
|
301
|
+
**Payment Actions** tabida:
|
|
302
|
+
|
|
303
|
+
1. **Payment Method:** "Apple Pay" ni tanlang
|
|
304
|
+
2. **Country Code:** Mamlakat kodi (masalan: DE, US, GB)
|
|
305
|
+
3. **Currency Code:** Valyuta kodi (masalan: EUR, USD, GBP)
|
|
306
|
+
4. **Supported Networks:** Qo'llab-quvvatlanadigan to'lov tarmoqlari
|
|
307
|
+
5. **Merchant Capabilities:** Merchant imkoniyatlari (3D Secure, Credit, Debit)
|
|
308
|
+
|
|
309
|
+
#### 4.4. Test Qilish
|
|
310
|
+
|
|
311
|
+
1. **Mode:** `test` ni tanlang
|
|
312
|
+
2. **Amount:** Test summa kiriting (masalan: 1000 = €10.00)
|
|
313
|
+
3. **Apple Pay** tugmasini bosing
|
|
314
|
+
4. Apple Pay dialog ochiladi
|
|
315
|
+
5. To'lovni tasdiqlang
|
|
316
|
+
6. Natijani tekshiring
|
|
317
|
+
|
|
318
|
+
## Test va Live Muhitlar
|
|
319
|
+
|
|
320
|
+
### Test Muhit
|
|
321
|
+
|
|
322
|
+
**Sozlamalar:**
|
|
323
|
+
|
|
324
|
+
- **Mode:** `test`
|
|
325
|
+
- **Test Merchant Identifier:** Payone dan olingan test merchant identifier
|
|
326
|
+
- **Test Cards:** Apple Pay sandbox test kartalari
|
|
327
|
+
|
|
328
|
+
**Test Kartalar:**
|
|
329
|
+
|
|
330
|
+
- **Visa:** 4111111111111111
|
|
331
|
+
- **Mastercard:** 5555555555554444
|
|
332
|
+
- **Amex:** 378282246310005
|
|
333
|
+
- **Discover:** 6011111111111117
|
|
334
|
+
|
|
335
|
+
**Test Qilish:**
|
|
336
|
+
|
|
337
|
+
1. Safari brauzerida (iOS, macOS, iPadOS)
|
|
338
|
+
2. Apple ID bilan tizimga kirish kerak
|
|
339
|
+
3. Test kartalar Apple Pay da qo'shilishi kerak
|
|
340
|
+
4. Sandbox muhitda test qilish
|
|
341
|
+
|
|
342
|
+
### Live Muhit
|
|
343
|
+
|
|
344
|
+
**Sozlamalar:**
|
|
345
|
+
|
|
346
|
+
- **Mode:** `live`
|
|
347
|
+
- **Live Merchant Identifier:** Payone dan olingan live merchant identifier
|
|
348
|
+
- **SSL Sertifikati:** Live domen uchun amal qiluvchi SSL sertifikati
|
|
349
|
+
- **Domain Verification:** Live domen uchun domain verification fayl qo'yilgan bo'lishi kerak
|
|
350
|
+
|
|
351
|
+
**Live Muhitga O'tish:**
|
|
352
|
+
|
|
353
|
+
1. Barcha testlar muvaffaqiyatli o'tganligini tekshiring
|
|
354
|
+
2. **Mode:** `live` ni tanlang
|
|
355
|
+
3. Live merchant identifier ni kiriting
|
|
356
|
+
4. SSL sertifikati amal qilayotganligini tekshiring
|
|
357
|
+
5. Domain verification fayl to'g'ri qo'yilganligini tekshiring
|
|
358
|
+
6. Birinchi to'lovni test qiling
|
|
359
|
+
|
|
360
|
+
## Debugging
|
|
361
|
+
|
|
362
|
+
### Server Loglari
|
|
363
|
+
|
|
364
|
+
Server tomonida quyidagi loglar ko'rinadi:
|
|
365
|
+
|
|
366
|
+
```
|
|
367
|
+
[Apple Pay] Initializing Apple Pay session with Payone
|
|
368
|
+
[Apple Pay] Settings loaded: { mode: 'test', mid: '...', portalid: '...' }
|
|
369
|
+
[Apple Pay] Sending request to Payone: { url: '...', mode: 'test', ... }
|
|
370
|
+
[Apple Pay] Payone response received: { status: 200, ... }
|
|
371
|
+
[Apple Pay] Session initialization response: { ... }
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
### Admin Loglari
|
|
375
|
+
|
|
376
|
+
Browser console da quyidagi loglar ko'rinadi:
|
|
377
|
+
|
|
378
|
+
```javascript
|
|
379
|
+
[Apple Pay] Button clicked, checking readiness...
|
|
380
|
+
[Apple Pay] Starting payment request: { amount: '10.00', currency: 'EUR', ... }
|
|
381
|
+
[Apple Pay] Merchant validation requested: { validationURL: '...', domain: '...' }
|
|
382
|
+
[Apple Pay] Validating merchant with Payone: { ... }
|
|
383
|
+
[Apple Pay] Payment token received: { hasToken: true, ... }
|
|
384
|
+
[Apple Pay] Payment completed successfully
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### Muammolarni Hal Qilish
|
|
388
|
+
|
|
389
|
+
#### Domain Verification Muammolari
|
|
390
|
+
|
|
391
|
+
**Muammo:** Domain verification fayl topilmayapti (404)
|
|
392
|
+
|
|
393
|
+
**Yechim:**
|
|
394
|
+
1. Fayl path ni tekshiring: `/.well-known/apple-developer-merchantid-domain-association`
|
|
395
|
+
2. Fayl public bo'lishi kerak
|
|
396
|
+
3. Server sozlamalarini tekshiring
|
|
397
|
+
4. Static files middleware sozlamalarini tekshiring
|
|
398
|
+
|
|
399
|
+
**Muammo:** Domain verification fayl authentication talab qilmoqda
|
|
400
|
+
|
|
401
|
+
**Yechim:**
|
|
402
|
+
1. Fayl public bo'lishi kerak
|
|
403
|
+
2. Server sozlamalarida authentication ni o'chiring
|
|
404
|
+
3. `.well-known` papkasi uchun public access ni ta'minlang
|
|
405
|
+
|
|
406
|
+
#### SSL Sertifikati Muammolari
|
|
407
|
+
|
|
408
|
+
**Muammo:** SSL sertifikati muddati tugagan
|
|
409
|
+
|
|
410
|
+
**Yechim:**
|
|
411
|
+
1. SSL sertifikatini yangilang
|
|
412
|
+
2. 7 kun oldin yangilanishi kerak
|
|
413
|
+
3. Yangilangandan so'ng Payone support ga xabar bering
|
|
414
|
+
|
|
415
|
+
**Muammo:** SSL sertifikati noto'g'ri
|
|
416
|
+
|
|
417
|
+
**Yechim:**
|
|
418
|
+
1. SSL sertifikati domen uchun to'g'ri bo'lishi kerak
|
|
419
|
+
2. Wildcard yoki multi-domain sertifikat ishlatishingiz mumkin
|
|
420
|
+
3. Sertifikatni qayta o'rnating
|
|
421
|
+
|
|
422
|
+
#### Merchant Validation Muammolari
|
|
423
|
+
|
|
424
|
+
**Muammo:** Merchant validation xatosi
|
|
425
|
+
|
|
426
|
+
**Yechim:**
|
|
427
|
+
1. Merchant identifier ni tekshiring
|
|
428
|
+
2. Payone sozlamalarini tekshiring
|
|
429
|
+
3. Domain verification fayl to'g'ri qo'yilganligini tekshiring
|
|
430
|
+
4. Server loglarini tekshiring
|
|
431
|
+
5. Browser console da xatolarni ko'ring
|
|
432
|
+
|
|
433
|
+
#### Payment Token Muammolari
|
|
434
|
+
|
|
435
|
+
**Muammo:** Payment token olinmayapti
|
|
436
|
+
|
|
437
|
+
**Yechim:**
|
|
438
|
+
1. Browser console da xatolarni tekshiring
|
|
439
|
+
2. Payment Request API qo'llab-quvvatlanayotganini tekshiring
|
|
440
|
+
3. Apple Pay mavjudligini tekshiring
|
|
441
|
+
4. Network xatolarni tekshiring
|
|
442
|
+
5. Server loglarini tekshiring
|
|
443
|
+
|
|
444
|
+
## Qo'shimcha Ma'lumotlar
|
|
445
|
+
|
|
446
|
+
### Foydali Linklar
|
|
447
|
+
|
|
448
|
+
- [Payone Apple Pay Documentation](https://docs.payone.com/payment-methods/apple-pay/apple-pay-without-dev)
|
|
449
|
+
- [Apple Pay Web Documentation](https://developer.apple.com/documentation/applepayontheweb)
|
|
450
|
+
- [Apple Pay Sandbox Testing](https://developer.apple.com/apple-pay/sandbox-testing/)
|
|
451
|
+
- [Apple Pay Button CSS](https://developer.apple.com/documentation/applepayontheweb/displaying-apple-pay-buttons-using-css)
|
|
452
|
+
- [Payment Request API](https://developer.mozilla.org/en-US/docs/Web/API/Payment_Request_API)
|
|
453
|
+
|
|
454
|
+
### Support
|
|
455
|
+
|
|
456
|
+
Agar muammolar bo'lsa:
|
|
457
|
+
1. Payone support ga murojaat qiling
|
|
458
|
+
2. Plugin GitHub issues ga yozing
|
|
459
|
+
3. Strapi community ga murojaat qiling
|
|
460
|
+
|
|
461
|
+
## Xulosa
|
|
462
|
+
|
|
463
|
+
Apple Pay integratsiyasi to'liq sozlangan va ishga tayyor. Quyidagi qadamlarni bajarganingizdan so'ng, Apple Pay orqali to'lovlarni qabul qilish imkoniyatiga ega bo'lasiz:
|
|
464
|
+
|
|
465
|
+
1. ✅ Domain verification fayl qo'yilgan
|
|
466
|
+
2. ✅ SSL sertifikati amal qilmoqda
|
|
467
|
+
3. ✅ Merchant identifier olingan
|
|
468
|
+
4. ✅ Plugin sozlangan
|
|
469
|
+
5. ✅ Test muhitda sinab ko'rilgan
|
|
470
|
+
6. ✅ Live muhitga o'tkazilgan
|
|
471
|
+
|
|
472
|
+
**Muvaffaqiyatli integratsiya!**
|
package/CSP_SETUP.md
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# Content Security Policy (CSP) Setup for Apple Pay and Google Pay
|
|
2
|
+
|
|
3
|
+
## Muammo
|
|
4
|
+
|
|
5
|
+
Agar quyidagi xatolarni ko'rsangiz:
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
Loading the script 'https://pay.google.com/gp/p/js/pay.js' violates the following Content Security Policy directive: "script-src 'self' 'unsafe-inline'"
|
|
9
|
+
Loading the script 'https://applepay.cdn-apple.com/jsapi/1.latest/apple-pay-sdk.js' violates the following Content Security Policy directive: "script-src 'self' 'unsafe-inline'"
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Bu CSP (Content Security Policy) sozlamalari muammosi.
|
|
13
|
+
|
|
14
|
+
## Yechim
|
|
15
|
+
|
|
16
|
+
### QADAM 1: Admin Config yangilash
|
|
17
|
+
|
|
18
|
+
`config/admin.js` faylini yangilang:
|
|
19
|
+
|
|
20
|
+
```javascript
|
|
21
|
+
module.exports = ({ env }) => ({
|
|
22
|
+
auth: {
|
|
23
|
+
secret: env('ADMIN_JWT_SECRET'),
|
|
24
|
+
},
|
|
25
|
+
apiToken: {
|
|
26
|
+
salt: env('API_TOKEN_SALT'),
|
|
27
|
+
},
|
|
28
|
+
transfer: {
|
|
29
|
+
token: {
|
|
30
|
+
salt: env('TRANSFER_TOKEN_SALT'),
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
flags: {
|
|
34
|
+
nps: env.bool('FLAG_NPS', true),
|
|
35
|
+
promoteEE: env.bool('FLAG_PROMOTE_EE', true),
|
|
36
|
+
},
|
|
37
|
+
// Content Security Policy for Apple Pay and Google Pay
|
|
38
|
+
contentSecurityPolicy: {
|
|
39
|
+
useDefaults: true,
|
|
40
|
+
directives: {
|
|
41
|
+
'script-src': [
|
|
42
|
+
"'self'",
|
|
43
|
+
"'unsafe-inline'",
|
|
44
|
+
"'unsafe-eval'",
|
|
45
|
+
'https://pay.google.com', // Google Pay SDK
|
|
46
|
+
'https://applepay.cdn-apple.com', // Apple Pay SDK
|
|
47
|
+
'https://www.apple.com', // Apple Pay manifest
|
|
48
|
+
],
|
|
49
|
+
'script-src-elem': [
|
|
50
|
+
"'self'",
|
|
51
|
+
"'unsafe-inline'",
|
|
52
|
+
'https://pay.google.com', // Google Pay SDK
|
|
53
|
+
'https://applepay.cdn-apple.com', // Apple Pay SDK
|
|
54
|
+
],
|
|
55
|
+
'connect-src': [
|
|
56
|
+
"'self'",
|
|
57
|
+
'https:',
|
|
58
|
+
'https://pay.google.com', // Google Pay API
|
|
59
|
+
'https://applepay.cdn-apple.com', // Apple Pay API
|
|
60
|
+
'https://www.apple.com', // Apple Pay manifest
|
|
61
|
+
'https://api.pay1.de', // Payone API
|
|
62
|
+
],
|
|
63
|
+
'img-src': [
|
|
64
|
+
"'self'",
|
|
65
|
+
'data:',
|
|
66
|
+
'blob:',
|
|
67
|
+
'https:',
|
|
68
|
+
],
|
|
69
|
+
'media-src': [
|
|
70
|
+
"'self'",
|
|
71
|
+
'data:',
|
|
72
|
+
'blob:',
|
|
73
|
+
'https:',
|
|
74
|
+
],
|
|
75
|
+
'frame-src': [
|
|
76
|
+
"'self'",
|
|
77
|
+
'https://pay.google.com', // Google Pay iframe
|
|
78
|
+
'https://applepay.cdn-apple.com', // Apple Pay iframe
|
|
79
|
+
],
|
|
80
|
+
'style-src': [
|
|
81
|
+
"'self'",
|
|
82
|
+
"'unsafe-inline'",
|
|
83
|
+
'https:',
|
|
84
|
+
],
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### QADAM 2: Middlewares Config yangilash
|
|
91
|
+
|
|
92
|
+
`config/middlewares.js` faylini yangilang:
|
|
93
|
+
|
|
94
|
+
```javascript
|
|
95
|
+
module.exports = [
|
|
96
|
+
'strapi::logger',
|
|
97
|
+
'strapi::errors',
|
|
98
|
+
{
|
|
99
|
+
name: 'strapi::security',
|
|
100
|
+
config: {
|
|
101
|
+
contentSecurityPolicy: {
|
|
102
|
+
useDefaults: true,
|
|
103
|
+
directives: {
|
|
104
|
+
'script-src': [
|
|
105
|
+
"'self'",
|
|
106
|
+
"'unsafe-inline'",
|
|
107
|
+
"'unsafe-eval'",
|
|
108
|
+
'https://pay.google.com', // Google Pay SDK
|
|
109
|
+
'https://applepay.cdn-apple.com', // Apple Pay SDK
|
|
110
|
+
'https://www.apple.com', // Apple Pay manifest
|
|
111
|
+
],
|
|
112
|
+
'connect-src': [
|
|
113
|
+
"'self'",
|
|
114
|
+
'https:',
|
|
115
|
+
'https://pay.google.com', // Google Pay API
|
|
116
|
+
'https://applepay.cdn-apple.com', // Apple Pay API
|
|
117
|
+
'https://www.apple.com', // Apple Pay manifest
|
|
118
|
+
'https://api.pay1.de', // Payone API
|
|
119
|
+
],
|
|
120
|
+
'img-src': [
|
|
121
|
+
"'self'",
|
|
122
|
+
'data:',
|
|
123
|
+
'blob:',
|
|
124
|
+
'https:',
|
|
125
|
+
],
|
|
126
|
+
'media-src': [
|
|
127
|
+
"'self'",
|
|
128
|
+
'data:',
|
|
129
|
+
'blob:',
|
|
130
|
+
'https:',
|
|
131
|
+
],
|
|
132
|
+
'frame-src': [
|
|
133
|
+
"'self'",
|
|
134
|
+
'https://pay.google.com', // Google Pay iframe
|
|
135
|
+
'https://applepay.cdn-apple.com', // Apple Pay iframe
|
|
136
|
+
],
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
'strapi::cors',
|
|
142
|
+
'strapi::poweredBy',
|
|
143
|
+
'strapi::query',
|
|
144
|
+
'strapi::body',
|
|
145
|
+
'strapi::session',
|
|
146
|
+
'strapi::favicon',
|
|
147
|
+
'strapi::public',
|
|
148
|
+
];
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### QADAM 3: Serverni Qayta Ishga Tushirish
|
|
152
|
+
|
|
153
|
+
Config fayllarini yangilaganingizdan so'ng:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
# Development
|
|
157
|
+
npm run develop
|
|
158
|
+
|
|
159
|
+
# Production
|
|
160
|
+
npm run build
|
|
161
|
+
npm start
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Tekshirish
|
|
165
|
+
|
|
166
|
+
1. Browser console ni oching (F12)
|
|
167
|
+
2. Network tab ni oching
|
|
168
|
+
3. Apple Pay yoki Google Pay tugmasini bosing
|
|
169
|
+
4. Quyidagi scriptlar yuklanishi kerak:
|
|
170
|
+
- `https://pay.google.com/gp/p/js/pay.js` (Google Pay)
|
|
171
|
+
- `https://applepay.cdn-apple.com/jsapi/1.latest/apple-pay-sdk.js` (Apple Pay)
|
|
172
|
+
|
|
173
|
+
Agar hali ham xatolar bo'lsa:
|
|
174
|
+
1. Browser cache ni tozalang
|
|
175
|
+
2. Hard refresh qiling (Ctrl+Shift+R yoki Cmd+Shift+R)
|
|
176
|
+
3. Server loglarini tekshiring
|
|
177
|
+
|
|
178
|
+
## Qo'shimcha Ma'lumotlar
|
|
179
|
+
|
|
180
|
+
- [Strapi Security Documentation](https://docs.strapi.io/dev-docs/configurations/middlewares#security)
|
|
181
|
+
- [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP)
|
|
182
|
+
- [Apple Pay Web Documentation](https://developer.apple.com/documentation/applepayontheweb)
|
|
183
|
+
|
|
184
|
+
|