Wallogit.com
2017 © Pedro Peláez
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)