Skip to content

an Yii extension to Simplify the Paypal Express checkout integration

Notifications You must be signed in to change notification settings

sirinibin/easypaypal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

EASY PAYPAL

Easy paypal Simplify integrating paypal express checkout with your Yii app.

DEMO LINK:http://yiidemos.gopagoda.com/index.php?r=site/paypalDemo

USAGE:

1.Download the package and extract into your extensions folder.

2.update import section in config.php 'import'=>array( 'application.extensions.easyPaypal.*' ) 3.update params section in config.php

       'params'=>array(
                        'PAYPAL_API_USERNAME'=>'username here',

                        'PAYPAL_API_PASSWORD'=>'API password here',

                        'PAYPAL_API_SIGNATURE'=>'API signature here',
                        
                        'PAYPAL_MODE'=>'sandbox'   // sandbox/live  default=sandbox
                   
                      )
  1. a)Request paypal to process an express checkout payment

    $products=array( '0'=>array( 'NAME'=>'p1', 'AMOUNT'=>'250.00', 'QTY'=>'2' ), '1'=>array( 'NAME'=>'p2', 'AMOUNT'=>'300.00', 'QTY'=>'2' ), '2'=>array( 'NAME'=>'p3', 'AMOUNT'=>'350.00', 'QTY'=>'2' ), ); /*Optional */ $shipping_address=array( 'FIRST_NAME'=>'Sirin', 'LAST_NAME'=>'K', 'EMAIL'=>'[email protected]', 'MOB'=>'0918606770278', 'ADDRESS'=>'mannarkkad', 'SHIPTOSTREET'=>'mannarkkad', 'SHIPTOCITY'=>'palakkad', 'SHIPTOSTATE'=>'kerala', 'SHIPTOCOUNTRYCODE'=>'IN', 'SHIPTOZIP'=>'678761' ); $e->setShippingInfo($shipping_address); // set Shipping info Optional $e->setCurrencyCode("EUR");//set Currency (USD,HKD,GBP,EUR,JPY,CAD,AUD) $e->setProducts($products); /* Set array of products*/ $e->setShippingCost(5.5);/* Set Shipping cost(Optional) */ $e->returnURL=Yii::app()->createAbsoluteUrl("site/PaypalReturn"); $e->cancelURL=Yii::app()->createAbsoluteUrl("site/PaypalCancel"); $result=$e->requestPayment(); /* The response format from paypal for a payment request Array ( [TOKEN] => EC-9G810112EL503081W [TIMESTAMP] => 2013-12-12T10:29:35Z [CORRELATIONID] => 67da94aea08c3 [ACK] => Success [VERSION] => 65.1 [BUILD] => 8725992 ) */ if(strtoupper($result["ACK"])=="SUCCESS") { /*redirect to the paypal gateway with the given token */ header("location:".$e->PAYPAL_URL.$result["TOKEN"]); } } public function actionPaypalReturn() { /*Look at next step b to see the definition*/ } public function actionPaypalCancel() { /*The user flow wil come here when a user cancels the payment */ /*Do what you want*/ }

    }
    ?>

    Note:After redirecting to paypal gateway there is 2 possible user flows ie ..
       1.he/she may complete the payment successfully.so after this the user will redirected to the actionPaypalReturn()
       2.he/she may cancel the payment & return to the store again.so after this the user press the cancel button he/she will  get redirected
           to the actionPaypalCancel()
    b)Define PaypalReturn Action
        
        <CODE>
        
       public function actionPaypalReturn()
       {
           /*
             here paypal will send you the following 2 parameters
           $_REQUEST[token] => EC-59C81234SW941750C
       $_REQUEST[PayerID] => ZW3KSL2H557XC
       
            */	
            /* You need to do 2 more final steps to complete the user payment. ie 
               1.get the payment details from payment &
               2.make doPayment api call to paypal to complete the payment 
            */
              $e=new ExpressCheckout;
      $paymentDetails=$e->getPaymentDetails($_REQUEST['token']); //1.get payment details by using the given token
      
      /*
        Below you can see a sample format of a successfull payment details response from paypal
           Array
     	    (
     		[TOKEN] => EC-73B51491U8895353R
     		[CHECKOUTSTATUS] => PaymentActionNotInitiated
     		[TIMESTAMP] => 2013-12-12T11:03:09Z
     		[CORRELATIONID] => b812d7a367878
     		[ACK] => Success
     		[VERSION] => 65.1
     		[BUILD] => 8725992
     		[EMAIL] => [email protected]
     		[PAYERID] => ZW3KSL2H557XC
     		[PAYERSTATUS] => verified
     		[FIRSTNAME] => Test
     		[LASTNAME] => User
     		[COUNTRYCODE] => US
     		[SHIPTONAME] => Test User
     		[SHIPTOSTREET] => 1 Main St
     		[SHIPTOCITY] => San Jose
     		[SHIPTOSTATE] => CA
     		[SHIPTOZIP] => 95131
     		[SHIPTOCOUNTRYCODE] => US
     		[SHIPTOCOUNTRYNAME] => United States
     		[ADDRESSSTATUS] => Confirmed
     		[CURRENCYCODE] => USD
     		[AMT] => 1800.00
     		[ITEMAMT] => 1800.00
     		[SHIPPINGAMT] => 0.00
     		[HANDLINGAMT] => 0.00
     		[TAXAMT] => 0.00
     		[INSURANCEAMT] => 0.00
     		[SHIPDISCAMT] => 0.00
     		[L_NAME0] => p1
     		[L_NAME1] => p2
     		[L_NAME2] => p3
     		[L_QTY0] => 2
     		[L_QTY1] => 2
     		[L_QTY2] => 2
     		[L_TAXAMT0] => 0.00
     		[L_TAXAMT1] => 0.00
     		[L_TAXAMT2] => 0.00
     		[L_AMT0] => 250.00
     		[L_AMT1] => 300.00
     		[L_AMT2] => 350.00
     		[L_ITEMWEIGHTVALUE0] =>    0.00000
     		[L_ITEMWEIGHTVALUE1] =>    0.00000
     		[L_ITEMWEIGHTVALUE2] =>    0.00000
     		[L_ITEMLENGTHVALUE0] =>    0.00000
     		[L_ITEMLENGTHVALUE1] =>    0.00000
     		[L_ITEMLENGTHVALUE2] =>    0.00000
     		[L_ITEMWIDTHVALUE0] =>    0.00000
     		[L_ITEMWIDTHVALUE1] =>    0.00000
     		[L_ITEMWIDTHVALUE2] =>    0.00000
     		[L_ITEMHEIGHTVALUE0] =>    0.00000
     		[L_ITEMHEIGHTVALUE1] =>    0.00000
     		[L_ITEMHEIGHTVALUE2] =>    0.00000
     		[PAYMENTREQUEST_0_CURRENCYCODE] => USD
     		[PAYMENTREQUEST_0_AMT] => 1800.00
     		[PAYMENTREQUEST_0_ITEMAMT] => 1800.00
     		[PAYMENTREQUEST_0_SHIPPINGAMT] => 0.00
     		[PAYMENTREQUEST_0_HANDLINGAMT] => 0.00
     		[PAYMENTREQUEST_0_TAXAMT] => 0.00
     		[PAYMENTREQUEST_0_INSURANCEAMT] => 0.00
     		[PAYMENTREQUEST_0_SHIPDISCAMT] => 0.00
     		[PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED] => false
     		[PAYMENTREQUEST_0_SHIPTONAME] => Test User
     		[PAYMENTREQUEST_0_SHIPTOSTREET] => 1 Main St
     		[PAYMENTREQUEST_0_SHIPTOCITY] => San Jose
     		[PAYMENTREQUEST_0_SHIPTOSTATE] => CA
     		[PAYMENTREQUEST_0_SHIPTOZIP] => 95131
     		[PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE] => US
     		[PAYMENTREQUEST_0_SHIPTOCOUNTRYNAME] => United States
     		[PAYMENTREQUEST_0_ADDRESSSTATUS] => Confirmed
     		[L_PAYMENTREQUEST_0_NAME0] => p1
     		[L_PAYMENTREQUEST_0_NAME1] => p2
     		[L_PAYMENTREQUEST_0_NAME2] => p3
     		[L_PAYMENTREQUEST_0_QTY0] => 2
     		[L_PAYMENTREQUEST_0_QTY1] => 2
     		[L_PAYMENTREQUEST_0_QTY2] => 2
     		[L_PAYMENTREQUEST_0_TAXAMT0] => 0.00
     		[L_PAYMENTREQUEST_0_TAXAMT1] => 0.00
     		[L_PAYMENTREQUEST_0_TAXAMT2] => 0.00
     		[L_PAYMENTREQUEST_0_AMT0] => 250.00
     		[L_PAYMENTREQUEST_0_AMT1] => 300.00
     		[L_PAYMENTREQUEST_0_AMT2] => 350.00
     		[L_PAYMENTREQUEST_0_ITEMWEIGHTVALUE0] =>    0.00000
     		[L_PAYMENTREQUEST_0_ITEMWEIGHTVALUE1] =>    0.00000
     		[L_PAYMENTREQUEST_0_ITEMWEIGHTVALUE2] =>    0.00000
     		[L_PAYMENTREQUEST_0_ITEMLENGTHVALUE0] =>    0.00000
     		[L_PAYMENTREQUEST_0_ITEMLENGTHVALUE1] =>    0.00000
     		[L_PAYMENTREQUEST_0_ITEMLENGTHVALUE2] =>    0.00000
     		[L_PAYMENTREQUEST_0_ITEMWIDTHVALUE0] =>    0.00000
     		[L_PAYMENTREQUEST_0_ITEMWIDTHVALUE1] =>    0.00000
     		[L_PAYMENTREQUEST_0_ITEMWIDTHVALUE2] =>    0.00000
     		[L_PAYMENTREQUEST_0_ITEMHEIGHTVALUE0] =>    0.00000
     		[L_PAYMENTREQUEST_0_ITEMHEIGHTVALUE1] =>    0.00000
     		[L_PAYMENTREQUEST_0_ITEMHEIGHTVALUE2] =>    0.00000
     		[PAYMENTREQUESTINFO_0_ERRORCODE] => 0
     	    )
         */
         if($paymentDetails['ACK']=="Success")
         {
     	$ack=$e->doPayment($paymentDetails);  //2.Do payment
     	
     	echo "<pre>";
     	print_r($ack);
     	echo "</pre>";
         }
         
         /*
           Below you can see a sample successfull response of a payment process from paypal
          Array
     	  (
     	      [TOKEN] => EC-1AG000796M3683304
     	      [SUCCESSPAGEREDIRECTREQUESTED] => false
     	      [TIMESTAMP] => 2013-12-12T11:57:17Z
     	      [CORRELATIONID] => 89a33a155e512
     	      [ACK] => Success
     	      [VERSION] => 65.1
     	      [BUILD] => 8725992
     	      [TRANSACTIONID] => 7S255873FM437633X
     	      [TRANSACTIONTYPE] => expresscheckout
     	      [PAYMENTTYPE] => instant
     	      [ORDERTIME] => 2013-12-12T11:57:17Z
     	      [AMT] => 1800.00
     	      [FEEAMT] => 52.50
     	      [TAXAMT] => 0.00
     	      [CURRENCYCODE] => USD
     	      [PAYMENTSTATUS] => Completed
     	      [PENDINGREASON] => None
     	      [REASONCODE] => None
     	      [PROTECTIONELIGIBILITY] => Eligible
     	      [INSURANCEOPTIONSELECTED] => false
     	      [SHIPPINGOPTIONISDEFAULT] => false
     	      [PAYMENTINFO_0_TRANSACTIONID] => 7S255873FM437633X
     	      [PAYMENTINFO_0_TRANSACTIONTYPE] => expresscheckout
     	      [PAYMENTINFO_0_PAYMENTTYPE] => instant
     	      [PAYMENTINFO_0_ORDERTIME] => 2013-12-12T11:57:17Z
     	      [PAYMENTINFO_0_AMT] => 1800.00
     	      [PAYMENTINFO_0_FEEAMT] => 52.50
     	      [PAYMENTINFO_0_TAXAMT] => 0.00
     	      [PAYMENTINFO_0_CURRENCYCODE] => USD
     	      [PAYMENTINFO_0_PAYMENTSTATUS] => Completed
     	      [PAYMENTINFO_0_PENDINGREASON] => None
     	      [PAYMENTINFO_0_REASONCODE] => None
     	      [PAYMENTINFO_0_PROTECTIONELIGIBILITY] => Eligible
     	      [PAYMENTINFO_0_PROTECTIONELIGIBILITYTYPE] => ItemNotReceivedEligible,UnauthorizedPaymentEligible
     	      [PAYMENTINFO_0_ERRORCODE] => 0
     	      [PAYMENTINFO_0_ACK] => Success
     	  )
         
         */
         
       }
        </CODE>
    

About

an Yii extension to Simplify the Paypal Express checkout integration

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages