iPay88 Plugin for CakePHP
iPay88 is a leading regional Payment Gateway Provider in South East Asia., (*1)
git clone git@github.com:dilab/ipay.git Ipay
, (*2)
composer require dilab/ipay
, (*3)
cake schema create --plugin ipay
Copy ipay_config.php to App/Config folder
cp app/Plugin/Ipay/Config/ipay_config_sample.php app/Config/ipay_config.php
, (*4)
Open app/Config/ipay_config.php and supply correct information for both merchantKey and merchantCode. Leave rest of info intact., (*5)
Ipay.IpayResponse model fires two events below, which you can use to add your business logic., (*6)
Model.IpayResponse.afterValidResponse: This event is fired when a valid response is sent from iPay88. It checks status and signature fields., (*7)
Model.IpayResponse.afterSuccessResponse: This event fires only if event above also happens. It re-query iPay88 server to check if it is valid payment., (*8)
Model.IpayResponse.afterSuccessResponse should be used to identify a successful payment., (*9)
Ipay Plugin comes with backend post by default, it will use this event listener to process, (*10)
In file app/Controller/AppController.php:, (*11)
public function beforeFilter() { $this->loadModel('Ipay.IpayResponse'); $callback = array($this, 'ipaySuccessResponseCallBack'); $this->IpayResponse->getEventManager()->attach( $callback, 'Model.IpayResponse.afterSuccessResponse', array('passParams' => true) ); } public function ipaySuccessResponseCallBack($id) { // Process your order with your business logic // Use $id to get the order information from ipay_repsonses table }
You can use iPay88 to create the a iPay88 payment form, you should always the helper, because it takes care of signature creation., (*12)
$data = array( 'RefNo' => 123, 'Amount' => 100.00, 'Currency' => 'USD', 'ProdDesc' => 'Product', 'UserName' => 'test user', 'UserEmail' => 'test@gmail.com', 'UserContact' => '123', 'ResponseURL' => 'http://domain/controller/response_handler', ); echo $this->Ipay->button($data);
In your response action, simply call Ipay.processPaymentResponse();
, it will take care of all the backend process., (*13)
public response_handler() { // Your other code $this->Ipay->processPaymentResponse(); }
cake test Ipay all
, (*14)
cake test Ipay Integration/IpayRequeryIntegration
, (*15)
(Do not run this test as part of your Unit Test as it will send HTTP request to iPay88 server.), (*16)
Please use Github Issues to report bugs/issues., (*17)
Licensed under The MIT License Redistributions of files must retain the above copyright notice., (*18)
Xu Ding, (*19)
https://github.com/dilab, (*20)