Skip to content

kiakahaDZ/chargily-epay-symfony

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

chargily-epay-symfony

Symfony Plugin for Chargily ePay Gateway

Chargily ePay Gateway

Installation

  1. Via Composer (Recomended)
composer require chargily/epay-symfony
  1. Register the bundle, add this line at the end of the file config/bundles.php
\Chargily\SymfonyBundle\ChargilySymfonyBundle::class => ['all' => true],
  1. Import the services, Add the follow line in config/services.yml
imports:
    - { resource: "@ChargilySymfonyBundle/config/services.yaml" }
  1. Configure the api keys Add the follow line in config/services.yml
parameters:
    api_key: "API_KEY"
    secret_key: "SECRET_KEY"
  1. Process payment and redirection to payment page
        $payload = array(
            "client" => "test",
            'client_email' => "[email protected]",
            "invoice_number" => '123456789',
            "amount" => 110,
            'discount' => 0,
            'mode' => 'CIB',
            'back_url' => "https://test.com",
            'webhook_url' => "https://test.com" . "/" . "webHookSuffixRoute". "/" ."OrderNumber",
            //back_url example when you want to take your host base url
            //'back_url'  => $request->getSchemeAndHttpHost(),
            //webhook_url example when you want to take your host base url and add your suffix route for the webhook
            //'webhook_url' => $request->getSchemeAndHttpHost() . "/" . you_back_url_suffix_here . "/" .Order_Number,
            'comment' => 'My Payment Comment.',
            'api_key' => $this->getParameter('api_key'),
        );

        $chargyliController = new ChargilyEpaySymfonyController();

        $response = $chargyliController->pay($payload);
        $status_code = $response->getStatusCode();
        $response = json_decode($response->getContent());
        if ($status_code == 200) {
            //redirect to chargily payment gateway
            return $this->redirect($response->response);
        } else {
            // This is a error message depending on issue that happen
            dd($status_code . " " . $response->response);
        }
  1. success Message for the Process payment
200 => getting redirection link with success => Redirection to url
  1. Error Message for the Process payment
400 => There mode must be CIB,EDAHABIA option Only
400 => There amount must be numeric and greather or equal than 75
400 => There is issue \for connecting payment gateway. Sorry \for the inconvenience => with error message
400 => There is missing information in payment parameters
  1. Webhook Template
    /**
     * @Route("/chargily/webhook/{OrderNumber}",name="chargily_webhook")
     * @throws \Exception
     */
    public function chargilyWebhook(Request $request)
    {
        //getting your order number
        $number = $request->attributes->get('OrderNumber');

        //part or code for searching your order by number
        /*
         *
         */

        //getting request content
        $data = json_decode($request->getContent(), true);
        $headers = json_decode($request->headers, true);

        $hashedData =  hash_hmac('sha256', json_encode($data) , $this->getParameter('secret_key'));

        if (isset($data) and isset($number)) {
            if($data['invoice']['status'] == 'paid'){

                //part where you update your order status for paid status

                return new JsonResponse([
                    'code' => 200,
                    'message' => 'Update status with success'
                ]);
            }elseif($data['invoice']['status'] == 'failed'){
                //part where you update your order status for failed status

                return new JsonResponse([
                    'code' => 200,
                    'message' => 'Update status with success'
                ]);
            }
            elseif( $data['invoice']['status'] == 'canceled'){
                //part where you update your order status for canceled status
                return new JsonResponse([
                    'code' => 200,
                    'message' => 'Update status with success'
                ]);
            }
        } else {
            return new JsonResponse([
                'code' => 400,
                'message' => 'Update status Failed'
            ]);
        }

    }
  1. Clear the Cache And Enjoy
php bin/console cache:clear

This Plugin is to integrate ePayment gateway with Chargily easily.

  • Currently support payment by CIB / EDAHABIA cards and soon by Visa / Mastercard
  • This repo is recently created for Sylius Plugin, If you are a developer and want to collaborate to the development of this plugin, you are welcomed!

Contribution tips

  1. Make a fork of this repo.
  2. Take a tour to our API documentation here
  3. Get your API Key/Secret from ePay by Chargily dashboard for free.
  4. Start developing.
  5. Finished? Push and merge.

About

Symfony Package for Chargily ePay Gateway

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%