sdkcodes/lara-paystack

一个用于Laravel使用Paystack的简单包

安装: 533

依赖关系: 0

建议者: 0

安全性: 0

星标: 6

关注者: 2

分支: 0

开放问题: 0

类型:laravel-package

v1.0.3 2020-12-02 11:31 UTC

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的支付方式

为了从您的客户那里收集支付,一般的流程如下

  1. 您通过发送某些数据到Paystack API来初始化与Paystack的交易,这些数据通常包含[金额和电子邮件(以及客户的姓名和电话号码)]等信息
  2. Paystack响应一个支付URL(或授权URL),这是Paystack网站上您必须将客户重定向到的页面。实际的支付将在此页面上进行
  3. 一旦在此页面上支付完成并成功(即您的客户已被Paystack扣除),Paystack将客户重定向回您的网站(到您在步骤1中初始化交易时已指定的[回调URL])。当将客户重定向回您的网站时,Paystack还将发送刚刚完成的交易的交易参考作为查询参数。
  4. 现在,在您的回调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);
      
    }

}

待办事项

完整文档

灵感来源

本包深受 @UnicodeveloperLaravel Paystack 包 的启发。

许可证

本包免费得像鸟儿一样。

对仓库中的一个星号表示赞赏将非常感激。