flutterwavedev/flutterwave-v3

Flutterwave支付集成的简单SDK

1.0.6 2023-07-27 12:39 UTC

This package is auto-updated.

Last update: 2024-09-21 17:49:00 UTC


README

Flutterwave v3 PHP SDK。

Packagist Downloads Packagist PHP Version Support GitHub stars Packagist License

此Flutterwave v3 PHP库为从PHP应用程序访问Flutterwave for Business (F4B) v3 API提供了方便。它抽象了直接集成中涉及到的复杂性,并允许您快速调用API。

提供的功能包括

  • 集合:卡,账户,移动货币,银行转账,USSD,易货交易,NQR。
  • 支付和受益人。
  • 定期支付:令牌化和订阅。
  • 分割支付
  • 卡片发行
  • 交易纠纷管理:退款。
  • 交易报告:集合、支付、结算和退款。
  • 账单支付:话费、数据包、有线电视、电力、通行费、电子账单和Remitta。
  • 身份验证:解决银行账户、解决BVN信息。

目录

  1. 需求
  2. 安装
  3. 初始化
  4. 用法
  5. 测试
  6. 调试错误
  7. 支持
  8. 贡献指南
  9. 许可
  10. 变更日志

需求

  1. Flutterwave for business API密钥
  2. 支持的PHP版本:>= 7.4.0。对于较旧的PHP版本,请使用 Legacy Branch

安装

通过Composer安装。

要通过Composer安装包,请运行以下命令。

composer require flutterwavedev/flutterwave-v3

初始化

创建一个.env文件,并按照.env.example文件的格式保存您的PUBLIC_KEY、SECRET_KEY、ENV到.env文件中

cp .env.example .env

您的.env文件应该看起来像这样。

PUBLIC_KEY=FLWSECK_TEST-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-X
SECRET_KEY=FLWPUBK_TEST-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-X
ENCRYPTION_KEY=FLWSECK_XXXXXXXXXXXXXXXX
ENV='staging/production'

渲染支付模态

SDK提供两种通过著名的支付模态进行集合的简单方法。 了解更多

  1. Flutterwave Inline
  2. Flutterwave Standard

开始使用

编辑paymentForm.php和processPayment.php文件以适应您的需求。这两个文件都有良好的文档。

只需将浏览器重定向到paymentForm.php文件即可处理支付。

在此实现中,我们期望该脚本是表单编码的POST请求。请求将包含以下参数。

 {
    "amount": "The amount required to be charged. (*)",
    "currency": "The currency to charge in. (*)",
    "first_name": "The first name of the customer. (*)",
    "last_name" : "The last name of the customer. (*)",
    "email": "The customers email address. (*)",
    "phone_number": "The customer's phone number. (Optional).",
    "success_url": "The url to redirect customer to after successful payment.",
    "failure_url": "The url to redirect customer to after a failed payment.",
    "tx_ref":"The unique transaction identifier. if ommited the apiclient would generate one"
 }

paymentProcess.php中的脚本通过PaymentController处理请求数据。如果您正在使用Laravel或CodeIgniter等框架,您可能想查看PaymentController

<?php

declare(strict_types=1);

# if vendor file is not present, notify developer to run composer install.
require __DIR__.'/vendor/autoload.php';

use Flutterwave\Controller\PaymentController;
use Flutterwave\EventHandlers\ModalEventHandler as PaymentHandler;
use Flutterwave\Flutterwave;
use Flutterwave\Library\Modal;

# start a session.
session_start();

try {
    Flutterwave::bootstrap();
    $customHandler = new PaymentHandler();
    $client = new Flutterwave();
    $modalType = Modal::POPUP; // Modal::POPUP or Modal::STANDARD
    $controller = new PaymentController( $client, $customHandler, $modalType );
} catch(\Exception $e ) {
    echo $e->getMessage();
}

if ($_SERVER["REQUEST_METHOD"] === "POST") {
    $request = $_REQUEST;
    $request['redirect_url'] = $_SERVER['HTTP_ORIGIN'] . $_SERVER['REQUEST_URI'];
    try {
        $controller->process( $request );
    } catch(\Exception $e) {
        echo $e->getMessage();
    }
}

$request = $_GET;
# Confirming Payment.
if(isset($request['tx_ref'])) {
    $controller->callback( $request );
} else {
    
}
exit();

配置设置

创建一个.env文件,并在发起收费之前首先添加bootstrap方法。

use \Flutterwave\Flutterwave;

# normal configuration
Flutterwave::bootstrap(); # this will use the default configuration set in .env

如果您不想使用.env,您可以直接传递API密钥,如下例所示。

use \Flutterwave\Helper\Config;

$myConfig = Config::setUp(
    'FLWSECK_TEST-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-X',
    'FLWPUBK_TEST-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-X',
    'FLWSECK_XXXXXXXXXXXXXXXX',
    'staging'
);
 
Flutterwave::bootstrap($myConfig);

用法

收费

  1. 账户收费
  2. ACH收费
  3. 卡收费
  4. 移动货币
  5. FawryPay
  6. GooglePay
  7. ApplePay
  8. Mpesa
  9. 银行转账
  10. USSD
  11. eNaira

资源

  1. 银行
  2. 受益人
  3. 支付计划
  4. 集合子账户
  5. 支付子账户
  6. 订阅
  7. 转账
  8. 交易
  9. 虚拟卡
  10. 虚拟账户
  11. 杂项

测试

SDK 中的所有测试均使用 PHP 的 phpunit 模块编写。当前测试包括:AccountCardTransferPreauthCollection SubaccountPayout SubaccountSubscriptionsPaymentplan

可以按照以下方式运行

phpunit

注意:如果创建子账户时测试失败,只需将 account_numberaccount_bankbusinesss_email 改为不同的值即可

注意:测试可能因账户验证失败而失败 - Pending OTP validation,这取决于服务是否中断


调试错误

我们理解您在集成我们的库时可能会遇到一些错误。您可以在这里了解更多关于我们的错误信息。

对于 authorizationvalidation 错误响应,请仔细检查您的 API 密钥和请求。如果您遇到 server 错误,请联系支持团队。

支持

如需使用此库的额外帮助,请联系开发者体验(DX)团队,通过电子邮件或在 slack 上。

您还可以关注我们 @FlutterwaveEng 并告诉我们您的想法 😊。

贡献指南

更多关于我们社区贡献指南的信息,请点击这里

许可

通过向此库贡献,您同意您的贡献将根据其 MIT 许可证进行许可。

版权所有 © Flutterwave Inc.

Flutterwave API 参考