PHP - PayPal 集成

你好,有抱负的开发者们!今天,我们将踏上一段激动人心的旅程,探索使用 PHP 进行 PayPal 集成的世界。作为你友好的计算机科学老师,我将在每一步中引导你。如果你是编程新手,不用担心——我们将从基础开始,逐步学习。所以,拿起一杯咖啡,让我们一起深入探讨!

PHP - Paypal Integration

理解 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. 导航到仪表板并创建一个新应用。
  3. 创建后,你会看到你的客户端 ID 和密钥。这些非常重要,所以要妥善保管!

现在,让我们将这些凭据添加到我们的 config/paypal.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 上下文。
  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() 使用配置文件中的凭据设置并返回 PayPal API 上下文
createPayPalPayment($amount) 为指定金额创建一个新的 PayPal 支付

Credits: Image by storyset