Context
Project: PayPal/Venmo Integration
Priority: P0 — buyer-facing payment flow
Goal
Add PayPal and Venmo as payment methods in the SDK, following the existing wallet payment pattern (Apple Pay, Google Pay). Buyer clicks PayPal/Venmo button → popup approval → capture → transactedObserver callback.
Architecture
- PayPal JS SDK v6 loads inside secure-tags-lib messenger iframe (PCI isolation)
- New button web components render PayPal/Venmo branded buttons
- Eligibility check via
sdkInstance.findEligibleMethods() determines button visibility
- Venmo eligibility: US buyer + USD + merchant has Venmo enabled
- Transaction flows through existing
processWalletTransaction() messenger path
- PayPal popup handles buyer auth;
onApprove triggers capture via paypal-service
Repos Involved
- payment-components — new button components, wallet type constants, messenger events, exports
- secure-tags-lib — messenger iframe loads PayPal JS SDK v6, handles wallet auth, relays to WebSocket
- tags-secure-socket — extend wallet_transaction.py to route PAYPAL/VENMO to paypal-service
- paypal-service — order create, capture, client token endpoints (already exists)
Acceptance
Context
Project: PayPal/Venmo Integration
Priority: P0 — buyer-facing payment flow
Goal
Add PayPal and Venmo as payment methods in the SDK, following the existing wallet payment pattern (Apple Pay, Google Pay). Buyer clicks PayPal/Venmo button → popup approval → capture → transactedObserver callback.
Architecture
sdkInstance.findEligibleMethods()determines button visibilityprocessWalletTransaction()messenger pathonApprovetriggers capture via paypal-serviceRepos Involved
Acceptance
transactedObserverfires with standard PayTheory transaction response