Page 1 of 2 12 LastLast
Results 1 to 10 of 11
  1. #1
    Join Date
    Aug 2009
    Location
    Bedford, England
    Posts
    966
    Plugin Contributions
    0

    Default Implementing PayPal Pro "Hosted Solution"

    Has anyone done this before? This service basically signs you up to the pro service to accept credits card however gives you the ability to have it all hosted on PayPal - much how website paymens standard works.

    This is what my preference is, and I wish to implement. Reading the documentation, the simple HTML integration of this is via form POST, again I believe the same as website payments standard.

    So my question is, if I sign up to the service, will it be a simple case leaving the standard module in place and changing the form action url to be as per what they show in their example?

    ====
    Below is an example of a simple Hosted Solution integration:
    1.Sample Hosted Solution Form POST:
    HTML Code:
    <form action="https://securepayments.paypal.com/webapps/HostedSoleSolutionApp/webflow/sparta/hostedSoleSolutionProcess"
    method="post">
    <input type="hidden" name="cmd" value="_hosted-payment">
    <input type="hidden" name="subtotal" value="50">
    <input type="hidden" name="business" value="HNZ3QZMCPBAAA">
    <input type="hidden" name="paymentaction" value="sale">
    <input type="hidden" name="return"
    value="https://yourwebsite.com/receipt_page.html">
    <input type="submit" name="METHOD" value="Pay">
    </form>
    The bold text is the value for the corresponding variable. It is recommended that you enclose the values in quotes. For detailed information on these values, refer to Table 2.1, “HTML Variables for Settings of Payment Page” on page 19.
    2.Output the HTML text into your website at the point where buyers will proceed with their checkout.
    3.Open your checkout page and test the button to ensure that it opens the PayPal payment page
    ===

    I assume if I changed to the Pro module this will put the card payment on my website pages which is what I dont want.

    Look forward to any advice/prior experiences with this.

    Cheers

    Phil
    Phil Rogers
    A problem shared is a problem solved.

  2. #2
    Join Date
    Aug 2009
    Location
    Bedford, England
    Posts
    966
    Plugin Contributions
    0

    Default Re: Implementing PayPal Pro "Hosted Solution"

    to expand on my previous post. here is the documentation for the implementation:
    https://www.paypalobjects.com/websta...olution_uk.pdf

    there are basically three methods to implement the hosted solution.
    - API - I assume this is the code that the payments pro module uses for having the credit card for on the site
    - iFrame - this is an embedded payment page that goes in the checkout on the site (I believe there is a module for this too)
    - HTML POST - this is what I want to change to. This alters the standard button to direct the customer to the Pro Hosted Solution payment page.

    Within the document, under Chapter B, it explains how to alter Website Payment Standard to Hosted Solution.

    Basically, I have established that:

    a. Detailed order lines will need to be switched off as the hosted solution does not support it.

    b. The following code on the buy now button need to change from this:
    HTML Code:
    <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_xclick">
    to this:
    HTML Code:
    <form action="https://securepayments.paypal.com/webapps/HostedSoleSolutionApp/ webflow/sparta/hostedSoleSolutionProcess?cmd=_hosted-payment" method="post"><input type="hidden" name="cmd" value="_hosted-payment">
    c. The variable amount needs to be changed to subtotal.

    What I am after help with is:
    1. How to make the changes in b & c above.
    2. With the variable change in c, will any IPN handling need to be changed at all? I had a quick look at the IPN file and could not see any reference to that variable so I am hoping not.

    Paypal technical support are really not helping answering these questions and could really do with some of the gurus of zen cart to advise me.

    So to summarise, the changes above as per the document should alter website payments standard module so that instead of directing to the website payments standard page for payment, it directs to the paypal custom hosted pro page for paypal/credit/debit card payment. Everything else in theory should remain the same.

    Hope someone can help.
    Phil Rogers
    A problem shared is a problem solved.

  3. #3
    Join Date
    Aug 2009
    Location
    Bedford, England
    Posts
    966
    Plugin Contributions
    0

    Default Re: Implementing PayPal Pro "Hosted Solution"

    Wow, well the code for this is a bit of a mine feild which is why I assume there has not yet been any responses. Delving in further myself I beieve I have found the function that creates the button.

    PHP Code:
    function process_button() {
        global 
    $db$order$currencies$currency;
        
    $options = array();
        
    $optionsCore = array();
        
    $optionsPhone = array();
        
    $optionsShip = array();
        
    $optionsLineItems = array();
        
    $optionsAggregate = array();
        
    $optionsTrans = array();
        
    $buttonArray = array();
     
     
        
    // save the session stuff permanently in case paypal loses the session
        
    $_SESSION['ppipn_key_to_remove'] = session_id();
        
    $db->Execute("delete from " TABLE_PAYPAL_SESSION " where session_id = '" zen_db_input($_SESSION['ppipn_key_to_remove']) . "'");
     
        
    $sql "insert into " TABLE_PAYPAL_SESSION " (session_id, saved_session, expiry) values (
                '" 
    zen_db_input($_SESSION['ppipn_key_to_remove']) . "',
                '" 
    base64_encode(serialize($_SESSION)) . "',
                '" 
    . (time() + (1*60*60*24*2)) . "')";
     
        
    $db->Execute($sql);
     
        
    $my_currency select_pp_currency();
        
    $this->transaction_currency $my_currency;
     
        
    $this->totalsum $order->info['total'] = zen_round($order->info['total'], 2);
        
    $this->transaction_amount zen_round($this->totalsum $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency));
     
        
    $telephone preg_replace('/\D/'''$order->customer['telephone']);
        if (
    $telephone != '') {
          
    $optionsPhone['H_PhoneNumber'] = $telephone;
          if (
    in_array($order->customer['country']['iso_code_2'], array('US','CA'))) {
            
    $optionsPhone['night_phone_a'] = substr($telephone,0,3);
            
    $optionsPhone['night_phone_b'] = substr($telephone,3,3);
            
    $optionsPhone['night_phone_c'] = substr($telephone,6,4);
            
    $optionsPhone['day_phone_a'] = substr($telephone,0,3);
            
    $optionsPhone['day_phone_b'] = substr($telephone,3,3);
            
    $optionsPhone['day_phone_c'] = substr($telephone,6,4);
        } else {
            
    $optionsPhone['night_phone_b'] = $telephone;
            
    $optionsPhone['day_phone_b'] = $telephone;
          }
        }
     
        
    $optionsCore = array(
                       
    'lc' => $this->getLanguageCode(),
    //                   'lc' => $order->customer['country']['iso_code_2'],
                       
    'charset' => CHARSET,
                       
    'page_style' => MODULE_PAYMENT_PAYPAL_PAGE_STYLE,
                       
    'custom' => zen_session_name() . '=' zen_session_id(),
                       
    'business' => MODULE_PAYMENT_PAYPAL_BUSINESS_ID,
                       
    'return' => zen_href_link(FILENAME_CHECKOUT_PROCESS'referer=paypal''SSL'),
                       
    'cancel_return' => zen_href_link(FILENAME_CHECKOUT_PAYMENT'''SSL'),
                       
    'shopping_url' => zen_href_link(FILENAME_SHOPPING_CART'''SSL'),
                       
    'notify_url' => zen_href_link('ipn_main_handler.php''''SSL',false,false,true),
                       
    'redirect_cmd' => '_xclick','rm' => 2,'bn' => 'zencart','mrb' => 'R-6C7952342H795591R','pal' => '9E82WJBKKGPLQ',
                       );
        
    $optionsCust = array(
                       
    'first_name' => replace_accents($order->customer['firstname']),
                       
    'last_name' => replace_accents($order->customer['lastname']),
                       
    'address1' => replace_accents($order->customer['street_address']),
                       
    'city' => replace_accents($order->customer['city']),
                       
    'state' => zen_get_zone_code($order->customer['country']['id'], $order->customer['zone_id'], $order->customer['state']),
                       
    'zip' => $order->customer['postcode'],
                       
    'country' => $order->customer['country']['iso_code_2'],
                       
    'email' => $order->customer['email_address'],
                       );
        
    // address line 2 is optional
        
    if ($order->customer['suburb'] != ''$optionsCust['address2'] = $order->customer['suburb'];
        
    // different format for Japanese address layout:
        
    if ($order->customer['country']['iso_code_2'] == 'JP'$optionsCust['zip'] = substr($order->customer['postcode'], 03) . '-' substr($order->customer['postcode'], 3);
        if (
    MODULE_PAYMENT_PAYPAL_ADDRESS_REQUIRED == 2) {
          
    $optionsCust = array(
                       
    'first_name' => replace_accents($order->delivery['firstname'] != '' $order->delivery['firstname'] : $order->billing['firstname']),
                       
    'last_name' => replace_accents($order->delivery['lastname'] != '' $order->delivery['lastname'] : $order->billing['lastname']),
                       
    'address1' => replace_accents($order->delivery['street_address'] != '' $order->delivery['street_address'] : $order->billing['street_address']),
                       
    'city' => replace_accents($order->delivery['city'] != '' $order->delivery['city'] : $order->billing['city']),
                       
    'state' => ($order->delivery['country']['id'] != '' zen_get_zone_code($order->delivery['country']['id'], $order->delivery['zone_id'], $order->delivery['state']) : zen_get_zone_code($order->billing['country']['id'], $order->billing['zone_id'], $order->billing['state'])),
                       
    'zip' => ($order->delivery['postcode'] != '' $order->delivery['postcode'] : $order->billing['postcode']),
                       
    'country' => ($order->delivery['country']['title'] != '' $order->delivery['country']['title'] : $order->billing['country']['title']),
                       
    'country_code' => ($order->delivery['country']['iso_code_2'] != '' $order->delivery['country']['iso_code_2'] : $order->billing['country']['iso_code_2']),
                       
    'email' => $order->customer['email_address'],
                       );
          if (
    $order->delivery['suburb'] != ''$optionsCust['address2'] = $order->delivery['suburb'];
          if (
    $order->delivery['country']['iso_code_2'] == 'JP'$optionsCust['zip'] = substr($order->delivery['postcode'], 03) . '-' substr($order->delivery['postcode'], 3);
        }
        
    $optionsShip['no_shipping'] = MODULE_PAYMENT_PAYPAL_ADDRESS_REQUIRED;
        if (
    MODULE_PAYMENT_PAYPAL_ADDRESS_OVERRIDE == '1'$optionsShip['address_override'] = MODULE_PAYMENT_PAYPAL_ADDRESS_OVERRIDE;
        
    // prepare cart contents details where possible
        
    if (MODULE_PAYMENT_PAYPAL_DETAILED_CART == 'Yes'$optionsLineItems ipn_getLineItemDetails($my_currency);
        if (
    sizeof($optionsLineItems) > 0) {
          
    $optionsLineItems['cmd'] = '_cart';
    //      $optionsLineItems['num_cart_items'] = sizeof($order->products);
          
    if (isset($optionsLineItems['shipping'])) {
            
    $optionsLineItems['shipping_1'] = $optionsLineItems['shipping'];
            unset(
    $optionsLineItems['shipping']);
          }
          unset(
    $optionsLineItems['subtotal']);
          
    // if line-item details couldn't be kept due to calculation mismatches or discounts etc, default to aggregate mode
          
    if (!isset($optionsLineItems['item_name_1']) || $optionsLineItems['creditsExist'] == TRUE$optionsLineItems = array();
          
    //if ($optionsLineItems['amount'] != $this->transaction_amount) $optionsLineItems = array();
          // debug:
          //ipn_debug_email('Line Item Details (if blank, this means there was a data mismatch or credits applied, and thus bypassed): ' . "\n" . print_r($optionsLineItems, true));
          
    unset($optionsLineItems['creditsExist']);
        }
        
    $optionsAggregate = array(
                       
    'cmd' => '_ext-enter',
                       
    'item_name' => MODULE_PAYMENT_PAYPAL_PURCHASE_DESCRIPTION_TITLE,
                       
    'item_number' => MODULE_PAYMENT_PAYPAL_PURCHASE_DESCRIPTION_ITEMNUM,
                       
    //'num_cart_items' => sizeof($order->products),
                       
    'amount' => number_format($this->transaction_amount$currencies->get_decimal_places($my_currency)),
                       
    'shipping' => '0.00',
                        );
        if (
    MODULE_PAYMENT_PAYPAL_TAX_OVERRIDE == 'true'$optionsAggregate['tax'] = '0.00';
        if (
    MODULE_PAYMENT_PAYPAL_TAX_OVERRIDE == 'true'$optionsAggregate['tax_cart'] = '0.00';
        
    $optionsTrans = array(
                       
    'upload' => (int)(sizeof($order->products) > 0),
                       
    'currency_code' => $my_currency,
    //                   'paypal_order_id' => $paypal_order_id,
                       //'no_note' => '1',
                       //'invoice' => '',
                        
    );
     
        
    // if line-item info is invalid, use aggregate:
        
    if (sizeof($optionsLineItems) > 0$optionsAggregate $optionsLineItems;
     
        if (
    defined('MODULE_PAYMENT_PAYPAL_LOGO_IMAGE')) $optionsCore['cpp_logo_image'] = urlencode(MODULE_PAYMENT_LOGO_IMAGE);
        if (
    defined('MODULE_PAYMENT_PAYPAL_CART_BORDER_COLOR')) $optionsCore['cpp_cart_border_color'] = MODULE_PAYMENT_PAYPAL_CART_BORDER_COLOR;
     
        
    // prepare submission
        
    $options array_merge($optionsCore$optionsCust$optionsPhone$optionsShip$optionsTrans$optionsAggregate);
        
    //ipn_debug_email('Keys for submission: ' . print_r($options, true));
     
        // build the button fields
        
    foreach ($options as $name => $value) {
          
    // remove quotation marks
          
    $value str_replace('"'''$value);
          
    // check for invalid chars
          
    if (preg_match('/[^a-zA-Z_0-9]/'$name)) {
            
    ipn_debug_email('datacheck - ABORTING - preg_match found invalid submission key: ' $name ' (' $value ')');
            break;
          }
          
    // do we need special handling for & and = symbols?
          //if (strpos($value, '&') !== false || strpos($value, '=') !== false) $value = urlencode($value);
     
          
    $buttonArray[] = zen_draw_hidden_field($name$value);
        }
        
    $process_button_string "\n" implode("\n"$buttonArray) . "\n";
     
        
    $_SESSION['paypal_transaction_info'] = array($this->transaction_amount$this->transaction_currency);
        return 
    $process_button_string;
      } 
    and so far i have found the bit for amount:
    PHP Code:
        $optionsAggregate = array(
                       
    'cmd' => '_ext-enter',
                       
    'item_name' => MODULE_PAYMENT_PAYPAL_PURCHASE_DESCRIPTION_TITLE,
                       
    'item_number' => MODULE_PAYMENT_PAYPAL_PURCHASE_DESCRIPTION_ITEMNUM,
                       
    //'num_cart_items' => sizeof($order->products),
                       
    [COLOR="#FF0000"]'amount'[/COLOR] => number_format($this->transaction_amount$currencies->get_decimal_places($my_currency)),
                       
    'shipping' => '0.00',
                        ); 
    so would I be right in thinking here I need to change to:
    PHP Code:
        $optionsAggregate = array(
                       
    'cmd' => '_ext-enter',
                       
    'item_name' => MODULE_PAYMENT_PAYPAL_PURCHASE_DESCRIPTION_TITLE,
                       
    'item_number' => MODULE_PAYMENT_PAYPAL_PURCHASE_DESCRIPTION_ITEMNUM,
                       
    //'num_cart_items' => sizeof($order->products),
                       
    [COLOR="#FF0000"]'subtotal'[/COLOR] => number_format($this->transaction_amount$currencies->get_decimal_places($my_currency)),
                       
    'shipping' => '0.00',
                        ); 
    and I also found the url part of the form action in the following function:
    PHP Code:
      function paypal($paypal_ipn_id '') {
        global 
    $order$messageStack;
        
    $this->code 'paypal';
        
    $this->codeVersion '1.5.0';
        if (
    IS_ADMIN_FLAG === true) {
          
    $this->title MODULE_PAYMENT_PAYPAL_TEXT_ADMIN_TITLE// Payment Module title in Admin
          
    if (IS_ADMIN_FLAG === true && defined('MODULE_PAYMENT_PAYPAL_IPN_DEBUG') && MODULE_PAYMENT_PAYPAL_IPN_DEBUG != 'Off'$this->title .= '<span class="alert"> (debug mode active)</span>';
          if (
    IS_ADMIN_FLAG === true && MODULE_PAYMENT_PAYPAL_TESTING == 'Test'$this->title .= '<span class="alert"> (dev/test mode active)</span>';
        } else {
          
    $this->title MODULE_PAYMENT_PAYPAL_TEXT_CATALOG_TITLE// Payment Module title in Catalog
        
    }
        
    $this->description MODULE_PAYMENT_PAYPAL_TEXT_DESCRIPTION;
        
    $this->sort_order MODULE_PAYMENT_PAYPAL_SORT_ORDER;
        
    $this->enabled = ((MODULE_PAYMENT_PAYPAL_STATUS == 'True') ? true false);
        if ((int)
    MODULE_PAYMENT_PAYPAL_ORDER_STATUS_ID 0) {
          
    $this->order_status MODULE_PAYMENT_PAYPAL_ORDER_STATUS_ID;
        }
        if (
    is_object($order)) $this->update_status();
        [
    COLOR="#FF0000"]$this->form_action_url 'https://' MODULE_PAYMENT_PAYPAL_HANDLER;[/COLOR
        if (
    PROJECT_VERSION_MAJOR != '1' && substr(PROJECT_VERSION_MINOR03) != '5.0'$this->enabled false;
     
        
    // verify table structure
        
    if (IS_ADMIN_FLAG === true$this->tableCheckup();
      } 
    Still no where near and could really use some help. I will keep trying in the mean time..
    Last edited by philip937; 12 Nov 2014 at 03:43 PM. Reason: ignore the colour code within the code. i tried to highlight the key areas.
    Phil Rogers
    A problem shared is a problem solved.

  4. #4
    Join Date
    Aug 2009
    Location
    Bedford, England
    Posts
    966
    Plugin Contributions
    0

    Default Re: Implementing PayPal Pro "Hosted Solution"

    Ok so I think this covers most of it.

    Staring from top to bottom of the Button code.

    If I change this:
    PHP Code:
    $this->form_action_url 'https://' MODULE_PAYMENT_PAYPAL_HANDLER
    To this:
    PHP Code:
    $this->form_action_url 'https://securepayments.paypal.com/webapps/HostedSoleSolutionApp/webflow/sparta/hostedSoleSolutionProcess'

    I'm hoping will change the output from this:
    HTML Code:
    <form name="checkout_confirmation" action="https://www.paypal.com/uk/cgi-bin/webscr" method="post" id="checkout_confirmation" onsubmit="submitonce();"><input type="hidden" name="securityToken" value="3014d9bc6017dca06485144a5a2f4955" />

    to this:
    HTML Code:
    <form name="checkout_confirmation" action="https://securepayments.paypal.com/webapps/HostedSoleSolutionApp/webflow/sparta/hostedSoleSolutionProcess" method="post" id="checkout_confirmation" onsubmit="submitonce();"><input type="hidden" name="securityToken" value="3014d9bc6017dca06485144a5a2f4955" />

    Then if I change this:
    PHP Code:
    'redirect_cmd' => '_xclick','rm' => 2,'bn' => 'zencart','mrb' => 'R-6C7952342H795591R','pal' => '9E82WJBKKGPLQ'
    to this:
    PHP Code:
    'redirect_cmd' => '_hosted-payment','rm' => 2,'bn' => 'zencart','mrb' => 'R-6C7952342H795591R','pal' => '9E82WJBKKGPLQ'
    I'm hoping will change the output from this:
    HTML Code:
    <input type="hidden" name="redirect_cmd" value="_xclick" />
    to this:
    HTML Code:
    <input type="hidden" name="redirect_cmd" value="_hosted-payment" />

    Then finally, I hope if I change this:
    PHP Code:
    'amount' => number_format($this->transaction_amount$currencies->get_decimal_places($my_currency)), 
    to this:
    PHP Code:
    'subtotal' => number_format($this->transaction_amount$currencies->get_decimal_places($my_currency)), 
    That the output instead of being:
    HTML Code:
    <input type="hidden" name="amount" value="8.25" />
    will be this:
    HTML Code:
    <input type="hidden" name="subtotal" value="8.25" />

    Of course even if I am correct which im hoping someone will tell me, I still have no clue if the order will still create after payment is taken. Paypal tell me that the IPN wouldnt change so if anyone knows otherwise i'd be greatful for a heads up.
    Phil Rogers
    A problem shared is a problem solved.

  5. #5
    Join Date
    Aug 2009
    Location
    Bedford, England
    Posts
    966
    Plugin Contributions
    0

    Default Re: Implementing PayPal Pro "Hosted Solution"

    Well i'm pleased to announce my changed have worked on the button. Once I have tested with Paypal I will report back.

    I will probably look to make the settings conditional so I can easily switch between the Website Payments standard page and the Pro hosted solution page.

    Phil Rogers
    A problem shared is a problem solved.

  6. #6
    Join Date
    Sep 2013
    Location
    Devon, UK
    Posts
    56
    Plugin Contributions
    0

    Default Re: Implementing PayPal Pro "Hosted Solution"

    I've been looking for a similar solution. There is a Paypal WPP Hosted module on Github:
    https://github.com/ontech/zencart-paypal-wpphosted

    I've added some small fixes to it myself but it seems an awfully complicated way of doing things and I don't fully understand how it works. The main problems when I trialled it after fixing some VAT issues were occasional double-orders (but only a single payment) and coupon codes not working. Also, although I initially liked the idea of the embedded option, I think customers would feel more secure being taken to a payment gateway they recognise.

    Your solution looks easier to deal with. Being based on an existing, official module all the functionality should be there. I'll have a play with it myself and see what happens but I'll be eager to see how you get on with it.

    Thanks!

  7. #7
    Join Date
    Aug 2009
    Location
    Bedford, England
    Posts
    966
    Plugin Contributions
    0

    Default Re: Implementing PayPal Pro "Hosted Solution"

    Hi BillJ,

    I have this solution working, however pretty much the day after I had it working I had to fold my business which has been stressful times.

    I have actually added a few other bits to this since and actually I also have it working so that the functionality hooks in with the detailed line item Yes No option in the admin. Meaning that when set to Yes, the module will be the standard website payments standard, and then when set to No, it switched to Pro Hosted solution.

    I tested it out and both IPN and PDT both seem to work fine with my implementation.

    Once I get some time I will post the complete solution on this thread. As you can appreciate it's not my top priority right now.

    Cheers

    Phil

  8. #8
    Join Date
    Sep 2013
    Location
    Devon, UK
    Posts
    56
    Plugin Contributions
    0

    Default Re: Implementing PayPal Pro "Hosted Solution"

    Sorry to hear that, Phil. Happy to fiddle about a bit and wait until you have time to post again. I realise you have far more important things to do at the moment. For some reason, few people seem to have published anything about this. I assume you had to make a few more changes than those above in order to get it working.

    I hope things work out OK for you.

    Cheers,

    Bill.

  9. #9
    Join Date
    Sep 2013
    Location
    Devon, UK
    Posts
    56
    Plugin Contributions
    0

    Default Re: Implementing PayPal Pro "Hosted Solution"

    Quote Originally Posted by BillJ View Post
    Happy to fiddle about a bit and wait until you have time to post again.
    Well, I finally got round to "fiddling about a bit" today and just by following the instructions above, in no time at all I had a working solution.

    Payment is taken and the order is created. The only slight fly in the ointment is a brief error message after pressing the "Pay" button, before returning to Zen Cart. Paypal reports "Enter a valid country". I've asked Paypal Support what they think - perhaps their logs have something useful. Billing and Shipping addresses passed to Paypal both contain a correct country code ("GB").

    Anyway, well done, Phil! Thanks for figuring all that out. I hope things are going better for you now.

  10. #10
    Join Date
    Sep 2013
    Location
    Devon, UK
    Posts
    56
    Plugin Contributions
    0

    Default Re: Implementing PayPal Pro "Hosted Solution"

    Quote Originally Posted by BillJ View Post
    The only slight fly in the ointment is a brief error message after pressing the "Pay" button, before returning to Zen Cart. Paypal reports "Enter a valid country".
    Paypal Technical support came back to say that "country_code" is not a valid field for the Pro Hosted interface and that "country" should actually contain the country code rather than the country name. So I changed:

    PHP Code:
    'country' => ($order->delivery['country']['title'] != '' $order->delivery['country']['title'] : $order->billing['country']['title']),
    'country_code' => ($order->delivery['country']['iso_code_2'] != '' $order->delivery['country']['iso_code_2'] : $order->billing['country']['iso_code_2']), 
    to:

    PHP Code:
    'country' => ($order->delivery['country']['iso_code_2'] != '' $order->delivery['country']['iso_code_2'] : $order->billing['country']['iso_code_2']), 
    That eliminated the error message

 

 
Page 1 of 2 12 LastLast

Similar Threads

  1. v151 My "Options" values aren't passing to Paypal (payment Pro )
    By johnny1114 in forum PayPal Website Payments Pro support
    Replies: 2
    Last Post: 20 Aug 2015, 02:22 PM
  2. paypal website pro "what is this"??
    By medragon in forum General Questions
    Replies: 2
    Last Post: 27 Dec 2010, 07:45 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
disjunctive-egg
Zen-Cart, Internet Selling Services, Klamath Falls, OR