neputer / laravel-paypal
这是复制的
dev-master
2022-05-19 02:46 UTC
Requires
- php: ^5.4.0|^7.0
- guzzlehttp/guzzle: 5.*|6.*
- illuminate/support: 6.*
- neputer/paypal-rest-api-sdk-php: dev-master
Requires (Dev)
- mockery/mockery: >=0.7.2
- phpunit/phpunit: 4.*
- satooshi/php-coveralls: ^0.7.0
- scrutinizer/ocular: ~1.1
This package is auto-updated.
Last update: 2024-09-19 08:09:56 UTC
README
laravel-paypal
处理直接信用卡支付、存储信用卡支付和 PayPal 账户余额支付。它为 Laravel 5 开发,利用最新的 PayPal REST API SDK for PHP。
安装
-
在 Laravel 项目的根目录下运行此命令以使用 Composer 安装:
composer require netshell/paypal dev-master
-
接下来,将服务提供者添加到
app/config/app.php
中的providers
数组。
'providers' => array( // ... 'Netshell\Paypal\PaypalServiceProvider', )
- 最后,将别名添加到
app/config/app.php
中的aliases
数组。
'aliases' => array( // ... 'Paypal' => 'Netshell\Paypal\Facades\Paypal', )
##配置
使用 $apiContext->setConfig()
方法传入您的 PayPal 详细信息。以下是一个在控制器构造函数中使用的沙盒配置示例
private $_apiContext; public function __construct() { $this->_apiContext = PayPal::ApiContext( config('services.paypal.client_id'), config('services.paypal.secret')); $this->_apiContext->setConfig(array( 'mode' => 'sandbox', 'service.EndPoint' => 'https://api.sandbox.paypal.com', 'http.ConnectionTimeOut' => 30, 'log.LogEnabled' => true, 'log.FileName' => storage_path('logs/paypal.log'), 'log.LogLevel' => 'FINE' )); }
假设您已在 config/services.php
中设置了您的开发者信息
'paypal' => [
'client_id' => 'Client_ID',
'secret' => 'Your_secret'
],
代码示例
列出支付
Paypal::getAll(array('count' => 1, 'start_index' => 0), $this->_apiContext);
支付详情
Paypal::getById($payment_id, $this->_apiContext);
示例控制器
此示例提供了一个控制器,该控制器运行包配置,如配置部分中的片段。
use PayPal; use Redirect; // ... public function getCheckout() { $payer = PayPal::Payer(); $payer->setPaymentMethod('paypal'); $amount = PayPal:: Amount(); $amount->setCurrency('EUR'); $amount->setTotal(42); // This is the simple way, // you can alternatively describe everything in the order separately; // Reference the PayPal PHP REST SDK for details. $transaction = PayPal::Transaction(); $transaction->setAmount($amount); $transaction->setDescription('What are you selling?'); $redirectUrls = PayPal:: RedirectUrls(); $redirectUrls->setReturnUrl(action('ThisController@getDone')); $redirectUrls->setCancelUrl(action('ThisController@getCancel')); $payment = PayPal::Payment(); $payment->setIntent('sale'); $payment->setPayer($payer); $payment->setRedirectUrls($redirectUrls); $payment->setTransactions(array($transaction)); $response = $payment->create($this->_apiContext); $redirectUrl = $response->links[1]->href; return Redirect::to( $redirectUrl ); } public function getDone(Request $request) { $id = $request->get('paymentId'); $token = $request->get('token'); $payer_id = $request->get('PayerID'); $payment = PayPal::getById($id, $this->_apiContext); $paymentExecution = PayPal::PaymentExecution(); $paymentExecution->setPayerId($payer_id); $executePayment = $payment->execute($paymentExecution, $this->_apiContext); // Clear the shopping cart, write to database, send notifications, etc. // Thank the user for the purchase return view('checkout.done'); } public function getCancel() { // Curse and humiliate the user for cancelling this most sacred payment (yours) return view('checkout.cancel'); }
自定义 PayPal 支付页面
首先,我们需要创建一个新的 WebProfile 以获取 ID,然后在未来,我们可以简单地将此 ID 设置到支付对象中。
public function createWebProfile(){ $flowConfig = PayPal::FlowConfig(); $presentation = PayPal::Presentation(); $inputFields = PayPal::InputFields(); $webProfile = PayPal::WebProfile(); $flowConfig->setLandingPageType("Billing"); //Set the page type $presentation->setLogoImage("https://www.example.com/images/logo.jpg")->setBrandName("Example ltd"); //NB: Paypal recommended to use https for the logo's address and the size set to 190x60. $inputFields->setAllowNote(true)->setNoShipping(1)->setAddressOverride(0); $webProfile->setName("Example " . uniqid()) ->setFlowConfig($flowConfig) // Parameters for style and presentation. ->setPresentation($presentation) // Parameters for input field customization. ->setInputFields($inputFields); $createProfileResponse = $webProfile->create($this->_apiContext); return $createProfileResponse->getId(); //The new webprofile's id }
现在将 WebProfile 的 ID 设置到支付对象 $payment->setExperienceProfileId("XP-ABCD-EFGH-ILMN-OPQR");