yaphet17 / chapa
Chapa支付网关的PHP SDK
v1.0.0
2022-08-22 23:02 UTC
Requires
- guzzlehttp/guzzle: ^7.0
Requires (Dev)
- phpunit/phpunit: ^9.5
README
Chapa支付网关的非官方PHP库。
描述
将Chapa集成到您的应用中非常简单。那么使用这个库您能获得什么好处呢?好吧,这里有一些您通过使用这个库可以获得的好处。
- 让您能够专注于构建您的应用程序,而不是花费时间在集成上。
- 它提供了实用方法,可以帮助您节省一些代码。例如,该库支持开箱即用的数据验证,因此您无需手动清理用户输入。
- 该库为您提供了一个易于使用的接口,以面向对象的方式管理发送到或从Chapa API的任何数据。
文档
访问官方Chapa的API文档
安装
转到您的项目目录,并使用以下命令安装库的最新版本
composer require yaphet17/chapa
用法
实例化一个 Chapa
类。
$chapa = new Chapa('{your-secrete-key}');
创建一个 PostData
对象,该对象将代表您的支付详情。PostData
类使用 Fluent Interface,因此您可以将设置方法链接起来。
$postData = new PostData(); $postData->amount('100') ->currency('ETB') ->email('abebe@bikila.com') ->firstname('Abebe') ->lastname('Bikila') ->transactionRef('transaction-ref') ->callbackUrl('https://chapa.co') ->customizations( array( 'customization[title]' => 'I love e-commerce', 'customization[description]' => 'It is time to pay' ) );
您还可以使用库提供的实用方法生成一个唯一且方便的交易参考令牌。Util
类提供了一个方法,可以通过结合您的自定义前缀(例如公司首字母,可选)、当前时间戳和随机字符串来生成令牌。
$transactionRef = Util::generateToken('acme'); // generated transaction reference will start with the prefix aceme
要初始化交易,您只需在 Chapa
类中调用 initialize
方法。传递您在上一步中创建的 PostData
对象。
$response1 = $chapa->initialize($postData);
您还可以使用 Chapa
类内的 verify
方法验证您的交易。该方法接受一个交易参考令牌,以便它可以唯一地识别特定交易。
$response2 = $chapa->verify($transactionRef);
上述两种方法(即 initialize
和 verify
)都返回 ReponseData
类的实例。该类允许您以面向对象的方式访问Chapa API返回的数据。它具有与Chapa API返回的JSON数据相同的结构,包括状态码和原始JSON数据。
$statusCode = $resopnse1->getStatusCode(); $message = $response1->getMessage(); $success = $response1->getStatus(); $data = $response1->getData();
如果出于某种原因您需要访问原始JSON数据,您可以轻松地使用 getRawJSON
方法。
$json = $response->getRawJson();
以下是上述步骤的完整实现。
$chapa = new Chapa('{your-secrete-key}'); $transactionRef = Util::generateToken(); $postData = new PostData(); $postData->amount('100') ->currency('ETB') ->email('abebe@bikila.com') ->firstname('test') ->lastname('user') ->transactionRef($transactionRef) ->callbackUrl('https://chapa.co') ->customizations( array( 'customization[title]' => 'E-commerce', 'customization[description]' => 'It is time to pay' ) ); $response1 = $chapa->initialize($postData); print_r($response1->getMessage()); print_r($response1->getStatus()); print_r($response1->getData()); echo $response->getRawJson(); $response2 = $chapa->verify($transactionRef); if($response2->getStatusCode() == 200){ echo 'Payment not verified because ' . $response2->getMessage()['message']; }
贡献
任何形式的对该库的贡献都将受到欢迎。为小修改提交PR或为破坏性更改创建问题。
此开源库受MIT许可条款的约束。
享受。