aweklin/paystack

一个简洁、简单但全面的Paystack API包装器,用于在PHP中轻松管理您的在线交易、转账和退款!

dev-Main 2022-06-23 01:33 UTC

This package is not auto-updated.

Last update: 2024-09-26 16:46:17 UTC


README

 

Paystack-PHP

Github top language Github language count Repository size License Github issues Github forks Github stars

关于   |   要求   |   安装   |   使用   |   许可   |   作者


关于

这是一个简洁、简单但全面的Paystack库,用于在PHP中轻松管理您的在线交易、转账和退款!

此库采用最佳编程实践,以提供一种简单的方式执行Paystack API上可用的任何形式的交易。

要求

  • PHP 7.2或更高版本

安装

要使用Composer安装,请执行以下命令:

composer require aweklin/paystack

您也可以使用以下命令克隆此存储库:

git clone https://github.com/aweklin/Paystack-PHP

使用

初始化库

在使用此库之前,您首先需要在程序入口点(例如index.php文件)中初始化它。只需使用以下行初始化库。

首先,包含要使用的地方的自动加载文件

include_once 'path_to_klin_paystack/autoload.php';

然后,在文件顶部引用命名空间

use Aweklin\Paystack\Paystack;

接下来,使用您的密钥初始化库

Paystack::initialize('your_api_secret_key_here');

重要提示

请注意,每次请求都返回统一的响应

您可以使用$result->hasError()确定您的请求是否返回了错误,然后调用$result->getMessage()以获取成功或错误消息。此外,$result->getData()包含来自Paystack的数据。

在列出记录时,请注意您可以指定另外两个参数:$pageNumber$pageSize。但是,这不适用于Paystack::getBanksPaystack::getProviders

当参数需要货币时,您可以指定以下枚举之一:Paystack::CURRENCY_NGNPaystack::CURRENCY_GHSPaystack::CURRENCY_USD

在提供日期值时,请使用yyyy-MM-dd格式。

交易

交易列表

要列出所有交易,请调用:

$transactionList = Paystack::getTransactions();
if ($transactionList->hasError()) {
  echo $transactionList->getMessage();
} else {
  var_dump ($transactionList->getData());
}

或指定页码和页面大小:

  $transactionList = Paystack::getTransactions($pageNumber, $pageSize);
  if ($transactionList->hasError()) {
    echo $transactionList->getMessage();
  } else {
    var_dump ($transactionList->getData());
  }

 

要按状态列出所有交易,请调用:

  $transactionList = Paystack::getTransactions($status);
  if ($transactionList->hasError()) {
    echo $transactionList->getMessage();
  } else {
    var_dump ($transactionList->getData());
  }

或指定页码和页面大小:

  $transactionList = Paystack::getTransactions($status, $pageNumber, $pageSize);
  <br>
  if ($transactionList->hasError()) {
    echo $transactionList->getMessage();
  } else {
    var_dump ($transactionList->getData());
  }

$status可以是以下之一:Transaction::STATUS_SUCCESSTransaction::STATUS_FAILEDTransaction::STATUS_ABANDONED

 

要按日期范围列出所有交易,请调用:

  $transactionList = Paystack::getTransactions($startDate, $endDate);
  <br>
  if ($transactionList->hasError()) {
    echo $transactionList->getMessage();
  } else {
    var_dump ($transactionList->getData());
  }

日期格式:yyyy-MM-dd,例如:'2020-09-25'

 

要按其他参数(s)列出所有交易,请调用:

  $transactionParameter = new TransactionParameter();      
  $transactionParameter<br>
        ->setCustomerId(111222333)<br>
        ->setStatus(Transaction::STATUS_SUCCESS)<br>
        ->setAmount(1000)<br>
        ->setCurrency(Paystack::CURRENCY_NGN);<br>
  $transactionList = Paystack::getTransactions($transactionParameter);
  if ($transactionList->hasError()) {
    echo $transactionList->getMessage();
  } else {
    var_dump ($transactionList->getData());
  }

