Search code examples
paypalci-merchant

per-item details ci-merchant and PayPalExpress


I am using ci-merchant and I want to do my cart checkout with PayPal Express.

This is the code I am using:

$this->load->library('merchant');
$this->merchant->load('paypal_express');
$settings = $this->merchant->default_settings();
$settings = array(
    'username' => 'bla bla bla.gmail.com',
    'password' => 'bla bla bla',
    'signature' => 'bla bla bla',
    'test_mode' => true);
$this->merchant->initialize($settings);
$params =array(
            'amount' => $this->cart->format_number($this->cart->total()),
            'currency' => 'EUR',
            'return_url' => 'https://www.example.com/checkout/payment_return/123',
            'cancel_url' => 'https://www.example.com/checkout',
            'description' => 'Esto es desc'
                    );

$response = $this->merchant->purchase($params);

With the above code I am being redirected to PayPal just fine, but at the items column I only see one unique item.

Now I would like to add per-item description, qty and price. But I don't know the where to include my items array, and wich format should I use. I can't find it on ci-merchant docs. Can anybody explain me?


Solution

  • You just need to setup your $params to include all of the fields you would need to make it work, and you need to make sure you're using version 63.0 or later.

    It can be a little tricky, though, because any Express Checkout flow could include more than 1 payment, and each payment included could include more than 1 item, so you'll end up adding 0,1,2, etc. to params.

    Here's a sample of SetExpressCheckout with 1 payment that has 2 items on it.

    [REQUESTDATA] => Array
        (
            [USER] => ***
            [PWD] => ***
            [VERSION] => 97.0
            [BUTTONSOURCE] => AngellEYE_PHPClass
            [SIGNATURE] => ***
            [METHOD] => SetExpressCheckout
            [MAXAMT] => 200.00
            [RETURNURL] => http://paypal.angelleye.com/standard/samples/DoExpressCheckoutPayment.php
            [CANCELURL] => http://paypal.angelleye.com/paypal/class/cancel.php
            [ALLOWNOTE] => 1
            [HDRIMG] => http://paypal.angelleye.com/images/hdrimg.jpg
            [SOLUTIONTYPE] => Sole
            [LANDINGPAGE] => Billing
            [BRANDNAME] => Angell EYE
            [CUSTOMERSERVICENUMBER] => 555-555-5555
            [BUYEREMAILOPTIONENABLE] => 1
            [PAYMENTREQUEST_0_AMT] => 100.00
            [PAYMENTREQUEST_0_CURRENCYCODE] => USD
            [PAYMENTREQUEST_0_ITEMAMT] => 80.00
            [PAYMENTREQUEST_0_SHIPPINGAMT] => 15.00
            [PAYMENTREQUEST_0_TAXAMT] => 5.00
            [PAYMENTREQUEST_0_DESC] => This is a test order.
            [PAYMENTREQUEST_0_NOTETEXT] => This is a test note before ever having left the web site.
            [PAYMENTREQUEST_0_PAYMENTACTION] => Sale
            [L_PAYMENTREQUEST_0_NAME0] => Widget 123
            [L_PAYMENTREQUEST_0_DESC0] => Widget 123
            [L_PAYMENTREQUEST_0_AMT0] => 40.00
            [L_PAYMENTREQUEST_0_NUMBER0] => 123
            [L_PAYMENTREQUEST_0_QTY0] => 1
            [L_PAYMENTREQUEST_0_ITEMURL0] => http://www.angelleye.com/products/123.php
            [L_PAYMENTREQUEST_0_ITEMCATEGORY0] => Digital
            [L_PAYMENTREQUEST_0_NAME1] => Widget 456
            [L_PAYMENTREQUEST_0_DESC1] => Widget 456
            [L_PAYMENTREQUEST_0_AMT1] => 40.00
            [L_PAYMENTREQUEST_0_NUMBER1] => 456
            [L_PAYMENTREQUEST_0_QTY1] => 1
            [L_PAYMENTREQUEST_0_ITEMURL1] => http://www.angelleye.com/products/456.php
            [L_PAYMENTREQUEST_0_ITEMCATEGORY1] => Digital
        )
    

    That results in the following when redirected to PayPal..

    enter image description here