cloudcogsio/paypal-rest

PayPal REST API的PHP SDK,兼容Omnipay网关

dev-master 2023-01-31 11:13 UTC

This package is auto-updated.

Last update: 2024-09-13 02:27:40 UTC


README

本包旨在实现PayPal REST API,作为一个兼容Omnipay的网关。Omnipay的基本网关操作将得到支持,但也可以直接使用PayPal端点。

PayPal REST API覆盖范围

只计划以下API。

勾选的API已完成。未勾选的API正在开发中。

  • 添加跟踪
  • 目录产品
  • 争议
  • 发票
  • 订单
  • 付款
  • 支付
  • 订阅
  • Webhooks

通过Composer安装

$ composer require cloudcogsio/paypal-rest

用法

1. 实例化网关类

主要网关类实例化方式与Omnipay网关相同。

use Omnipay\Omnipay;

$gateway = Omnipay::create(\Cloudcogs\PayPal\RestGateway::class);
$gateway
    ->setTestMode(true)
    ->setClientId(#YOUR PAYPAL CLIENT ID)
    ->setSecret(#YOUR PAYPAL SECRET);
2. 生成访问令牌。
$accessToken = $gateway->GenerateAccessToken()->send();

注意,访问令牌此时已存储在网关中。

  • 访问令牌的管理尚未包含在本库中。
  • 您应实现自己的方法来保存和重用访问令牌,直到其过期,以避免每次API调用都生成令牌,从而触碰到PayPal的查询限制。

您可以通过以下方式将先前检索到的访问令牌设置在网关中

$gateway->setAccessToken($accessToken);
3. 开始进行API调用
/**
 * List products
 * https://developer.paypal.com/docs/api/catalog-products/v1/#products_list
 */

// You can pass API parameters directly
$ListProducts = $gateway->ListProducts(['pageNumber' => 1, 'pageSize' => 5]);

// Alternatively, use the API methods (preferred)
$ListProducts = $gateway->ListProducts();
$ListProducts
    ->setPageNumber(1)
    ->setPageSize(5);

$APIResponse = $ListProducts->send();

// Check for a successful response
if($APIResponse->isSuccessful())
{
    $productList = $APIResponse->getProductList();
    
    // You can iterate over collections
    while(($product = $productList->current()) != null)
    {
        print_r($product);
        $productList->next();
    }
} 

// Handle errors
else {
    $error = $APIResponse->getPayPalError();
    print_r($error);
}

支持

如果您在使用Omnipay时遇到一般问题,我们建议在Stack Overflow上发帖。请确保添加omnipay标签,以便更容易找到。

如果您认为您已发现一个bug,请通过GitHub问题跟踪器报告,或者更好的方法是,分支库并提交一个pull request。