请注意,您可以设置一个或多个参数以过滤交易,如上所示。TransactionParameter对象允许您链式调用参数。

setStatus(?)方法可以接受以下枚举之一:Transaction::STATUS_SUCCESS, Transaction::STATUS_FAILED, Transaction::STATUS_ABANDONED

此外,setCurrency(?)方法接受以下枚举之一:Paystack::CURRENCY_NGNPaystack::CURRENCY_GHSPaystack::CURRENCY_USD

交易启动

您可以通过传入电子邮件和金额来启动交易。

使用电子邮件和金额启动支付

这允许您生成一个授权URL,用户可以使用它来完成他的支付。

示例

$result = Paystack::initiateTransaction(VALID_EMAIL, VALID_AMOUNT);
if ($result->hasError()) {
  echo $result->getMessage();
} else {
  var_dump ($result->getData());
}

使用电子邮件、金额和参考信息启动支付

您还可以为您的交易包括一个参考号码。

$result = Paystack::initiateTransaction(VALID_EMAIL, VALID_AMOUNT, 'ref_no');
if ($result->hasError()) {
  echo $result->getMessage();
} else {
  var_dump ($result->getData());
}

使用电子邮件、金额和货币启动支付

您还可以为您的交易包括一个货币。

$result = Paystack::initiateTransaction(VALID_EMAIL, VALID_AMOUNT, 'currency');
if ($result->hasError()) {
  echo $result->getMessage();
} else {
  var_dump ($result->getData());
}

使用电子邮件、金额、自定义字段启动支付

您还可以包括如下所示的自定义字段数组

$result = Paystack::initiateTransaction(VALID_EMAIL, VALID_AMOUNT, ['name' => 'Akeem Aweda', 'profession' => 'Software Engineer']);
if ($result->hasError()) {
  echo $result->getMessage();
} else {
  var_dump ($result->getData());
}

使用电子邮件、金额、参考信息、货币和自定义字段启动支付

您还可以包括参考信息、货币和如下所示的自定义字段数组

$result = Paystack::initiateTransaction(VALID_EMAIL, VALID_AMOUNT, 'reference', 'currency', ['name' => 'Akeem Aweda', 'profession' => 'Software Engineer']);
if ($result->hasError()) {
  echo $result->getMessage();
} else {
  var_dump ($result->getData());
}

创建交易费用

您可以通过通过银行、移动货币、转账、二维码或USSD API创建交易费用来启动交易。

启动移动货币支付

允许您根据可用的提供商执行移动货币交易。

示例

$mobileMoney = new MobileMoneyPayment('email@domain.com', 5000, 'NGN', '07020000000', 'Airtel');
$chargeResult = Paystack::initiateTransaction($mobileMoney);
if ($chargeResult->hasError()) {
  echo $chargeResult->getMessage();
} else {
  var_dump ($chargeResult->getData());
}

 

启动银行支付

允许您通过USSD或转账执行银行交易。

示例

$bankPayment = new BankPayment('email@domain.com', 5000, '058', VALID_ACCOUNT_NUMBER);
$chargeResult = Paystack::initiateTransaction($bankPayment);
if ($chargeResult->hasError()) {
  echo $chargeResult->getMessage();
} else {
  var_dump ($chargeResult->getData());
}

 

启动USSD支付

此支付方式专为尼日利亚客户设计。尼日利亚银行为客户提供USSD服务,客户使用这些服务执行交易,我们已经与其中一些银行集成,以便客户完成支付。

通过USSD通道支付允许您的尼日利亚客户通过在他们的移动设备上拨打一个USSD代码来向您支付。这个代码通常是*后跟一些代码,以#结尾。用户被提示使用PIN验证交易,然后进行确认。

示例

$ussdPayment = new USSDPayment(VALID_EMAIL, VALID_AMOUNT, USSDPayment::BANK_GUARANTEE_TRUST);
$chargeResult = Paystack::initiateTransaction($ussdPayment);
if ($chargeResult->hasError()) {
  echo $chargeResult->getMessage();
} else {
  var_dump ($chargeResult->getData());
}

 

