如何在 Android 中集成 PayPal SDK?

javaobject oriented programmingprogramming更新于 2024/6/8 17:19:00

开发人员可以轻松地将 PayPal SDK 集成到他们的 Android 应用程序中,以实现安全便捷的支付处理。借助 PayPal SDK,用户可以灵活地使用 PayPal 帐户、信用卡或其他支持的方法进行支付。集成涉及使用所需配置初始化 SDK、创建支付对象和管理支付结果。通过利用 PayPal SDK 的大量文档和强大功能,开发人员可以通过无缝可靠的支付功能增强他们的 Android 应用程序,以实现顺畅的用户交易。

PayPal SDK

PayPal SDK,也称为软件开发工具包,提供一系列工具、库和资源,旨在简化 PayPal 支付服务与各种应用程序的集成。这个综合包为开发人员提供了 API 和预构建的 UI 组件,可将 PayPal 的安全支付处理功能无缝整合到他们的软件中。值得注意的是,它包括适用于 Android 应用程序的规定。

PayPal SDK 是一种多功能工具,可处理各种支付方式。它使开发人员能够轻松创建、处理和管理付款。凭借其强大的功能,它可以检索详细的付款信息并促进交易结果的无缝处理。

开发人员可以通过集成 PayPal SDK 大大增强他们的应用程序。此集成提供了可靠、可信且被广泛接受的支付功能。因此,它改善了用户体验并促进了无缝交易。

方法

要将 PayPal SDK 集成到 Android 应用程序中,您可以遵循以下两种不同的方法:

  • 使用 Gradle 依赖项

  • 手动集成

使用 Gradle 依赖项

此方法涉及将 PayPal SDK 依赖项添加到您的应用程序级 build.gradle 文件中。通过包含依赖项并同步项目,可以获取必要的 PayPal SDK 文件。然后,通过提供 PayPal 配置(包括客户端 ID 和环境)在应用程序类或活动中初始化 PayPal SDK。初始化后,您可以使用 PayPal SDK 在 Android 应用中实现付款流程。

算法

  • 在应用级 build.gradle 文件中添加 PayPal SDK 依赖项。

  • 同步项目以获取 PayPal SDK 文件。

  • 通过提供 PayPal 配置(包括客户端 ID 和环境)初始化 PayPal SDK。

  • 启动 PayPal 服务以在应用中启用付款处理。

示例

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.paypal.android.sdk.payments.PaymentActivity;
import com.paypal.android.sdk.payments.PaymentConfirmation;
import com.paypal.android.sdk.payments.PayPalConfiguration;
import com.paypal.android.sdk.payments.PayPalPayment;
import com.paypal.android.sdk.payments.PayPalService;
import com.paypal.android.sdk.payments.PaymentIntent;

import java.math.BigDecimal;

public class MainActivity extends AppCompatActivity {

   private static final int PAYPAL_REQUEST_CODE = 123;
   private static final String TAG = "MainActivity";

   // PayPal configuration
   private static PayPalConfiguration paypalConfig = new PayPalConfiguration()
         .environment(PayPalConfiguration.ENVIRONMENT_SANDBOX) // Use sandbox for testing
         .clientId("YOUR_CLIENT_ID"); // Replace with your own PayPal client ID

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      // Start PayPal service
      Intent intent = new Intent(this, PayPalService.class);
      intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, paypalConfig);
      startService(intent);

      // Perform payment
      makePayment();
   }

   private void makePayment() {
      PayPalPayment payment = new PayPalPayment(new BigDecimal("10.0"), "USD", "Test payment",
            PayPalPayment.PAYMENT_INTENT_SALE);

      Intent intent = new Intent(this, PaymentActivity.class);
      intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, paypalConfig);
      intent.putExtra(PaymentActivity.EXTRA_PAYMENT, payment);
      startActivityForResult(intent, PAYPAL_REQUEST_CODE);
   }

   @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);

      if (requestCode == PAYPAL_REQUEST_CODE) {
         if (resultCode == RESULT_OK) {
            PaymentConfirmation confirmation = data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);
            if (confirmation != null) {
               String paymentId = confirmation.getProofOfPayment().getPaymentId();
               String state = confirmation.getProofOfPayment().getState();
               
               // Handle successful payment
               Toast.makeText(this, "Payment successful. Payment ID: " + paymentId, Toast.LENGTH_SHORT).show();
            }
         } else if (resultCode == RESULT_CANCELED) {
            // Handle canceled payment
            Toast.makeText(this, "Payment canceled.", Toast.LENGTH_SHORT).show();
         } else if (resultCode == PaymentActivity.RESULT_EXTRAS_INVALID) {
            // Invalid payment or configuration
            Toast.makeText(this, "Invalid payment or configuration.", Toast.LENGTH_SHORT).show();
         }
      }
   }

   @Override
   public void onDestroy() {
      super.onDestroy();

      // Stop PayPal service
      stopService(new Intent(this, PayPalService.class));
   }
}

