← Back to the catalog

Skill · Version 1.0.0

PayPal and Braintree integration

Connects server-controlled orders, captures and subscription events to a coherent payment and dispute lifecycle.

paypal-braintree-integration

See how it helps

When is it useful?

Use when implementing PayPal checkout or Braintree recurring billing.

What does it help you do?

  • Separates server order creation, buyer approval and server capture.
  • Maps subscription events to actual entitlements and billing states.
  • Verifies webhooks and tracks refunds or disputes explicitly.

Try asking this

Implement PayPal checkout in a sandbox and handle buyer approval followed by an uncertain capture response. After buyer approval, lose the capture response and query its status. Grant the purchase only from verified capture evidence, without issuing a second capture blindly.

Detailed documentation

Read the skill’s original instructions, examples and checks in their authored language.

Details…Show less

PayPal & Braintree Integration

PayPal and Braintree flows require strict separation between client-side approval and server-side authorization/capture. Never treat a client-side onApprove callback alone as a completed payment.

1. PayPal Orders v2 (One-Time Checkout)

Follow the authoritative two-step server-orchestrated flow:

  1. Create Order on Server (POST /v2/checkout/orders):
    • Client requests checkout for a server-known item/plan.
    • Server computes amount (currency_code + string value formatted to the currency's exact decimal support, e.g., "29.99" for USD/EUR, or integer string "5000" for HUF and JPY — PayPal rejects decimals for HUF!), sets intent: "CAPTURE", attaches custom_id / invoice_id (for deduplication), and returns the PayPal orderID.
  2. Buyer Approves in PayPal JS SDK:
    • The buyer approves the order in the PayPal button modal/redirect, triggering client onApprove({ orderID }).
  3. Capture Order on Server (POST /v2/checkout/orders/{id}/capture):
    • Client calls your backend with orderID; your backend calls PayPal's capture endpoint with a PayPal-Request-Id idempotency header.
    • Inspect purchase_units[0].payments.captures[0].status:
      • COMPLETED: payment settled; record capture ID and grant entitlement.
      • PENDING: review status_details.reason (e.g., ECHECK, regulatory review); keep local payment processing until webhook confirms completion.
      • DECLINED / FAILED (or INSTRUMENT_DECLINED error): return recoverable error so the client SDK can call actions.restart() to pick another funding source.

2. PayPal Subscriptions & Braintree Recurring Billing

  • PayPal Subscriptions (/v1/billing/subscriptions):
    • Link Product -> Billing Plan -> Subscription (custom_id set to your internal tenant/user ID).
    • Track lifecycle via webhooks: BILLING.SUBSCRIPTION.ACTIVATED, PAYMENT.SALE.COMPLETED (actual recurring payment settlement), BILLING.SUBSCRIPTION.PAYMENT.FAILED, BILLING.SUBSCRIPTION.SUSPENDED and BILLING.SUBSCRIPTION.CANCELLED.
    • Note that BILLING.SUBSCRIPTION.CREATED or client approval does not mean the first payment settled — verify subscription status and PAYMENT.SALE.COMPLETED.
  • Braintree (Hosted Fields / Drop-in):
    • Generate clientToken on the server; client exchanges payment details for a single-use paymentMethodNonce.
    • Pass paymentMethodNonce and 3DS verification data to gateway.transaction.sale() or gateway.subscription.create() on the server.
    • Distinguish authorized vs. submitted_for_settlement vs. settled vs. settlement_declined.

3. Webhook Verification & Dispute Lifecycle

  • PayPal Webhook Verification: verify incoming webhooks by calling POST /v1/notifications/verify-webhook-signature (passing transmission_id, transmission_time, cert_url, auth_algo, transmission_sig, webhook_id and the raw event) or cryptographic certificate verification, and deduplicate by event.id.
  • Braintree Webhook Parsing: use gateway.webhookNotification.parse(bt_signature, bt_payload) and deduplicate by notification timestamp + kind + subject ID.
  • Refunds & Disputes: handle PAYMENT.CAPTURE.REFUNDED, PAYMENT.CAPTURE.REVERSED and CUSTOMER.DISPUTE.CREATED / RESOLVED to freeze or adjust entitlements and record audit ledger entries.

Included files 1

  • SKILL.md

About this skill package

paypal-braintree-integration

paypal-braintree-integration: Build billing and payment flows that handle subscriptions, retries, refunds and reconciliation without losing financial state.

Details…Show less

paypal-braintree-integration

paypal-braintree-integration: Build billing and payment flows that handle subscriptions, retries, refunds and reconciliation without losing financial state.

Includes the complete skill and its supporting files (1 files). The exact authored scope is preserved below.

Original skill description (source language)

Use when implementing PayPal Orders v2, PayPal Subscriptions, Braintree Drop-in/Hosted Fields, server-side capture, webhook verification and dispute handling.

Install the skill, review its source and trust settings, then enable it for the relevant project or agent.

Requirements

  • Orqestria installed on your computer.