启动二维码支付

二维码选项生成一个二维码,允许客户使用他们的银行移动应用程序完成支付。我们目前只有Visa QR选项可用。我们将稍后提供更多选项。

When the customer scans the code, they authenticate on their bank app to complete the payment. When the user pays, a response will be sent to your webhook. This means that you need to have webhooks set up on your Paystack Dashboard.

示例

$qrCodePayment = new QRCodePayment(VALID_EMAIL, VALID_AMOUNT, QRCodePayment::PROVIDER_VISA);
$chargeResult = Paystack::initiateTransaction($qrCodePayment);
if ($chargeResult->hasError()) {
  echo $chargeResult->getMessage();
} else {
  var_dump ($chargeResult->getData());
}

 

启动周期性支付

允许您通过收取之前收到的授权代码来处理周期性支付。

请注意,这需要一个有效的授权代码。

示例

$recurringPayment = new RecurringPayment(VALID_EMAIL, VALID_AMOUNT, VALID_AUTHORIZATION_CODE);
$chargeResult = Paystack::initiateTransaction($recurringPayment);
if ($chargeResult->hasError()) {
  echo $chargeResult->getMessage();
} else {
  var_dump ($chargeResult->getData());
}

 

使用OTP完成交易

通过银行支付方法启动的支付过程结束。

示例

$chargeResult = Paystack::completeTransactionWithOTP($reference, $otp);
if ($chargeResult->hasError()) {
  echo $chargeResult->getMessage();
} else {
  var_dump ($chargeResult->getData());
}

 

交易验证

要验证交易,您需要首先获取用于检查的交易参考。

示例

$verificationResult = Paystack::verifyTransaction('abcd');
if ($verificationResult->hasError()) {
  echo $verificationResult->getMessage();
} else {
  var_dump ($verificationResult->getData());
}

 

退款

允许您创建和管理交易退款。

为给定的交易参考启动退款。

示例

$refundResult = Paystack::initiateRefund($reference);
if ($refundResult->hasError()) {
  echo $refundResult->getMessage();
} else {
  var_dump ($refundResult->getData());
}

 

检查退款状态

您的退款可能需要长达24小时才能完成。要检查您的退款是否成功,请调用

$refundCheck = Paystack::getRefund($reference);
if ($refundCheck->hasError()) {
  echo $refundCheck->getMessage();
} else {
  var_dump ($refundCheck->getData());
}

 

列出您的退款

返回从开始到现在的所有退款。

$refundList = Paystack::getRefunds();
if ($refundList->hasError()) {
  echo $refundList->getMessage();
} else {
  var_dump ($refundList->getData());
}

 

按日期范围列出您的退款

$refundList = Paystack::getRefundsByDates($startDate, $endDate);
if ($refundList->hasError()) {
  echo $refundList->getMessage();
} else {
  var_dump ($refundList->getData());
}

 

按其他参数列出您的退款

$transactionParameter = new RefundParameter(); $transactionParameter->setCurrency(Paystack::CURRENCY_NGN); $refundList = Paystack::getRefundsBy($transactionParameter); if ($refundList->hasError()) { echo $refundList->getMessage(); } else { var_dump ($refundList->getData()); } 

转账

允许您发送金钱。

转账给受益人

向受益人发起单个转账请求。

Status of transfer object returned will be pending if OTP is disabled. In the event that an OTP is required, status will read otp.

请注意,受益人必须已经被添加到您的受益人列表中,请参阅杂项部分。

示例

$transferResult = Paystack::initiateTransferToBeneficiary(VALID_BENEFICIARY_CODE, VALID_AMOUNT, 'reference', Paystack::CURRENCY_NGN, 'Testing transfer.');
if ($transferResult->hasError()) {
  echo $transferResult->getMessage();
} else {
  var_dump ($transferResult->getData());
}

