@one-payments/web-components 1.1.31 → 1.2.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.
@@ -0,0 +1,496 @@
1
+ # Shopify Checkout Integration Analysis for One Payments Drop-in Element
2
+
3
+ ## Executive Summary
4
+
5
+ **Can you integrate a custom Drop-in payment element into Shopify's checkout page?**
6
+
7
+ | Scenario | Feasibility | Requirements |
8
+ |----------|-------------|--------------|
9
+ | Regular Shopify Store | **NOT POSSIBLE** | N/A |
10
+ | Shopify Plus Store (Merchant) | **Very Limited** | Plus plan ($2,000+/month) |
11
+ | Shopify Payments Partner | **POSSIBLE** | Shopify Partner approval, extensive review process |
12
+ | Headless Commerce (Custom Storefront) | **POSSIBLE** | Development expertise, Storefront API |
13
+
14
+ **Bottom Line**: Integrating a custom payment Drop-in element directly into Shopify's native checkout is **extremely restricted** and requires either becoming an approved Shopify Payments Partner or building a completely headless storefront.
15
+
16
+ ---
17
+
18
+ ## Table of Contents
19
+
20
+ 1. [Shopify Checkout Architecture](#1-shopify-checkout-architecture)
21
+ 2. [Checkout Extensibility (Current System)](#2-checkout-extensibility-current-system)
22
+ 3. [checkout.liquid (Deprecated)](#3-checkoutliquid-deprecated)
23
+ 4. [Payment Extensions Program](#4-payment-extensions-program)
24
+ 5. [Technical Limitations & Restrictions](#5-technical-limitations--restrictions)
25
+ 6. [Integration Options Analysis](#6-integration-options-analysis)
26
+ 7. [Feasibility for One Payments Drop-in](#7-feasibility-for-one-payments-drop-in)
27
+ 8. [Alternative Approaches](#8-alternative-approaches)
28
+ 9. [Recommendations](#9-recommendations)
29
+
30
+ ---
31
+
32
+ ## 1. Shopify Checkout Architecture
33
+
34
+ ### Overview
35
+
36
+ Shopify's checkout is a **highly controlled, PCI-compliant environment** that processes billions of dollars in transactions. Due to security, compliance, and user experience requirements, Shopify maintains strict control over what can be modified in the checkout flow.
37
+
38
+ ### Checkout Flow Stages
39
+
40
+ ```
41
+ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
42
+ │ Information │ -> │ Shipping │ -> │ Payment │ -> │ Thank You │
43
+ │ Step │ │ Step │ │ Step │ │ Page │
44
+ └─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘
45
+ │ │ │ │
46
+ └──────────────────────┴──────────────────────┴──────────────────────┘
47
+
48
+ Shopify Plus ONLY for
49
+ UI Extension access
50
+ ```
51
+
52
+ ### Plan-Based Access Levels
53
+
54
+ | Feature | Basic/Standard Plans | Shopify Plus ($2,000+/mo) |
55
+ |---------|---------------------|---------------------------|
56
+ | Checkout UI Extensions (Info/Shipping/Payment) | ❌ Not Available | ✅ Available |
57
+ | Checkout UI Extensions (Thank You/Order Status) | ✅ Limited | ✅ Full Access |
58
+ | Payment Method Customization | ❌ Credit cards locked | ✅ Full customization |
59
+ | Custom Payment Extensions | ❌ Not Available | ⚠️ Requires Partner Approval |
60
+ | checkout.liquid | ❌ Deprecated/Removed | ❌ Deprecated (Aug 2025) |
61
+
62
+ ---
63
+
64
+ ## 2. Checkout Extensibility (Current System)
65
+
66
+ ### What is Checkout Extensibility?
67
+
68
+ Checkout Extensibility is Shopify's modern framework for customizing checkout. It replaces the deprecated `checkout.liquid` and provides a **sandboxed, secure environment** for extensions.
69
+
70
+ ### How It Works
71
+
72
+ ```javascript
73
+ // Example: Checkout UI Extension (React/Preact)
74
+ import { Banner, useExtensionCapability } from '@shopify/ui-extensions-react/checkout';
75
+
76
+ export default function MyExtension() {
77
+ // Limited to Shopify-provided components only
78
+ return (
79
+ <Banner title="Custom Message">
80
+ You cannot render arbitrary HTML here.
81
+ </Banner>
82
+ );
83
+ }
84
+ ```
85
+
86
+ ### Available Components (Polaris-based)
87
+
88
+ - `Banner`, `Button`, `Checkbox`
89
+ - `Heading`, `Text`, `TextBlock`
90
+ - `Image`, `Icon`
91
+ - `BlockStack`, `InlineStack`, `Grid`
92
+ - `TextField`, `Select`, `ChoiceList`
93
+
94
+ **Critical Limitation**: You can ONLY use these Shopify-provided components. No custom HTML, no `<div>`, no `<script>` tags.
95
+
96
+ ### Extension Targets (Where You Can Place Extensions)
97
+
98
+ ```
99
+ checkout/
100
+ ├── information/
101
+ │ └── contact/before, after
102
+ ├── shipping/
103
+ │ └── address/before, after
104
+ ├── payment/ ← PAYMENT STEP
105
+ │ └── method-list/before, after ⚠️ Plus Only
106
+ ├── order-summary/
107
+ │ └── line-item/before, after
108
+ └── thank-you/
109
+ └── customer-information/before, after
110
+ ```
111
+
112
+ ### Sandboxed Environment Restrictions
113
+
114
+ | What You CAN Do | What You CANNOT Do |
115
+ |-----------------|-------------------|
116
+ | Display Shopify components | Inject custom HTML |
117
+ | Access checkout data via APIs | Access DOM directly |
118
+ | Show banners/messages | Run arbitrary JavaScript |
119
+ | Collect additional form data | Override CSS/branding |
120
+ | Validate checkout fields | Access payment card data |
121
+
122
+ ---
123
+
124
+ ## 3. checkout.liquid (Deprecated)
125
+
126
+ ### Historical Context
127
+
128
+ `checkout.liquid` was Shopify's original method for checkout customization, available only to Shopify Plus merchants. It allowed:
129
+
130
+ - Custom JavaScript injection
131
+ - DOM manipulation after render
132
+ - Custom CSS styling
133
+ - Third-party script tags
134
+
135
+ ### Deprecation Timeline
136
+
137
+ | Milestone | Date | Impact |
138
+ |-----------|------|--------|
139
+ | Information/Shipping/Payment steps removed | August 13, 2024 | ❌ No longer editable |
140
+ | Thank You/Order Status deprecated | August 28, 2025 | ⚠️ Sunsetting |
141
+ | Shopify Scripts end | June 30, 2026 | End of legacy customization |
142
+
143
+ ### Why It Was Deprecated
144
+
145
+ 1. **Security risks** from arbitrary code injection
146
+ 2. **Performance issues** from unoptimized scripts
147
+ 3. **Maintenance burden** for Shopify
148
+ 4. **Inconsistent merchant experiences**
149
+
150
+ ### Current Status
151
+
152
+ > **checkout.liquid is effectively DEAD for payment customization.**
153
+ >
154
+ > Any existing integrations using checkout.liquid for custom payment forms will stop working and cannot be recreated with Checkout Extensibility.
155
+
156
+ ---
157
+
158
+ ## 4. Payment Extensions Program
159
+
160
+ ### Overview
161
+
162
+ Shopify's Payment Extensions Program is the **ONLY official way** to add custom payment methods to Shopify checkout.
163
+
164
+ ### Eligibility Requirements
165
+
166
+ ```
167
+ ┌─────────────────────────────────────────────────────────────┐
168
+ │ PAYMENT PARTNER REQUIREMENTS │
169
+ ├─────────────────────────────────────────────────────────────┤
170
+ │ 1. Apply to become a Shopify Partner │
171
+ │ 2. Submit Payment Extension application │
172
+ │ 3. Pass security review (PCI compliance, etc.) │
173
+ │ 4. Sign revenue share agreement │
174
+ │ 5. Meet technical requirements │
175
+ │ 6. Pass Shopify's approval process │
176
+ │ 7. Ongoing compliance and review │
177
+ └─────────────────────────────────────────────────────────────┘
178
+ ```
179
+
180
+ ### Payment Extension Types
181
+
182
+ | Type | Description | Use Case |
183
+ |------|-------------|----------|
184
+ | **Credit Card** | Standard card processing with 3DS | Stripe, Braintree competitors |
185
+ | **Credit Card with UI** | Custom fields (installments, etc.) | Affirm, Klarna |
186
+ | **Custom Credit Card** | Hosted fields for processing | Specialized card processors |
187
+ | **Alternative Payments** | Non-card methods | Crypto, bank transfers, BNPL |
188
+ | **Redeemables** | Gift cards, store credit | Third-party gift card providers |
189
+ | **Offsite** | Redirect to external payment page | PayPal, redirect-based flows |
190
+
191
+ ### Approval Process
192
+
193
+ 1. **Application** - Submit through Shopify Partners portal
194
+ 2. **Technical Review** - API integration, security audit
195
+ 3. **Compliance Check** - PCI-DSS, regional regulations
196
+ 4. **Test Integration** - Sandbox testing with Shopify
197
+ 5. **Legal Agreement** - Revenue share, terms of service
198
+ 6. **Launch Review** - Final approval before going live
199
+ 7. **Ongoing Monitoring** - Continuous compliance
200
+
201
+ **Timeline**: This process typically takes **3-6 months minimum**.
202
+
203
+ ---
204
+
205
+ ## 5. Technical Limitations & Restrictions
206
+
207
+ ### Checkout UI Extensions Cannot:
208
+
209
+ ```javascript
210
+ // ❌ CANNOT inject custom HTML
211
+ <div class="my-payment-form">...</div>
212
+
213
+ // ❌ CANNOT run arbitrary scripts
214
+ <script src="https://cdn.one.ooo/drop-in.js"></script>
215
+
216
+ // ❌ CANNOT access DOM
217
+ document.querySelector('.payment-section').appendChild(myElement);
218
+
219
+ // ❌ CANNOT override styles
220
+ .shopify-payment-button { display: none; }
221
+
222
+ // ❌ CANNOT access payment card data
223
+ const cardNumber = getCardNumber(); // Blocked by sandbox
224
+
225
+ // ❌ CANNOT render Web Components
226
+ <one-payment amount="5000"></one-payment>
227
+ ```
228
+
229
+ ### Why This Matters for Drop-in Integration
230
+
231
+ The One Payments Drop-in element is a **Web Component** (`<one-payment>`) that requires:
232
+
233
+ 1. ✅ JavaScript execution → ❌ **Blocked in sandbox**
234
+ 2. ✅ DOM access → ❌ **Blocked in sandbox**
235
+ 3. ✅ Custom HTML rendering → ❌ **Blocked in sandbox**
236
+ 4. ✅ External script loading → ❌ **Blocked in sandbox**
237
+ 5. ✅ CSS styling → ❌ **Cannot override**
238
+ 6. ✅ Payment card collection → ❌ **Blocked for security**
239
+
240
+ ### Shopify's Security Model
241
+
242
+ ```
243
+ ┌─────────────────────────────────────────────────────────────┐
244
+ │ SHOPIFY CHECKOUT │
245
+ │ ┌─────────────────────────────────────────────────────┐ │
246
+ │ │ ISOLATED SANDBOX │ │
247
+ │ │ ┌─────────────────┐ │ │
248
+ │ │ │ Your Extension │ ← Limited API access │ │
249
+ │ │ │ (Preact/React) │ ← No DOM access │ │
250
+ │ │ │ │ ← No external scripts │ │
251
+ │ │ └─────────────────┘ │ │
252
+ │ │ ↓ │ │
253
+ │ │ Shopify Components Only │ │
254
+ │ └─────────────────────────────────────────────────────┘ │
255
+ │ ↓ │
256
+ │ ┌─────────────────────────────────────────────────────┐ │
257
+ │ │ SHOPIFY PAYMENT PROCESSING │ │
258
+ │ │ (PCI-Compliant, Managed by Shopify) │ │
259
+ │ └─────────────────────────────────────────────────────┘ │
260
+ └─────────────────────────────────────────────────────────────┘
261
+ ```
262
+
263
+ ---
264
+
265
+ ## 6. Integration Options Analysis
266
+
267
+ ### Option 1: Become a Shopify Payments Partner
268
+
269
+ **Process**:
270
+ 1. Apply to Shopify Payments Platform
271
+ 2. Build integration using Payments Extensions API
272
+ 3. Pass security and compliance review
273
+ 4. Launch as official payment provider
274
+
275
+ **Pros**:
276
+ - Full integration into Shopify checkout
277
+ - Access to all Shopify merchants
278
+ - Official support and documentation
279
+
280
+ **Cons**:
281
+ - 3-6+ month approval process
282
+ - Significant development effort
283
+ - Revenue share with Shopify
284
+ - Ongoing compliance requirements
285
+ - Must rebuild Drop-in as Shopify-native extension
286
+
287
+ **Effort**: ⭐⭐⭐⭐⭐ (Very High)
288
+
289
+ ---
290
+
291
+ ### Option 2: Headless Commerce (Storefront API)
292
+
293
+ **Process**:
294
+ 1. Merchant builds custom storefront (Next.js, Gatsby, etc.)
295
+ 2. Uses Shopify Storefront API for products/cart
296
+ 3. Implements custom checkout with One Payments Drop-in
297
+ 4. Handles order creation via API
298
+
299
+ **Pros**:
300
+ - Full control over checkout experience
301
+ - Can use Drop-in element directly
302
+ - No Shopify approval needed
303
+
304
+ **Cons**:
305
+ - Requires complete custom storefront build
306
+ - Merchant loses Shopify's native checkout benefits
307
+ - More complex order management
308
+ - Not suitable for typical Shopify merchants
309
+
310
+ **Effort**: ⭐⭐⭐⭐ (High)
311
+
312
+ ---
313
+
314
+ ### Option 3: Post-Purchase Integration
315
+
316
+ **Process**:
317
+ 1. Use Shopify checkout for initial purchase
318
+ 2. Offer additional products/services post-purchase
319
+ 3. Integrate Drop-in on thank-you page or separate page
320
+
321
+ **Pros**:
322
+ - No checkout modification needed
323
+ - Works on all Shopify plans
324
+ - Can use Drop-in element freely
325
+
326
+ **Cons**:
327
+ - Not a primary payment method
328
+ - Limited use case (upsells, subscriptions)
329
+ - Doesn't replace Shopify checkout
330
+
331
+ **Effort**: ⭐⭐ (Low-Medium)
332
+
333
+ ---
334
+
335
+ ### Option 4: External Checkout Page
336
+
337
+ **Process**:
338
+ 1. Merchant adds "Buy with One" button to product pages
339
+ 2. Redirects to external checkout hosted by you
340
+ 3. Processes payment with Drop-in
341
+ 4. Creates order in Shopify via API
342
+
343
+ **Pros**:
344
+ - Full control over payment experience
345
+ - Can use Drop-in element
346
+ - Works on all Shopify plans
347
+
348
+ **Cons**:
349
+ - Customers leave Shopify site
350
+ - Trust/conversion concerns
351
+ - Complex order syncing
352
+ - May violate Shopify TOS
353
+
354
+ **Effort**: ⭐⭐⭐ (Medium)
355
+
356
+ ---
357
+
358
+ ## 7. Feasibility for One Payments Drop-in
359
+
360
+ ### Can Regular Merchants Integrate the Drop-in?
361
+
362
+ **NO.** Regular Shopify merchants cannot:
363
+ - Add custom JavaScript to checkout
364
+ - Render Web Components in checkout
365
+ - Replace Shopify's payment methods
366
+ - Modify the checkout DOM
367
+
368
+ ### Can Shopify Plus Merchants Integrate?
369
+
370
+ **VERY LIMITED.** Even with Shopify Plus:
371
+ - Checkout UI Extensions are sandboxed
372
+ - Cannot render arbitrary HTML/Web Components
373
+ - Cannot inject external scripts
374
+ - Cannot access payment card data directly
375
+
376
+ The Drop-in element **cannot be used as-is** in Shopify checkout.
377
+
378
+ ### What Would Be Required?
379
+
380
+ To integrate One Payments into Shopify checkout, you would need to:
381
+
382
+ 1. **Become a Shopify Payments Partner** (3-6+ months)
383
+ 2. **Rebuild the integration** using Shopify's Payments Extensions API
384
+ 3. **Use Shopify's component system** instead of Web Components
385
+ 4. **Handle payments through Shopify's Payment resource**
386
+ 5. **Pass security and compliance review**
387
+
388
+ ---
389
+
390
+ ## 8. Alternative Approaches
391
+
392
+ ### A. Shopify App with Separate Payment Page
393
+
394
+ ```
395
+ Customer Journey:
396
+ ┌──────────┐ ┌──────────┐ ┌──────────────┐ ┌──────────┐
397
+ │ Shopify │ -> │ Cart │ -> │ One Payments │ -> │ Order │
398
+ │ Store │ │ Page │ │ Drop-in │ │ Complete │
399
+ └──────────┘ └──────────┘ │ (External) │ └──────────┘
400
+ └──────────────┘
401
+ ```
402
+
403
+ Build a Shopify App that:
404
+ 1. Adds "Pay with One" button to cart
405
+ 2. Redirects to hosted checkout page with Drop-in
406
+ 3. Processes payment
407
+ 4. Creates draft order in Shopify
408
+ 5. Redirects back to thank-you page
409
+
410
+ ### B. Subscription/Recurring Payments
411
+
412
+ For merchants selling subscriptions:
413
+ 1. Initial purchase through Shopify
414
+ 2. Recurring payments via One Payments
415
+ 3. Customer portal with Drop-in for payment management
416
+
417
+ ### C. B2B / Invoice Payments
418
+
419
+ For B2B merchants:
420
+ 1. Create invoices in Shopify
421
+ 2. Send payment links with Drop-in
422
+ 3. Payment collection outside checkout
423
+
424
+ ### D. Hybrid: Shopify + Custom Landing Pages
425
+
426
+ 1. Use Shopify for catalog and cart
427
+ 2. Specific products have "custom checkout" option
428
+ 3. Those products use external page with Drop-in
429
+ 4. Regular products use Shopify checkout
430
+
431
+ ---
432
+
433
+ ## 9. Recommendations
434
+
435
+ ### For One Payments Team
436
+
437
+ | Priority | Action | Timeline | Effort |
438
+ |----------|--------|----------|--------|
439
+ | 1 | Apply to Shopify Payments Partner Program | Start immediately | Low (application) |
440
+ | 2 | Build proof-of-concept Headless integration | 2-4 weeks | Medium |
441
+ | 3 | Create Shopify App for external checkout flow | 4-6 weeks | Medium |
442
+ | 4 | Document alternative integration patterns | 1-2 weeks | Low |
443
+ | 5 | Develop Shopify-native extension (if approved) | 3-6 months | Very High |
444
+
445
+ ### For Merchants Wanting to Use One Payments
446
+
447
+ | Merchant Type | Recommended Approach |
448
+ |---------------|---------------------|
449
+ | Small Business | Use external checkout page or wait for official integration |
450
+ | Shopify Plus | Consider headless approach for full control |
451
+ | Enterprise | Contact One Payments for custom solution |
452
+ | Subscription Business | Use Drop-in for recurring payment management |
453
+
454
+ ### Realistic Timeline for Full Integration
455
+
456
+ ```
457
+ Month 1-2: Apply to Payments Partner Program
458
+ Month 2-4: Security review and compliance preparation
459
+ Month 4-6: Technical integration development
460
+ Month 6-8: Testing and approval process
461
+ Month 8-10: Soft launch with select merchants
462
+ Month 10-12: Full public availability
463
+ ```
464
+
465
+ ---
466
+
467
+ ## Conclusion
468
+
469
+ **Direct integration of the One Payments Drop-in element into Shopify's native checkout is NOT currently possible** for regular merchants or even Shopify Plus merchants without becoming an approved Shopify Payments Partner.
470
+
471
+ The checkout environment is intentionally locked down for security and compliance reasons. Any custom payment integration must go through Shopify's official Payments Platform program.
472
+
473
+ ### Immediate Actions
474
+
475
+ 1. **Do NOT promise** Shopify checkout integration to merchants
476
+ 2. **Apply** to Shopify Payments Partner Program if serious about this market
477
+ 3. **Offer alternatives** like external checkout pages or headless solutions
478
+ 4. **Document** the limitations clearly for sales/support teams
479
+
480
+ ---
481
+
482
+ ## References & Sources
483
+
484
+ - [Shopify Checkout UI Extensions](https://shopify.dev/docs/api/checkout-ui-extensions)
485
+ - [Shopify Payments Extensions](https://shopify.dev/docs/apps/build/payments)
486
+ - [checkout.liquid Deprecation](https://shopify.dev/docs/storefronts/themes/architecture/layouts/checkout-liquid)
487
+ - [Checkout Extensibility Overview](https://www.shopify.com/plus/upgrading-to-checkout-extensibility)
488
+ - [Shopify Checkout Customization Guide](https://help.shopify.com/en/manual/checkout-settings/checkout-customization)
489
+ - [Payment Method Customizations](https://help.shopify.com/en/manual/checkout-settings/checkout-blocks/customizations/payment-methods)
490
+ - [Shopify Community: Custom Payment Gateway](https://community.shopify.com/c/payments-shipping-and/how-to-setup-a-custom-payment-gateway-in-2023/m-p/2082131)
491
+
492
+ ---
493
+
494
+ *Document created: December 3, 2024*
495
+ *Last updated: December 3, 2024*
496
+ *Version: 1.0*