artwl/laravel-paypal

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

v4.0.0 2021-10-12 08:52 UTC

README

此插件仅支持 Laravel 5.1 到 5.8。

简介

使用此插件,您可以在 Laravel 应用程序中处理或退款支付,并处理 PayPal 的 IPN(即时支付通知)。

此插件支持新的 PayPal REST API。

此包使用新的 PayPal REST API。有关如何创建 API 凭据的说明,请参阅以下链接

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

安装

1. 安装

composer require artwl/laravel-paypal:~4.0

2. [可选] 在 config/app.php 中添加服务提供者

Srmklive\PayPal\Providers\PayPalServiceProvider::class

3. [可选] 在 config/app.php 中添加别名

'PayPal' => Srmklive\PayPal\Facades\PayPal::class

4. 发布配置

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
#PayPal API Mode

# Values: sandbox or live (Default: live)
PAYPAL_MODE=live

#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;


public function orderCreate(){
    $provider = new PayPalClient;
    $provider->setApiCredentials(config('paypal'));
    $provider->getAccessToken();
    
    $orderResponse = $provider->createOrder([
        "intent"=> "CAPTURE",
        "purchase_units"=> [
            0 => [
                "amount"=> [
                    "currency_code"=> "HKD",
                    "value"=> "12.00"
                ]
            ]
        ]
    ]);
    
    //order create success
    if ($orderResponse["status"] == "CREATED") {
        $orderId = $orderResponse["id"];
    }
}


//notify_url and webhook url, route need except csrf
public function payResult(Request $request) {
    $data = json_decode($request->getContent(), true);
    //pay success
    if ($data["event_type"] == "CHECKOUT.ORDER.APPROVED") {
        $orderId = $data["resource"]["id"];
    }
}