请注意,参考是可选的,因此它可以是空的(允许Paystack为您生成交易参考,它是$transferResult->getData()数据的一部分)。

 

转账到银行账户

向账户号码发起单个转账请求。

Note that this method will have to validate the account number, create the beneficiary, then transfer to the beneficiary.

Status of transfer object returned will be pending if OTP is disabled. In the event that an OTP is required, status will read otp.

示例

$transferResult = Paystack::initiateTransferToAccount($accountNumber, $accountName, $bankCode, $amount, $reference, $currency, $remark);
if ($transferResult->hasError()) {
  echo $transferResult->getMessage();
} else {
  var_dump ($transferResult->getData());
}

** @param string $accountNumber 接收方的账户号码。
** @param string $accountName 接收方的账户名称。
** @param string $bankCode 接收方的银行代码。您可以通过调用 `Aweklin\Paystack\Core\DataProvider::getBanks()` 方法获取银行代码列表。
** @param float $amount 要转账的金额。
** @param string $reference 如果指定,则该字段应为对象的唯一标识符(小写)。只允许使用 -、_ 和字母数字字符。
** @param string $currency 三字母ISO货币。
** @param string $remark 转账的原因。

 

批量转账

启动批量转账请求。

You need to disable the Transfers OTP requirement to use this endpoint.

示例

$transferResult = Paystack::initiateBulkTransfers($transfers, $currency);
if ($transferResult->hasError()) {
  echo $transferResult->getMessage();
} else {
  var_dump ($transferResult->getData());
}

 

$transfers 是一个包含 \Aweklin\Paystack\Models\PaymentTransfer 的数组,每个包含:金额、收款人和参考。

 

使用OTP完成转账

使用OTP最终确定已启动的转账。

示例

$transferResult = Paystack::completeTransferWithOTP($transferCode, $otp);
if ($transferResult->hasError()) {
  echo $transferResult->getMessage();
} else {
  var_dump ($transferResult->getData());
}

 

重新发送转账OTP

在客户收到OTP有困难的情况下,生成新的OTP并发送给客户。

示例

$transferResult = Paystack::resendTransferOTP($transferCode);
if ($transferResult->hasError()) {
  echo $transferResult->getMessage();
} else {
  var_dump ($transferResult->getData());
}

 

禁用转账OTP

如果您想能够程序化地完成转账而不使用OTP,此方法可以帮助禁用……使用OTP。

Please note that this will send you an OTP and you are to call the `finalizeDisableOTP()` method to conclude operation.

示例

$transferResult = Paystack::disableOTP();
if ($transferResult->hasError()) {
  echo $transferResult->getMessage();
} else {
  var_dump ($transferResult->getData());
}

 

完全禁用转账OTP

最终确定禁用转账OTP的请求。

示例

$transferResult = Paystack::finalizeDisableOTP($otp);
if ($transferResult->hasError()) {
  echo $transferResult->getMessage();
} else {
  var_dump ($transferResult->getData());
}

 

启用转账OTP

如果客户想停止能够程序化地完成转账,此端点可以帮助重新启用OTP要求。

示例

$transferResult = Paystack::enableOTP();
if ($transferResult->hasError()) {
  echo $transferResult->getMessage();
} else {
  var_dump ($transferResult->getData());
}

 

 

列出您的转账

返回自成立以来的所有转账。

$transferList = Paystack::getTransfers();
if ($transferList->hasError()) {
  echo $transferList->getMessage();
} else {
  var_dump ($transferList->getData());
}

 

按日期范围列出您的转账

$transferList = Paystack::getTransfersByDates($startDate, $endDate); if ($transferList->hasError()) { echo $transferList->getMessage(); } else { var_dump ($transferList->getData()); } 

 

获取转账详情

$transferDetails = Paystack::getTransfer($id); if ($transferDetails->hasError()) { echo $transferDetails->getMessage(); } else { var_dump ($transferDetails->getData()); } 

 

杂项

获取账户余额

