simplepaypal

Yii framework simple module for paypal with paypal setting page via user interface
8 followers

Yii framework simple module for paypal with paypal setting page via user interface

After installing this module user will be able to add/update changes via user interface and these settings will be used for setting sandbox and live paypal from interface. You can also set the 'return', 'cancel' and 'notify' urls.

Requirements

Tested with Yii 1.1.10 and 1.1.12. may work with other versions

Installation

  • Extract the file under protected/modules folder.
  • Import two tables sql into your database; sql included with in the simple module > data folder
  • In main.php file:
'modules' => array(
....
  'SimplePaypal' => array(
    'components' => array(
      'paypalManager' => array(
        'class' => 'SimplePaypal.components.Paypal',
      ),
    ),
  ),
....

Usage

  • Payal Test Page
public function actionPaypalTest() {
  $paypalManager = Yii::app()->getModule('SimplePaypal')->paypalManager;

  $paypalManager->addField('item_name', 'Paypal Test Transaction');
  $paypalManager->addField('amount', '0.01');
  $paypalManager->addField('item_name_1', 'Test Title');
  $paypalManager->addField('quantity_1', '2');
  $paypalManager->addField('amount_1', '3');
  $paypalManager->addField('custom', '111');

  $paypalManager->dumpFields();   // for printing paypal form fields
  //$paypalManager->submitPaypalPost();
}
  • Paypal Return
public function actionConfirm() {
  if (isset($_GET['q']) && $_GET['q'] == 'success' && (isset($_POST["txn_id"]) && isset($_POST["txn_type"]))) {

      /* ToDo: code here after user return from paypal */

  } else {
      throw new CHttpException(404, 'The requested page does not exist.');
  }
}
  • Payal Notify
public function actionNotify() {
  $logCat = 'paypal';
  $paypalManager = Yii::app()->getModule('SimplePaypal')->paypalManager;
  try {
    if ($paypalManager->notify() && $_POST['payment_status'] === 'Completed') {
      $model = new PaymentTransaction;
      $model->user_id = $_POST['custom'];    // need to assign acutal user id
      $model->mc_gross = $_POST['mc_gross'];
      $model->payment_status = $_POST['payment_status'];
      $model->payer_email = $_POST['payer_email'];
      $model->verify_sign = $_POST['verify_sign'];
      $model->txn_id = $_POST['txn_id'];
      $model->payment_type = $_POST['payment_type'];
      $model->receiver_email = $_POST['receiver_email'];
      $model->txn_type = $_POST['txn_type'];
      $model->item_name = $_POST['item_name'];
      $model->ipn_track_id = $_POST['ipn_track_id'];
      $model->save();

      /* update user payement status field here */


      Yii::log('ipn: ' . print_r($_POST, 1), CLogger::LEVEL_ERROR, $logCat);
    } else {
      Yii::log('invalid ipn', CLogger::LEVEL_ERROR, $logCat);
    }
  } catch (Exception $e) {
    Yii::log($e->getMessage(), CLogger::LEVEL_ERROR, $logCat);
  }
}
  • Payal Cancel
public function actionCancel() {
  * ToDo: code here for paypal cancel */
}

Resources

DELETE THIS SECTION IF YOU DO NOT HAVE IT

...external resources for this extension...

Total 4 comments

#19406 report it
john086 at 2015/06/22 04:32am
Automatic redirect

Hi, i use your extension but i have a question. Can i automatically redirect ? Without order summary ?

Now after payment in sandbox i see sumamry order and button return to site, can i redirect automatically ?

#17994 report it
noorkhan885 at 2014/08/25 02:20am
Thanks for this lovely simple extension

Thanx turi nice extension working fine

#15813 report it
turi at 2013/12/19 03:51am
Error Fixed

@Mutyi, thanks for letting me know.

Now, update button should work.

#15812 report it
Mutyi at 2013/12/19 03:41am
Demo seems not to work! Have you tested it?

Hi!

Nice idea, but demo seems not to work. Pressing the "update" button brings out this error:

Cannot modify header information - headers already sent by (output started at /home4/iturinet/public_html/yiitest/protected/models/PaypalSetting.php:1)

Could you please fix it or is there anything I'm doing wrong?

Thanks.

Leave a comment

Please to leave your comment.

Create extension