yemoade/paystack-php-lib-extended

Paystack的PHP库。MABiola Paystack库的扩展

dev-master 2019-04-29 11:18 UTC

This package is not auto-updated.

Last update: 2024-09-25 13:14:34 UTC


README

Paystack的PHP库。

此库已不再维护。请使用官方库。

Build Status Coverage Status

要求

安装

通过Composer

运行 composer install yemoade/paystack-php-lib-extended

然后使用composer的自动加载。

require_once __DIR__ . '/vendor/autoload.php';

注意:如果您使用的是PHP框架,例如,Laravel,您不需要将composer自动加载添加到文件中,因为它已经完成。 (在bootstrap/autoload中查看;对于Lumen,在bootstrap/app.php中查看。)

其他安装方法

没有其他安装方法!请使用composer!

为什么?

  • 这是正确使用PHP的方法!
  • 这是正确的事情。
  • 如果您还需要说服,这篇文章可能有所帮助。

严肃地说,请……使用composer。谢谢。

配置

将以下密钥添加到您的.env文件中。

#PAYSTACK LIB MODE [test | live]
PAYSTACK_MODE = test
#YOUR PAYSTACK KEYS
PAYSTACK_LIVE_PUBLIC_KEY = my_paystack_live_public_keys
PAYSTACK_LIVE_SECRET_KEY = my_paystack_live_secret_key
PAYSTACK_TEST_PUBLIC_KEY = my_paystack_test_public_key
PAYSTACK_TEST_SECRET_KEY = my_paystack_test_secret_key

用您实际的Paystack密钥替换这些密钥 - 您可以在“设置”页面的“开发者/API”面板中找到这些密钥。使用PAYSTACK_MODElivetest模式之间切换Paystack。

就这样!您准备好接收付款了!

用法

使用库很简单,创建一个Paystack库对象,并使用此对象对Paystack执行操作。要创建Paystack库对象,请执行以下操作;

$paystackLibObject = \MAbiola\Paystack\Paystack::make();

或者如果您愿意提供确切的密钥(如果您没有使用env文件);

$paystackLibObject = \MAbiola\Paystack\Paystack::make("my-paystack-private-key");

现在让我们了解一下您刚才创建的对象可以执行的一些操作。

扩展 - (未编写测试)