$result = Paystack::getBalance(); if ($result->hasError()) { echo $result->getMessage(); } else { var_dump ($result->getData()); } 

 

获取银行列表

获取所有尼日利亚银行及其属性列表

$result = Paystack::getBanks();
if ($result->hasError()) {
  echo $result->getMessage();
} else {
  var_dump ($result->getData());
}

 

获取提供商

获取所有为专用NUBAN提供的提供商列表

$result = Paystack::getProviders();
if ($result->hasError()) {
  echo $result->getMessage();
} else {
  var_dump ($result->getData());
}

 

验证BVN

验证给定的银行验证号码(BVN)与提供的账户号码和银行代码是否匹配。

$result = Paystack::verifyBVN(VALID_BVN, VALID_BANK_CODE_FOR_BVN_VERIFICATION, VALID_ACCOUNT_NUMBER);
if ($result->hasError()) {
  echo $result->getMessage();
} else {
  var_dump ($result->getData());
}

 

获取账户余额。

使用银行验证号码获取客户信息。

$result = Paystack::getBVNDetails($bvn);
if ($result->hasError()) {
  echo $result->getMessage();
} else {
  var_dump ($result->getData());
}

 

获取账户余额。

确认账户属于正确的客户。

$result = Paystack::getAccountDetails(string $accountNumber, string $bankCode);
if ($result->hasError()) {
  echo $result->getMessage();
} else {
  var_dump ($result->getData());
}

 

添加转账受益人

创建新的收款人。重复的账户号码将导致检索现有记录。

$beneficiaryCreationResult = Paystack::createBeneficiary(VALID_ACCOUNT_NUMBER, VALID_BANK_CODE_FOR_BVN_VERIFICATION, VALID_ACCOUNT_NAME);
if ($beneficiaryCreationResult->hasError()) {
  echo $beneficiaryCreationResult->getMessage();
} else {
  var_dump ($beneficiaryCreationResult->getData());
}

 

更新转账受益人

更新收款人。重复的账户号码将导致检索现有记录。

$beneficiaryUpdateResult = Paystack::updateBeneficiary(VALID_BENEFICIARY_ID, VALID_ACCOUNT_NAME, VALID_EMAIL, 'A sample test account');
if ($beneficiaryUpdateResult->hasError()) {
  echo $beneficiaryUpdateResult->getMessage();
} else {
  var_dump ($beneficiaryUpdateResult->getData());
}

 

列出转账受益人

返回自成立以来的所有受益人。

$beneficiaries = Paystack::getBeneficiaries();
if ($beneficiaries->hasError()) {
  echo $beneficiaries->getMessage();
} else {
  var_dump ($beneficiaries->getData());
}

 

列出在两个日期之间创建的转账受益人

返回在两个日期之间创建的所有受益人。

$beneficiaries = Paystack::getBeneficiariesByDates($startDate, $endDate);
if ($beneficiaries->hasError()) {
  echo $beneficiaries->getMessage();
} else {
  var_dump ($beneficiaries->getData());
}

 

获取受益人详情

$beneficiaryDetails = Paystack::getBeneficiary(VALID_BENEFICIARY_ID); if ($beneficiaryDetails->hasError()) { echo $beneficiaryDetails->getMessage(); } else { var_dump ($beneficiaryDetails->getData()); } 

 

测试

本项目采用TDD(测试驱动开发)模式开发。超过95%的代码已经通过单元测试并持续改进。在单元测试的基础上,使用此库的开发者可以通过阅读测试代码来简单地了解如何使用它。

要运行本项目的单元测试,请打开tests文件夹内的config.php文件,在运行测试之前设置所有常量的适当值。如果您需要帮助,请联系akeem@aweklin.com

贡献

本项目欢迎专业人士贡献代码和报告问题,以便我们共同改进。安全问题应通过电子邮件私下报告,联系akeem@aweklin.com

许可协议

本项目采用MIT许可协议。更多详情请参阅LICENSE文件。

Akeem Aweda用❤️制作

 

回到顶部