输出

手动集成

在此方法中,您可以从 PayPal 开发者网站手动下载 PayPal Android SDK。下载后,提取 SDK 文件并将相关 JAR 文件复制到项目的 libs 文件夹中。将 JAR 文件作为依赖项添加到应用程序级 build.gradle 文件中并同步项目将确保 PayPal SDK 包含在您的项目中。之后,按照方法 1 继续初始化 SDK 并实现支付功能。此方法允许更好地控制集成过程,但需要手动处理 SDK 文件。

算法

  • 从 PayPal 开发者网站下载 PayPal Android SDK。

  • 提取 SDK 文件并找到必要的 JAR 文件。

  • 将 JAR 文件复制到项目的 libs 文件夹中。

  • 将 JAR 文件作为依赖项添加到应用级 build.gradle 文件中。

  • 同步项目以包含 PayPal SDK。

  • 通过提供 PayPal 配置(包括客户端 ID 和环境)来初始化 PayPal SDK。

  • 启动 PayPal 服务以在您的应用程序中启用支付处理。

示例

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

import com.paypal.android.sdk.payments.PayPalConfiguration;
import com.paypal.android.sdk.payments.PayPalService;
import com.paypal.android.sdk.payments.PaymentActivity;
import com.paypal.android.sdk.payments.PaymentConfirmation;

import org.json.JSONException;

import java.math.BigDecimal;

public class PayPalActivity extends Activity {

   private static final String TAG = "PayPalActivity";
   private static final int REQUEST_CODE_PAYMENT = 1;

   private static PayPalConfiguration config = new PayPalConfiguration()
         .environment(PayPalConfiguration.ENVIRONMENT_SANDBOX) // Use sandbox for testing
         .clientId("YOUR_CLIENT_ID"); // Replace with your own PayPal client ID

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_paypal);

      Intent intent = new Intent(this, PayPalService.class);
      intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, config);
      startService(intent);

      makePayment();
   }

   private void makePayment() {
      PayPalPayment payment = new PayPalPayment(new BigDecimal("10.0"), "USD", "Test payment",
            PayPalPayment.PAYMENT_INTENT_SALE);

      Intent intent = new Intent(this, PaymentActivity.class);
      intent.putExtra(PaymentActivity.EXTRA_PAYMENT, payment);
      startActivityForResult(intent, REQUEST_CODE_PAYMENT);
   }

   @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);

      if (requestCode == REQUEST_CODE_PAYMENT) {
         if (resultCode == Activity.RESULT_OK) {
            PaymentConfirmation confirm = data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);
            if (confirm != null) {
               try {
                  Log.i(TAG, confirm.toJSONObject().toString(4));
                  Log.i(TAG, confirm.getPayment().toJSONObject().toString(4));

                  // Handle successful payment
                  String paymentId = confirm.getPayment().toJSONObject().getString("id");
                  String state = confirm.getPayment().toJSONObject().getString("state");
               } catch (JSONException e) {
                  Log.e(TAG, "Error parsing PayPal payment response.", e);
               }
            }
         } else if (resultCode == Activity.RESULT_CANCELED) {
            // Handle canceled payment
            Log.i(TAG, "Payment canceled.");
         } else if (resultCode == PaymentActivity.RESULT_EXTRAS_INVALID) {
            // Invalid payment or configuration
            Log.i(TAG, "Invalid payment or configuration.");
         }
      }
   }

   @Override
   public void onDestroy() {
      stopService(new Intent(this, PayPalService.class));
      super.onDestroy();
   }
}

输出

结论

在本教程中,开发人员可以轻松地将 PayPal SDK 集成到 Android 应用程序中。这使他们能够毫不费力地整合安全且多功能的支付处理功能。通过利用 SDK 的综合工具和资源,开发人员可以使用值得信赖且被广泛接受的支付解决方案来增强他们的应用程序。


相关文章