Skip to content

Storefront Interactions With PayPal

lat9 edited this page Jan 16, 2024 · 2 revisions

What the Customer Sees

After you have configured and enabled the paypalr payment module, the module displays its selection(s) during the payment phase of the checkout process, either on the checkout_payment (3-page checkout) or checkout_one (OPC) page.

PayPal Selected Credit Card Selected
image image

If the customer chooses to pay via their PayPal Wallet, the payment module sends the customer to PayPal on the transition from the payment to confirmation phase of the checkout process. Once the customer confirms their order, the order is recorded at PayPal during the checkout_process page's processing.

If the customer chooses to pay via credit card, the card-related information is checked for "sanity" on the transition from the payment to confirmation phase of the checkout process. Upon order confirmation, the order is recorded at PayPal during the checkout_process page's processing. If the credit card's processor required 3DS validation, the customer will be sent to that validation page prior to the order being recorded.

Order-Creation Sequences

These sections represent the sequencing between the paypalr payment module, PayPal, the payment module's "webhook" and (optionally for credit card orders) a 3DS-validation link.

PayPal Wallet Flow

sequenceDiagram
    participant paypalr
    participant PayPal
    participant webhook

    rect rgb(191, 223, 255)
    Note over paypalr,PayPal: Zen Cart Checkout, Confirmation Phase
    paypalr->>+PayPal: createOrder(paypal) request
    PayPal-->>-paypalr: createOrder(paypal) response
    Note over PayPal: Uses PAY_NOW instead of CONTINUE<br>if using OPC and not<br>in the list of payment<br>modules requiring confirmation
    paypalr->>+PayPal: confirmPaymentChoice request
    PayPal-->>-webhook: return_url = 'return'
    activate webhook
    webhook-->>-paypalr: Customer has chosen payment method
    end
    rect rgb(152, 251, 152)
    Note over paypalr,PayPal: Zen Cart Checkout, Process Phase
    paypalr->>+PayPal: captureOrAuthorizePayment request
    PayPal-->>-paypalr: captureOrAuthorizePayment response
    end
Loading

PayPal Credit-Card Flow (no 3DS)

sequenceDiagram
    participant paypalr
    participant PayPal
    participant webhook

    rect rgb(191, 223, 255)
    Note over paypalr,PayPal: Zen Cart Checkout, Confirmation Phase
    paypalr->>+PayPal: createOrder(paypal) request
    PayPal-->>-paypalr: createOrder(paypal) response
    end
    rect rgb(152, 251, 152)
    Note over paypalr,PayPal: Zen Cart Checkout, Process Phase
    paypalr->>+PayPal: createOrder(card) request
    PayPal-->>-paypalr: createOrder(card) response
    end
Loading

PayPal Credit-Card Flow (3DS required)

sequenceDiagram
    participant paypalr
    participant PayPal
    participant 3DS
    participant webhook

    rect rgb(191, 223, 255)
    Note over paypalr,PayPal: Zen Cart Checkout, Confirmation Phase
    paypalr->>+PayPal: createOrder(paypal) request
    PayPal-->>-paypalr: createOrder(paypal) response
    end
    rect rgb(152, 251, 152)
    Note over paypalr,PayPal: Zen Cart Checkout, Process Phase
    paypalr->>+PayPal: createOrder(card) request
    PayPal-->>-paypalr: createOrder(card) response
    paypalr->>+3DS: 3DS Authorization request
    activate 3DS
    3DS-->>+webhook: return_url = '3ds_return'
    deactivate 3DS
    activate webhook
    webhook-->>-paypalr: Successful 3DS response
    paypalr->>+PayPal: captureOrAuthorizePayment request
    PayPal-->>-paypalr: captureOrAuthorizePayment response
    end
Loading
Clone this wiki locally