camoo / enkap-oauth
E-commerce Plugins for SmobilPay. OAuth Library
Installs: 60
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:camoo-plugin
Requires
- php: >=8.1
- ext-json: *
- camoo/cache: ^1.0
- camoo/curl-http-client: ^1.1
- vlucas/phpdotenv: ^5.3
- vlucas/valitron: ^1.4
Requires (Dev)
- phpunit/phpunit: ^8.0
Suggests
- phpunit/phpunit: Allows automated tests to be run without system-wide install.
This package is auto-updated.
Last update: 2024-10-21 13:34:43 UTC
README
SDK for e-nkap. SmobilPay e-commerce
Note Only use this branch with PHP 8.1 and above
Note Compatibility with PHP releases < 8.1 are being maintained in the v1.0 branch
Installation
composer require camoo/enkap-oauth
Usage
use Enkap\OAuth\Services\OAuthService; $consumerKey = 'hqBvUfOjdLoP04763L_LDO'; $consumerSecret = 'FwxKTJzN4jE8IYdeCM83'; $service = new OAuthService($key, $secret); var_dump($service->getAccessToken());
Initiate payment
use Enkap\OAuth\Services\OAuthService; use Enkap\OAuth\Model\Order; use Enkap\OAuth\Services\OrderService; use Enkap\OAuth\Lib\Helper; $consumerKey = 'hqBvUfOjdLoP04763L_LDO'; $consumerSecret = 'FwxKTJzN4jE8IYdeCM83'; $orderService = new OrderService($key, $secret); $order = $orderService->loadModel(Order::class); $dataData = [ 'merchantReference' => uniqid('', true), 'email' => 'enkap@mail.tld', 'customerName' => 'My customer', 'totalAmount' => 6400, 'description' => 'Camoo Test Payment', 'currency' => 'XAF', 'items' => [ [ 'itemId' => '1', 'particulars' => 'soya bien pimenté', 'unitCost' => 100, 'quantity' => 50, 'subTotal' => 5000 ], [ 'itemId' => 2, 'unitCost' => 700, 'quantity' => 2, 'particulars' => 'Bière 33 Export', 'subTotal' => 1400, ] ] ]; try { $order->fromStringArray($dataData); $response = $orderService->place($order); // Save references into your Database $entity = $this->Payments->newEntity($dataData); $entity->set('oder_transaction_id', $response->getOrderTransactionId()); $this->Payments->save($entity); // redirect User to Enkap System Helper::redirect($response->getRedirectUrl()); } catch (\Throwable $e) { var_dump($e->getMessage()); }
Get Payment Details
use Enkap\OAuth\Services\PaymentService; use Enkap\OAuth\Model\Payment; $consumerKey = 'hqBvUfOjdLoP04763L_LDO'; $consumerSecret = 'FwxKTJzN4jE8IYdeCM83'; $trxId = 'e07355446e0140ea9876a6ba38b155f3'; $paymentService = new PaymentService($key, $secret); $payment = $paymentService->getByTransactionId($trxId); // status var_dump($payment->getPaymentStatus()); // order var_dump($payment->getOrder()); # OR $internalTrxId = '61405dc1a38878.58742206'; $paymentService = new PaymentService($key, $secret); $payment = $paymentService->getByOrderMerchantId($internalTrxId); // status var_dump($payment->getPaymentStatus()); // order var_dump($payment->getOrder());
Check Payment Status
use Enkap\OAuth\Services\StatusService; use Enkap\OAuth\Lib\Helper; use Enkap\OAuth\Model\Status; $consumerKey = 'hqBvUfOjdLoP04763L_LDO'; $consumerSecret = 'FwxKTJzN4jE8IYdeCM83'; $trxId = 'e07355446e0140ea9876a6ba38b155f3'; $statusService = new StatusService($key, $secret); $status = $statusService->getByTransactionId($trxId); // Update your database $query = $this->Payments->query()->set(['status' => $status->getCurrent()])->where(['oder_transaction_id' => $trxId]); if ($status->confirmed()){ // Payment successfully completed // send Item to user/customer return; } if ($status->failed() || $status->canceled()) { // delete that reference from your Database }
Set Callback Urls to receive Payment status automatically
use Enkap\OAuth\Services\CallbackUrlService; use Enkap\OAuth\Model\CallbackUrl; $setup = new CallbackUrlService($key, $secret); $callBack = $setup->loadModel(CallbackUrl::class); # The URL where to redirect the user after the payment is completed. It will contain the reference id generated by your system which was provided in the initial order placement request. E-nkap will append your reference id in the path of the URL with the form: http://localhost/action/return/{yourReferenceId} $callBack->return_url = 'http://localhost/action/return'; # The URL used by E-nkap to instantly notify you about the status of the payment. E-nkap would append your reference Id (generated by your system and provided in the initial order placement request) as path variable and send a PUT with the status of the payment in the body as {"status":"[txStatus]"}, where [txStatus] the payment status. $callBack->notification_url = 'http://localhost/action/notify'; // this action should accept PUT Request $setup->set($callBack);
Delete Order
use Enkap\OAuth\Services\OrderService; use Enkap\OAuth\Model\Order; $consumerKey = 'hqBvUfOjdLoP04763L_LDO'; $consumerSecret = 'FwxKTJzN4jE8IYdeCM83'; $trxId = 'e07355446e0140ea9876a6ba38b155f3'; $orderService = new OrderService($key, $secret); $orderModel = $orderService->loadModel(Order::class); $orderModel->order_transaction_id = $trxId; $result = $orderService->delete($orderModel); if ($result === true) { // order has been deleted //... }