如何在Android中整合PayPal SDK?


開發者可以輕鬆地將PayPal SDK整合到他們的Android應用程式中,以實現安全便捷的支付處理。使用PayPal SDK,使用者可以使用PayPal賬戶、信用卡或其他支援的支付方式進行支付。整合過程包括使用必要的配置初始化SDK,建立支付物件以及管理支付結果。透過利用PayPal SDK的廣泛文件和強大的功能,開發者可以增強其Android應用程式,實現無縫可靠的支付功能,從而確保使用者交易順利進行。

PayPal SDK

PayPal SDK,也稱為軟體開發工具包,提供了一系列工具、庫和資源,旨在簡化PayPal支付服務與各種應用程式的整合。這個全面的軟體包為開發者提供了API和預構建的UI元件,可以將PayPal的安全支付處理功能無縫整合到他們的軟體中。值得注意的是,它包含對Android應用程式的規定。

PayPal SDK是一個多功能工具,可以處理各種支付方式。它使開發者能夠輕鬆建立、處理和管理支付。憑藉其強大的功能,它能夠檢索詳細的支付資訊,並方便地處理交易結果。

開發者可以透過整合PayPal SDK來極大地增強他們的應用程式。這種整合提供了可靠、可信和廣泛接受的支付功能。因此,它改善了使用者體驗並促進了無縫交易。

方法

要在Android應用程式中整合PayPal SDK,您可以遵循以下兩種不同的方法

  • 使用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資料夾中。在您的應用程式級build.gradle檔案中新增JAR檔案作為依賴項並同步專案,將確保PayPal SDK包含在您的專案中。之後,按照方法1繼續初始化SDK並實現支付功能。此方法允許更精細地控制整合過程,但確實需要手動處理SDK檔案。

演算法

  • 從PayPal開發者網站下載PayPal Android SDK。

  • 解壓縮SDK檔案並找到必要的JAR檔案。

  • 將JAR檔案複製到專案的libs資料夾中。

  • 在您的應用程式級build.gradle檔案中新增JAR檔案作為依賴項。

  • 同步專案以包含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的全面工具和資源,開發者可以使用值得信賴且廣泛接受的支付解決方案來增強其應用程式。

更新於:2023年7月27日

406 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.