APP对接Paypal支付技术说明
2024-09-06 13:54

对接 PayPal 支付系统到你的 APP 包括以下几个步骤。你可以使用 PayPal 提供的 SDK 或者直接调用 API 来实现支付功能。以下是技术对接的详细说明:


 1. 创建 PayPal 账户

- 注册开发者账户: 访问 [PayPal Developer Portal](https://developer.paypal.com/) 并注册一个开发者账户。

- 创建应用: 登录后,在 PayPal 开发者控制台中创建一个应用。这个应用会为你生成 Client ID 和 Secret Key,用于 API 调用和集成。


 2. 获取 API 凭证

- 沙盒模式和生产模式: 在开发和测试过程中使用 Sandbox 环境。进入 PayPal 开发者控制台,获取沙盒和生产环境的 Client ID 和 Secret Key。


 3. 集成 PayPal SDK

根据你的 APP 技术栈选择相应的 SDK 进行集成:


 a. Android 集成 PayPal

- 依赖库配置:

  在 `build.gradle` 中添加 PayPal SDK 依赖:

  groovy

  implementation 'com.paypal.checkout:android-sdk:0.9.1'

  

- 初始化 PayPal SDK:

  java

  CheckoutConfig config = new CheckoutConfig(

    getApplication(),

    "YOUR_CLIENT_ID",

    Environment.SANDBOX,  // 或 Environment.LIVE

    "com.yourcompany.yourapp://paypalpay",

    CurrencyCode.USD,

    UserAction.PAY_NOW

  );

  PayPalCheckout.setConfig(config);

  

- 创建订单并处理支付:

  java

  PayPalCheckout.start(new CreateOrder() {

      @Override

      public void create(OrderActions orderActions) {

          List<PurchaseUnit> purchaseUnits = new ArrayList<>();

          purchaseUnits.add(

              new PurchaseUnit.Builder()

                  .amount(new Amount.Builder()

                      .currencyCode(CurrencyCode.USD)

                      .value("10.00")

                      .build())

                  .build());

          orderActions.create(new OrderRequest.Builder()

              .intent(OrderIntent.CAPTURE)

              .purchaseUnits(purchaseUnits)

              .build());

      }

  });

  

- 处理支付结果:

  java

  PayPalCheckout.addOnCompleteListener(new OnCompleteListener() {

      @Override

      public void onComplete(Order order) {

          if (order.getStatus().equals(OrderStatus.COMPLETED)) {

              // 支付成功

          }

      }

  });

  

 b. iOS 集成 PayPal

- 安装 SDK: 使用 CocoaPods 安装 PayPal SDK,在 `Podfile` 中添加:

  ruby

  pod 'PayPalCheckout'


- 初始化 PayPal SDK:

  swift

  let config = CheckoutConfig(

    clientID: "YOUR_CLIENT_ID",

    environment: .sandbox,  // 或 .live

    returnUrl: "com.yourcompany.yourapp://paypalpay",

    currencyCode: .usd,

    userAction: .payNow

  )

  PayPalCheckout.set(config: config)

  

- 创建订单:

  swift

  PayPalCheckout.start(

    createOrder: { createOrderAction in

      let order = OrderRequest(

        intent: .capture,

        purchaseUnits: [

          PurchaseUnit(

            amount: Amount(currencyCode: .usd, value: "10.00")

          )

        ]

      )

      createOrderAction.create(order: order)

    }

  )

  

- 处理支付结果:

  swift

  PayPalCheckout.onApprove = { approval in

    approval.actions.capture { response, error in

      if let order = response {

        // 支付成功

      }

    }

  }

  

 c. 使用 REST API 集成(适用于后端)

如果你想在后端通过 REST API 实现支付流程:


- 创建订单:

  bash

  curl -v -X POST https://api-m.sandbox.paypal.com/v2/checkout/orders

    -H "Content-Type: application/json"

    -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

    -d '{

      "intent": "CAPTURE",

      "purchase_units": [

        {

          "amount": {

            "currency_code": "USD",

            "value": "10.00"

          }

        }

      ]

    }'

  

- 捕获支付:

  bash

  curl -v -X POST https://api-m.sandbox.paypal.com/v2/checkout/orders/ORDER_ID/capture

    -H "Content-Type: application/json"

    -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

  

 d. JavaScript SDK 集成(适用于 WebView 或移动 Web APP)

- 在 HTML 页面中引入 PayPal JavaScript SDK:

  html

  <script src="https://www.paypal.com/sdk/js?client-id=YOUR_CLIENT_ID"></script>


- 渲染支付按钮并处理支付:

  html

  <div id="paypal-button-container"></div>

  <script>

    paypal.Buttons({

      createOrder: function(data, actions) {

        return actions.order.create({

          purchase_units: [{

            amount: {

              value: '10.00'

            }

          }]

        });

      },

      onApprove: function(data, actions) {

        return actions.order.capture().then(function(details) {

          alert('Transaction completed by ' + details.payer.name.given_name);

        });

      }

    }).render('paypal-button-container');

  </script>


 4. 测试支付

- 沙盒模式: PayPal 提供了一些沙盒账户和虚拟信用卡,供你在测试环境中模拟支付流程。

- 错误处理: 处理支付失败、用户取消支付等场景,确保用户有良好的支付体验。


 5. 上线到生产环境

- 切换环境: 在正式上线时,将沙盒环境切换为生产环境,确保你使用生产环境的 Client ID 和 Secret Key。

- 安全性: 确保你遵循 PCI-DSS 安全标准,保护用户支付数据。


通过这些步骤,你的 APP 就可以成功集成 PayPal 支付功能。如果你有更多的定制需求,PayPal 的 API 文档中有详细的参数和功能说明,可以根据具体场景进行调整。