sdkcodes / lara-paystack
一个用于Laravel使用Paystack的简单包
Requires
- guzzlehttp/guzzle: ~6.0
- illuminate/support: >=5.4
- laravel/framework: >=5.4
This package is auto-updated.
Last update: 2024-09-29 05:02:31 UTC
README
一个用于与Paystack端点交互的laravel 5 SDK
关于
此包将Paystack的端点抽象成简单的方法您可以在以下位置找到Paystack的所有端点:https://developers.paystack.co/reference
要求
- PHP >= 7.0
- Composer
- Laravel >= 5.4
安装
- 运行
composer require sdkcodes/lara-paystack
安装LaraPaystack的最新版本
功能
- 灵活性:此包基本上通过一些辅助方法让您完全控制传递给Paystack的数据,以在需要时帮助您。
Paystack的支付方式
为了从您的客户那里收集支付,一般的流程如下
- 您通过发送某些数据到Paystack API来初始化与Paystack的交易,这些数据通常包含[金额和电子邮件(以及客户的姓名和电话号码)]等信息
- Paystack响应一个支付URL(或授权URL),这是Paystack网站上您必须将客户重定向到的页面。实际的支付将在此页面上进行
- 一旦在此页面上支付完成并成功(即您的客户已被Paystack扣除),Paystack将客户重定向回您的网站(到您在步骤1中初始化交易时已指定的[回调URL])。当将客户重定向回您的网站时,Paystack还将发送刚刚完成的交易的交易参考作为查询参数。
- 现在,在您的回调URL上,您应该使用返回的交易参考来验证交易是否实际上是真实的,然后再继续向客户提供服务。
基本用法
- 您可以通过如下方式创建Paystack类的新实例
$paystack = new PaystackService()
,然后立即开始使用SDK提供的所有方法。 - 您还可以将其注入到构造函数或方法中,例如
public function talkToPaystack(Request $request, PaystackService $paystack){
// Laravel automatically does the instantiation for you through its Service Container
// and you can start to use the paystack object in your method
}
- 使用LaraPaystack,您只需一行即可初始化交易并重定向到支付URL
$paystack->initializeTransaction($data)->redirectNow();
以下是使用LaraPaystack包进行支付和验证的示例路由和控制台
<?php
//web.php
Route::post("/submit-payment-request", "PaymentController@initializeTransaction");
Route::get("/payment-callback", "PaymentController@respondToCallback");
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Sdkcodes\LaraPaystack\PaystackService;
class PaymentController{
public function initializeTransaction(Request $request, PaystackService $paystack){
$data = [
'amount' => 10000 // should be in kobo: this can come from a form submitted by the user
'email' => $request->email,
'callback_url' => url('route-to-handle-paystack-callback')
];
// You can check this link for all fields that you can send to paystack https://developers.paystack.co/v1.0/reference#initialize-a-transaction
// this line will initialize transaction with paystack and automatically help you redirect to the payment url returned by paystack
$paystack->initializeTransaction($data)->redirectNow();
}
/**
* Controller method to handle response from paystack after payment
* @param trxref
*/
public function respondToCallback(Request $request, PaystackService $paystack){
//sent to us by paystack after successful payment
$transRef = $request->trxref;
// this will verify if the transaction is valid and someone is not just trying to play funny with our payment
$paystack->verifyTransaction($transRef);
//you can now do anything you want with the paymentData
$paymentData = $paystack->getPaymentData();
}
}
更多
目前,您可以使用此包执行以下操作
- 初始化交易
- 验证交易
- 列出交易
- 创建转账接收人
- 初始化转账
- 完成转账
- 列出转账接收人
- 列出银行 [新]
- 初始化批量转账 [新]
我计划继续更新此包,并随着时间的推移,涵盖Paystack的所有端点。
欢迎您也做出贡献。
期望
LaraPaystack需要设置一些环境变量,并根据您的环境使用适当的Paystack密钥
- PAYSTACK_TEST_SECRET_KEY=[您的_Paystack_Secret_Test_key]
- PAYSTACK_LIVE_SECRET_KEY=[您的_Paystack_Secret_Live_key] 如果您的
APP_ENV
与以下值之一匹配,则自动使用PAYSTACK_TEST_SECRET_KEY
:local, test, staging
如果您的 APP_ENV
与以下值之一匹配,则自动使用 PAYSTACK_LIVE_SECRET_KEY
:production
但是,您可以通过在 .env 中设置 USE_ENV_AS
变量来轻松覆盖环境值
USE_ENV_AS
可以设置为 production
以模拟生产环境,或设置为 testing
以模拟测试环境。
示例
批量传输
要使用 Paystack 的批量传输包,您需要首先从您的 Paystack 控制台中禁用双因素认证。
您将使用 doBulkTransfer(array $recipients, string $currency="NGN", string $source="balance")
方法来进行批量传输。
注意:方法中只需要第一个参数
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Sdkcodes\LaraPaystack\PaystackService;
class PaymentController{
/**
* Initiate bulk transfer and send money to multiple bank accounts at the same time
*/
public function doMultipleTransfers(Request $request, PaystackService $paystack){
// You can check this link for all fields that you can send to paystack https://developers.paystack.co/reference#initiate-bulk-transfer
$people = array(
[
'amount' => 50000,
'recipient' => 'RCP_m9yzgv4tbi6f20b'
],
[
'amount' => 20000,
'recipient' => 'RCP_z6b9zeky5z379dn'
]
);
$response = $paystack->initiateBulkTransfer($people);
}
}
待办事项
完整文档
灵感来源
本包深受 @Unicodeveloper 的 Laravel Paystack 包 的启发。
许可证
本包免费得像鸟儿一样。
对仓库中的一个星号表示赞赏将非常感激。