flutterwavedev / flutterwave-php
一个用于集成Flutterwave的Rave支付网关的简单SDK
这个包的官方仓库似乎已经不存在,因此该包已被冻结。
v1.2.0
2019-03-14 01:38 UTC
Requires
- php: >=5.4.0
- mashape/unirest-php: ^3.0
- monolog/monolog: 1.*
- vlucas/phpdotenv: ^2.5
Requires (Dev)
- mockery/mockery: ^1.2
- phpunit/phpunit: ^6.0
This package is auto-updated.
Last update: 2024-06-30 00:53:18 UTC
README
Rave PHP SDK
类文档可在此处找到 https://flutterwave.github.io/Flutterwave-Rave-PHP-SDK/packages/Default.html
使用此库将您的PHP应用程序集成到Rave。
编辑 paymentForm.php 和 processPayment.php 文件以适应您的需求。这两个文件都有良好的文档。
只需在浏览器中将地址重定向到 paymentForm.php 文件即可处理支付。
由于部分用户可能没有安装composer,所以将vendor文件夹提交到项目中,以方便安装。建议使用以下命令更新项目依赖:
$ composer require flutterwavedev/flutterwave-php
示例实现
在此实现中,我们期望对该脚本的表单编码POST请求。请求将包含以下参数。
- payment_method
可以是卡、账户、两者都行 - description
您的交易描述 - logo
您的logo URL - title
您的交易标题 - country
您的交易国家 - currency
您的交易货币 - email
您的客户的电子邮件 - firstname
您的客户的首名 - lastname
您的客户的姓氏 - phonenumber
您的客户的电话号码 - pay_button_text
您喜欢的支付按钮文本 - ref
您的交易参考。每个交易必须唯一。默认情况下,Rave类为每个交易生成一个唯一的交易参考。只有在不注释下面脚本的相关部分时才传递此参数。
// Prevent direct access to this class define("BASEPATH", 1); include('lib/rave.php'); include('lib/raveEventHandlerInterface.php'); use Flutterwave\Rave; use Flutterwave\Rave\EventHandlerInterface; $URL = (isset($_SERVER['HTTPS']) ? 'https' : 'http') . '://'.$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI]; $getData = $_GET; $postData = $_POST; $publicKey = '****YOUR**PUBLIC**KEY****'; // Remember to change this to your live public keys when going live $secretKey = '****YOUR**SECRET**KEY****'; // Remember to change this to your live secret keys when going live $env = 'staging'; // Remember to change this to 'live' when you are going live $prefix = 'MY_APP_NAME'; // Change this to the name of your business or app $overrideRef = false; // Uncomment here to enforce the useage of your own ref else a ref will be generated for you automatically // if($postData['ref']){ // $prefix = $postData['ref']; // $overrideRef = true; // } $payment = new Rave($publicKey, $secretKey, $prefix, $env, $overrideRef); // This is where you set how you want to handle the transaction at different stages class myEventHandler implements EventHandlerInterface{ /** * This is called when the Rave class is initialized * */ function onInit($initializationData){ // Save the transaction to your DB. echo 'Payment started......'.json_encode($initializationData).'<br />'; //Remember to delete this line } /** * This is called only when a transaction is successful * */ function onSuccessful($transactionData){ // Get the transaction from your DB using the transaction reference (txref) // Check if you have previously given value for the transaction. If you have, redirect to your successpage else, continue // Comfirm that the transaction is successful // Confirm that the chargecode is 00 or 0 // Confirm that the currency on your db transaction is equal to the returned currency // Confirm that the db transaction amount is equal to the returned amount // Update the db transaction record (includeing parameters that didn't exist before the transaction is completed. for audit purpose) // Give value for the transaction // Update the transaction to note that you have given value for the transaction // You can also redirect to your success page from here echo 'Payment Successful!'.json_encode($transactionData).'<br />'; //Remember to delete this line } /** * This is called only when a transaction failed * */ function onFailure($transactionData){ // Get the transaction from your DB using the transaction reference (txref) // Update the db transaction record (includeing parameters that didn't exist before the transaction is completed. for audit purpose) // You can also redirect to your failure page from here echo 'Payment Failed!'.json_encode($transactionData).'<br />'; //Remember to delete this line } /** * This is called when a transaction is requeryed from the payment gateway * */ function onRequery($transactionReference){ // Do something, anything! echo 'Payment requeried......'.$transactionReference.'<br />'; //Remember to delete this line } /** * This is called a transaction requery returns with an error * */ function onRequeryError($requeryResponse){ // Do something, anything! echo 'An error occured while requeying the transaction...'.json_encode($requeryResponse).'<br />'; //Remember to delete this line } /** * This is called when a transaction is canceled by the user * */ function onCancel($transactionReference){ // Do something, anything! // Note: Somethings a payment can be successful, before a user clicks the cancel button so proceed with caution echo 'Payment canceled by user......'.$transactionReference.'<br />'; //Remember to delete this line } /** * This is called when a transaction doesn't return with a success or a failure response. This can be a timedout transaction on the Rave server or an abandoned transaction by the customer. * */ function onTimeout($transactionReference, $data){ // Get the transaction from your DB using the transaction reference (txref) // Queue it for requery. Preferably using a queue system. The requery should be about 15 minutes after. // Ask the customer to contact your support and you should escalate this issue to the flutterwave support team. Send this as an email and as a notification on the page. just incase the page timesout or disconnects echo 'Payment timeout......'.$transactionReference.' - '.json_encode($data).'<br />'; //Remember to delete this line } } if($postData['amount']){ // Make payment $payment ->eventHandler(new myEventHandler) ->setAmount($postData['amount']) ->setPaymentMethod($postData['payment_method']) // value can be card, account or both ->setDescription($postData['description']) ->setLogo($postData['logo']) ->setTitle($postData['title']) ->setCountry($postData['country']) ->setCurrency($postData['currency']) ->setEmail($postData['email']) ->setFirstname($postData['firstname']) ->setLastname($postData['lastname']) ->setPhoneNumber($postData['phonenumber']) ->setPayButtonText($postData['pay_button_text']) ->setRedirectUrl($URL) // ->setMetaData(array('metaname' => 'SomeDataName', 'metavalue' => 'SomeValue')) // can be called multiple times. Uncomment this to add meta datas // ->setMetaData(array('metaname' => 'SomeOtherDataName', 'metavalue' => 'SomeOtherValue')) // can be called multiple times. Uncomment this to add meta datas ->initialize(); }else{ if($getData['cancelled'] && $getData['txref']){ // Handle canceled payments $payment ->eventHandler(new myEventHandler) ->requeryTransaction($getData['txref']) ->paymentCanceled($getData['txref']); }elseif($getData['txref']){ // Handle completed payments $payment->logger->notice('Payment completed. Now requerying payment.'); $payment ->eventHandler(new myEventHandler) ->requeryTransaction($getData['txref']); }else{ $payment->logger->warn('Stop!!! Please pass the txref parameter!'); echo 'Stop!!! Please pass the txref parameter!'; } }
支持直接收费
将您的PUBLIC_KEY、SECRET_KEY、ENV保存到 .env 文件中
PUBLIC_KEY = "****YOUR**PUBLIC**KEY****" SECRET_KEY = "****YOUR**SECRET**KEY****" ENV = "staging or live"
用法
charge
资源
您也可以在docs文件夹中找到类文档。在那里,您将找到关于 Rave 类和 EventHandlerInterface 的文档。
待办事项
- 编写单元测试
- 支持标记化支付