请注意,扩展可能已被适应某些用例。要理解和遵循,请参阅原始包

  1. 创建转账接收人

    根据Paystack的文档,要转账到银行账户,您必须为具有银行详情的客户生成一个接收人身份。随后的转账尝试将需要转账接收人代码。生成此信息的详细信息是账户名称、账户号码、银行、银行代码、货币(在此库中此为可选,默认为NGN)、类型(在此库中此为可选,默认为nuban)。

     $transferRecipient = $paystackLibObject->createTransferRecipient('Account Name', 'Account Number', 'Bank Code', 'NGN', 'nuban');
    
  2. 创建转账

    要转账到银行账户。需要银行账户的转账接收人代码。见上面1。接收人代码与转账金额一起提供。转账的详细信息是金额(以科博为单位)、接收人代码、来源(默认为balance)、货币(在此库中此为可选,默认为NGN)。

     $transfer = $paystackLibObject->createTransfer('Amount in Kobo, 'Recipient Code', 'source', 'NGN');
    
  3. 创建退款

    在成功的交易上创建退款。需要交易参考。

    $refund = $paystackLibObject->createRefund('Transaction Reference');

  4. 银行列表

    获取银行及其代码的列表

    $banks = $paystackLibObject->bankList();

原始文档

  1. 初始化一次性交易

    根据Paystack 文档,要向客户收费,你需要创建一次性的交易,这样你将获得一个授权URL,你可以将页面重定向到这个URL,以便客户可以输入他们的卡详细信息并支付你的服务。使用库来做这件事,传递要收费的金额、客户电子邮件和可选的计划(如果是创建订阅的交易,你可以在这里输入计划代码或计划对象——更多内容即将到来)。

     $getAuthorization = $paystackLibObject->startOneTimeTransaction('10000', 'me@me.com');
    

    你将期望一个包含用于接受此付款的授权URL(`authorization_url`)的数组,以及唯一的自动生成的交易参考(`reference`)。

  2. 验证交易

    要验证交易,只需调用函数;

     $verifyTransaction = $paystackLibObject->verifyTransaction('unique_transaction_ref');
    

    如果交易成功,此函数返回一个包含交易详情的数组,否则`$verifyTransaction`将返回`false`。

  3. 向回头客收费

    现在,当你成功地向客户收费时,将生成一个代表客户卡的授权密钥——你可以在验证交易时返回的数组中找到它。因此,下次你想向这位客户收费时,你可以使用这个授权代码来收费。为此,只需像这样调用函数;

     $chargeReturningCustomer = $paystackLibObject->chargeReturningTransaction('authorization_code', 'me@me.com', '10000');
    

    如果交易成功,此函数返回一个包含交易详情的数组。

  4. 客户

    • 检索客户数据

      你可以通过传递客户代码到`getCustomer`来检索客户详情,以获取客户对象。

        $customer = $paystackLibObject->getCustomer('customer_code');
      

      如果操作成功,你将得到一个客户对象,你可以调用`$newCustomer->toArray()`来获取详情作为数组,或者你可以进行一个`get`调用,传递一个属性来检索,或者传递属性列表作为参数或属性数组。例如:$newCustomer->get(['first_name', 'customer_code', 'subscriptions', 'authorizations']);$newCustomer->get('subscriptions');

    • 创建客户

      要创建客户,将客户名、姓、电子邮件和电话传递给`createCustomer`方法,如下所示;

        $newCustomer = $paystackLibObject->createCustomer('first_name', 'last_name', 'email', 'phone');
      

      如果操作成功,将返回一个客户对象。

    • 更新客户数据

      你可以通过传递客户代码和更新数据作为属性作为键和更新值数组的`updateCustomerData`方法来更新客户详情;

        $updatedCustomer = $paystackLibObject->updateCustomerData('customer_code',['last_name' => 'new_last_name']);
      

      如果操作成功,将返回客户对象。

    • 检索所有客户

      要检索所有客户,请在PaystackLibObject上调用`getCustomers`方法。期望得到一个客户对象的数组。

        $myCustomers = $paystackLibObject->getCustomers();
      
  5. 计划

    • 检索计划详情

      你可以通过将计划代码传递给`getPlan`来检索计划的详细信息,以获取计划对象。

        $plan = $paystackLibObject->getPlan('plan_code');
      

      如果操作成功,你将得到一个计划对象,你可以调用`$plan->toArray()`来获取详情作为数组,或者你可以进行一个`get`调用,传递一个属性来检索,或者传递属性列表作为参数或属性数组。例如:$plan->get(['name', 'plan_code', 'subscriptions', 'hosted_page_url']);$plan->get('subscriptions');

    • 创建新计划

      要创建计划,将计划名称、描述、金额(显然不是科博)和货币(NGN | USD)传递给`createPlan`方法,如下所示;

        $newPlan = $paystackLibObject->createPlan('Random_Plan_1000', 'Random 1000NGN Plan', '1000', 'NGN');
      

      如果操作成功,将返回一个计划对象。

    • 更新计划数据

      你可以通过传递计划代码和更新数据作为属性作为键和更新值数组的`updatePlan`方法来更新计划详情;

        $updatedPlan = $paystackLibObject->updatePlan('plan_code', ['hosted_page_url' => 'http://somerandomu.rl', 'hosted_page' => true]);
      

      如果操作成功,将返回计划对象。

    • 检索所有计划

      要检索所有计划,请在PaystackLibObject上调用`getPlans`方法。期望得到一个计划对象的数组。

        $myPlans = $paystackLibObject->getPlans();
      
  6. 其他交易操作

    • 获取交易详情 要获取交易详情,将交易ID传递给 transactionDetails 函数。成功时返回交易对象,或抛出异常。如常,您可以在它上面执行 toArrayget 操作,就像在客户和计划对象上操作一样。此外,您还可以调用此对象的 verify() 方法来验证交易。

        $transactionDetails = $paystackLibObject->transactionDetails('transaction_id');
      
    • 获取所有交易 要检索所有交易,请在 paystack 库对象上调用 allTransactions 函数。成功时返回一个交易对象数组,出错时抛出异常。

        $allMyTransactions = $paystackLibObject->allTransactions();
      
    • 交易总额 要获取成功交易的累积视图,使用 transactionTotals 函数。返回一个带有 total_volumetotal_transactionspending_transfers 作为键的数组。当然,如果发生错误,会抛出异常。

        $totals = $paystackLibObject->transactionsTotals();
      
  7. 异常

    错误难免会发生,但不必担心,库中包含描述性异常和获取错误详情的方法/函数。要获取异常抛出时的错误消息,请调用异常对象的 getErrors()。例如:

     try {
     	$paystackLibObject->getPlan('plan_code');
     } catch (PaystackNotFoundException $e) {
     	print_r($e->getErrors());
     }
    

    可能的异常:

    • PaystackInternalServerError
    • PaystackInvalidTransactionException: 当无法生成唯一的交易参考时抛出。
    • PaystackNotFoundException: 当请求的对象/资源找不到时抛出。
    • PaystackUnauthorizedException: 当无法找到授权密钥时抛出。
    • PaystackUnsupportedOperationException: 当您尝试执行的操作不受 Paystack 支持 时抛出。
    • PaystackValidationException: 当发生验证错误时抛出。您可以通过在异常对象上调用 getValidationErrors() 来查看验证错误。 getValidationErrors() 返回一个包含验证失败属性和原因的数组。

贡献

我非常欢迎您的贡献,克隆并给我发送一个 pull request。请记住编写测试。或者,您可以通过打开 issues 来报告错误。

此外,如果您喜欢这个库,请 star 该仓库。或者如果您有疑问或只是想给我留言,您可以通过 twitter 联系我

许可证

MIT。