以下是原文翻译成繁體中文的版本:

PHP - Paypal Integration

# PHP - PayPal 集成

Hello, 有志的開發者們!今天,我們將踏上一段令人興奮的旅程,進入 PHP 和 PayPal 集成的世界。作為你們友好的鄰居計算機科學老師,我將指導你們一步一步地完成這個過程。別擔心你們是編程新手——我們會從基礎開始,逐步學習。所以,來一杯咖啡,我們一起來深入探討!

## 了解 PayPal 集成

在我們開始編程之前,讓我們了解一下 PayPal 集成意味著什麼。想像你正在經營一家銷售手工毛衣的網上商店。你希望給客戶提供一種簡單的支付方式來購買他們舒適的新衣物。這就是 PayPal 的用處!它就像一個數字錢包,允許安全進行網上交易。

### 為什麼使用 PayPal?

1. 它廣受信任
2. 易於實現
3. 支持多種貨幣
4. 為買家和賣家提供保護

既然我們知道了 PayPal 的優點,讓我們看看如何將它集成到我們的 PHP 網站中。

## PayPal 集成文件系統

為了將 PayPal 集成到我們的 PHP 應用程序中,我們需要設置正確的文件結構。這有助於我們保持代碼的組織性和易於維護。相信我,未來的你會為現在的你這樣做而感謝!

這是我們將要使用的文件結構:

project_root/ │ ├── config/ │ └── paypal.php │ ├── includes/ │ └── paypal.php │ ├── public/ │ ├── css/ │ │ └── style.css │ ├── js/ │ │ └── script.js │ └── index.php │ └── vendor/ └── autoload.php


讓我們來分解這個結構:

1. `config/paypal.php`:這個文件將存儲我們的 PayPal API憑據。
2. `includes/paypal.php`:這將包含我們的 PayPal 集成函數。
3. `public/`:這個目錄將托管我們的公共訪問文件。
4. `vendor/`:這是我們的依賴將存在的地方(我們將使用 Composer 來管理)。

## 設置 PayPal API 憑據

在我們能夠開始編程之前,我們需要獲取我們的 PayPal API憑據。這就像獲得我們新的 PayPal 動力汽車的鑰匙!

1. 前往 developer.paypal.com 註冊賬戶(如果你已經有賬戶,則登錄)。
2. 前往 Dashboard 並創建一個新應用程序。
3. 創建後,你將看到你的 Client ID 和 Secret。這些非常重要,所以請妥善保管!

現在,讓我們將這些憑據添加到我們的 `config/paypal.php` 文件中:

```php
<?php
return [
    'client_id' => 'YOUR_CLIENT_ID_HERE',
    'client_secret' => 'YOUR_CLIENT_SECRET_HERE',
    'mode' => 'sandbox' // 實際環境請使用 'live'
];

記得將 'YOUR_CLIENT_ID_HERE' 和 'YOUR_CLIENT_SECRET_HERE' 替換為你實際的 PayPal API憑據。

安裝 PayPal SDK

現在我們已經設置好了憑據,讓我們安裝 PayPal SDK。我們將使用 Composer 來完成這項工作,這就像是一個為 PHP 库個性化購物的個人購物員。

首先,確保你已經安裝了 Composer。然後,在項目根目錄中運行以下命令:

composer require paypal/rest-api-sdk-php

這將安裝 PayPal SDK 並創建 vendor 目錄,其中包含所有必要的文件。

創建 PayPal 集成函數

現在來到有趣的部分——編寫我們的 PayPal 集成函數!我們將在 includes/paypal.php 文件中創建這些函數。

<?php
require_once __DIR__ . '/../vendor/autoload.php';
use PayPal\Api\Amount;
use PayPal\Api\Payer;
use PayPal\Api\Payment;
use PayPal\Api\RedirectUrls;
use PayPal\Api\Transaction;
use PayPal\Auth\OAuthTokenCredential;
use PayPal\Rest\ApiContext;

function getPayPalApiContext() {
    $paypalConfig = require __DIR__ . '/../config/paypal.php';

    $apiContext = new ApiContext(
        new OAuthTokenCredential(
            $paypalConfig['client_id'],
            $paypalConfig['client_secret']
        )
    );

    $apiContext->setConfig([
        'mode' => $paypalConfig['mode'],
        'log.LogEnabled' => true,
        'log.FileName' => '../PayPal.log',
        'log.LogLevel' => 'DEBUG'
    ]);

    return $apiContext;
}

function createPayPalPayment($amount) {
    $apiContext = getPayPalApiContext();

    $payer = new Payer();
    $payer->setPaymentMethod("paypal");

    $amount = new Amount();
    $amount->setCurrency("USD")
        ->setTotal($amount);

    $transaction = new Transaction();
    $transaction->setAmount($amount)
        ->setDescription("付款描述");

    $redirectUrls = new RedirectUrls();
    $redirectUrls->setReturnUrl("http://localhost/success.php")
        ->setCancelUrl("http://localhost/cancel.php");

    $payment = new Payment();
    $payment->setIntent("sale")
        ->setPayer($payer)
        ->setRedirectUrls($redirectUrls)
        ->setTransactions(array($transaction));

    try {
        $payment->create($apiContext);
        return $payment;
    } catch (Exception $ex) {
        echo "錯誤:" . $ex->getMessage();
        exit(1);
    }
}

讓我們來分解這裡發生的事情:

  1. 我們包含了必要的 PayPal SDK 類。
  2. getPayPalApiContext() 函數使用我們憑據設置 PayPal API context。
  3. createPayPalPayment() 函數創建一個新的 PayPal 付款。它設置付款人、金額、交易詳情和重定向 URL。

使用我們的 PayPal 集成

現在我們已經設置好了函數,讓我們在 public/index.php 文件中使用它們:

<?php
require_once __DIR__ . '/../includes/paypal.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $amount = $_POST['amount'];
    $payment = createPayPalPayment($amount);

    foreach($payment->getLinks() as $link) {
        if($link->getRel() == 'approval_url') {
            header("Location: ".$link->getHref());
            exit(1);
        }
    }
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>PayPal 集成範例</title>
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
    <h1>PayPal 付款範例</h1>
    <form method="post">
        <label for="amount">金額 (USD):</label>
        <input type="number" id="amount" name="amount" min="1" step="0.01" required>
        <button type="submit">使用 PayPal 付款</button>
    </form>
    <script src="js/script.js"></script>
</body>
</html>

這創建了一個簡單的表單,用戶可以輸入金額並點擊按鈕通過 PayPal 付款。當表單提交時,它會創建一個 PayPal 付款並將用戶重定向到 PayPal 完成付款。

結論

恭喜你們!你們剛剛用 PHP 創建了你們的第一個 PayPal 集成。我們今天涵蓋了很多內容,從設置文件結構到創建 PayPal 付款。記住,熟能生巧,所以不要害怕嘗試並在你們學到的基礎上建立。

在網頁開發的世界裡,像 PayPal 這樣的支付系統集成是一項寶貴的技能。這就像為你們的 PHP 火箭添加了涡轮增压——它將帶你們在編程旅程中達到新的高度!

繼續編程,繼續學習,最重要的是,玩得開心!直到下次,祝你們編程愉快!

方法 描述
getPayPalApiContext() 使用 config 文件中的憑據設置並返回 PayPal API context
createPayPalPayment($amount) 為指定金額創建一個新的 PayPal 付款

Credits: Image by storyset