wenson/paypal

Laravel插件,用于通过PayPal Express Checkout处理支付。可以与其他应用程序独立使用。

3.1.5 2021-05-05 01:11 UTC

README

Software License Latest Version on Packagist Total Downloads

介绍

此包基于srmklive/paypal包构建,支持合作伙伴API

此插件支持新的PayPal REST API。

PayPal API凭证

此包使用新的PayPal REST API。请参阅此链接了解如何创建API凭证

https://developer.paypal.com/docs/api/overview/

安装

  • 使用以下命令进行安装

如果您打算使用ExpressCheckout,请参阅以下READMEv2.0 & v3.0 使用新的REST API。

composer require wenson/paypal
  • 运行以下命令以发布配置
php artisan vendor:publish --provider "Srmklive\PayPal\Providers\PayPalServiceProvider"

配置

  • 安装后,您需要添加您的PayPal设置。以下是您将在 config/paypal.php 中找到的代码,您应根据需要进行更新。
return [
    'mode'    => env('PAYPAL_MODE', 'sandbox'), // Can only be 'sandbox' Or 'live'. If empty or invalid, 'live' will be used.
    'sandbox' => [
        'client_id'         => env('PAYPAL_SANDBOX_CLIENT_ID', ''),
        'client_secret'     => env('PAYPAL_SANDBOX_CLIENT_SECRET', ''),
        'app_id'            => 'APP-80W284485P519543T',
    ],
    'live' => [
        'client_id'         => env('PAYPAL_LIVE_CLIENT_ID', ''),
        'client_secret'     => env('PAYPAL_LIVE_CLIENT_SECRET', ''),
        'app_id'            => '',
    ],

    'payment_action' => env('PAYPAL_PAYMENT_ACTION', 'Sale'), // Can only be 'Sale', 'Authorization' or 'Order'
    'currency'       => env('PAYPAL_CURRENCY', 'USD'),
    'notify_url'     => env('PAYPAL_NOTIFY_URL', ''), // Change this accordingly for your application.
    'locale'         => env('PAYPAL_LOCALE', 'en_US'), // force gateway language  i.e. it_IT, es_ES, en_US ... (for express checkout only)
    'validate_ssl'   => env('PAYPAL_VALIDATE_SSL', true), // Validate SSL when creating api client.
];
  • 将其添加到 .env.example.env
#PayPal Setting & API Credentials - sandbox
PAYPAL_SANDBOX_CLIENT_ID=
PAYPAL_SANDBOX_CLIENT_SECRET=

#PayPal Setting & API Credentials - live
PAYPAL_LIVE_CLIENT_ID=
PAYPAL_LIVE_CLIENT_SECRET=

使用

以下是通过您可以访问PayPal提供者的几种方式

// Import the class namespaces first, before using it directly
use Srmklive\PayPal\Services\PayPal as PayPalClient;

$provider = new PayPalClient;

// Through facade. No need to import namespaces
$provider = PayPal::setProvider();

覆盖PayPal API配置

您可以通过调用setApiCredentials方法来覆盖PayPal API配置

$provider->setApiCredentials($config);

获取访问令牌

通过调用setApiCredentials方法设置PayPal API配置后。在执行任何API调用之前,您需要获取访问令牌

if (Cache::get('token')) {
    $provider->setAccessToken(Cache::get('token'));
} else {
    $response = $provider->getAccessToken();
    Cache::set('token', $response);
}

设置货币

默认使用的货币是USD。如果您想更改它,您可以在调用任何相应的API方法之前调用setCurrency方法来设置不同的货币

$provider->setCurrency('EUR');

初始化订单以进行结账

使用createOrder方法来初始化订单

$provider->createOrder([
  "intent"=> "CAPTURE",
  "purchase_units"=> [
      0 => [
          "amount"=> [
              "currency_code"=> "USD",
              "value"=? "100.00"
          ]
      ]
  ]
]);

此响应将包括一个订单ID,您需要将其保留,以及一个链接集合,您可以使用它将用户引导到PayPal以完成带有其付款详情的订单

当用户返回到通知URL时,您可以使用以下内容捕获订单支付

$provider->capturePaymentOrder($order_id); //order id from the createOrder step 

合作伙伴

$provider = new Paypal();

// behalf of merchant
$provider->actingAs($merchantId);

// partner referrals
$provider->partnerReferrals($trackingId);

支持

此版本支持Laravel 6或更高版本。

  • 如有任何问题,请在问题部分创建一个问题。
  • 如果您想做出贡献
    • 分支此存储库。
    • 实现您的功能。
    • 生成拉取请求。