PHP - PayPal 集成
你好,有抱负的开发者们!今天,我们将踏上一段激动人心的旅程,探索使用 PHP 进行 PayPal 集成的世界。作为你友好的计算机科学老师,我将在每一步中引导你。如果你是编程新手,不用担心——我们将从基础开始,逐步学习。所以,拿起一杯咖啡,让我们一起深入探讨!
理解 PayPal 集成
在开始编码之前,让我们先了解一下 PayPal 集成是什么。想象一下,你正在运营一个在线商店,出售手工编织的毛衣。你希望为客户提供一种轻松支付他们新购买商品的途径。这时 PayPal 就派上用场了!它就像一个数字钱包,允许进行安全的在线交易。
为什么使用 PayPal?
- 广泛信任
- 容易实施
- 支持多种货币
- 提供买家和卖家保护
既然我们知道 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
让我们分解一下:
-
config/paypal.php
:这个文件将存储我们的 PayPal API 凭据。 -
includes/paypal.php
:这将包含我们的 PayPal 集成函数。 -
public/
:这个目录将托管我们的公开可访问文件。 -
vendor/
:这是我们的依赖项所在的地方(我们将使用 Composer)。
设置 PayPal API 凭据
在开始编码之前,我们需要获取 PayPal API 凭据。这就像得到我们新 PayPal 动力汽车钥匙!
- 访问 developer.paypal.com 并创建一个账户(如果你已经有账户,请登录)。
- 导航到仪表板并创建一个新应用。
- 创建后,你会看到你的客户端 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);
}
}
让我们分解一下这里发生的事情:
- 我们包含了必要的 PayPal SDK 类。
-
getPayPalApiContext()
函数使用配置文件中的凭据设置 PayPal API 上下文。 -
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