Jump to content
Latest News: (loading..)
DAVID3733

Paypal Express post code Format

Recommended Posts

Hi there

I have spent hours trawling but cannot find this answer so apologise if someone has already asked it.

Have 2.3.4bs with php 5.4.45

Using Paypay express paypal spp 5.018

Have had issues with county and cost of shipping so moving over to use postcodes within the UK

My site requires postcode to be in the format of AA99 9AA or A99 9AA, ie 6 or 6 digits but with a space before the last 3

If someone creates a account on the site it formats it in this way using a modified expression in  catalog/includes/form_check.php

 check_input("street_address", <?php echo ENTRY_STREET_ADDRESS_MIN_LENGTH; ?>, "<?php echo ENTRY_STREET_ADDRESS_ERROR; ?>");

    if (form.elements['country'].value == 222) {
   testPostCode ();
   }
function checkPostCode (toCheck) {

  // Permitted letters depend upon their position in the postcode.
  var alpha1 = "[abcdefghijklmnoprstuwyz]";                       // Character 1
  var alpha2 = "[abcdefghklmnopqrstuvwxy]";                       // Character 2
  var alpha3 = "[abcdefghjkstuw]";                                // Character 3
  var alpha4 = "[abehmnprvwxy]";                                  // Character 4
  var alpha5 = "[abdefghjlnpqrstuwxyz]";                          // Character 5
  

  // Array holds the regular expressions for the valid postcodes
  var pcexp = new Array ();

  // Expression for postcodes: AN NAA, ANN NAA, AAN NAA, and AANN NAA
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1,2})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
  
  // Expression for postcodes: ANA NAA
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}[0-9]{1}" + alpha3 + "{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));

  // Expression for postcodes: AANA  NAA
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1}" + alpha4 +"{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
  
  // Exception for the special postcode GIR 0AA
  pcexp.push (/^(GIR)(\s*)(0AA)$/i);
  
  // Standard BFPO numbers
  pcexp.push (/^(bfpo)(\s*)([0-9]{1,4})$/i);
  
  // c/o BFPO numbers
  pcexp.push (/^(bfpo)(\s*)(c\/o\s*[0-9]{1,3})$/i);

  // Load up the string to check
  var postCode = toCheck;

  // Assume we're not going to find a valid postcode
  var valid = false;
  
  // Check the string against the types of post codes
  for ( var i=0; i<pcexp.length; i++) {
    if (pcexp[i].test(postCode)) {
    
      // The post code is valid - split the post code into component parts
      pcexp[i].exec(postCode);
      
      // Copy it back into the original string, converting it to uppercase and
      // inserting a space between the inward and outward codes
      postCode = RegExp.$1.toUpperCase() + " " + RegExp.$3.toUpperCase();
      
      // If it is a BFPO c/o type postcode, tidy up the "c/o" part
      postCode = postCode.replace (/C\/O\s*/,"c/o ");
      
      // Load new postcode back into the form element
      valid = true;
      
      // Remember that we have found that the code is valid and break from loop
      break;
    }
  }
  
  // Return with either the reformatted valid postcode or the original invalid 
  // postcode
  if (valid) {return postCode;} else return false;
}

function testPostCode () {
  var toCheck = form.elements['postcode'].value;
  if (checkPostCode (toCheck)) {
    form.elements['postcode'].value = checkPostCode (toCheck);
  } 
  else {
  error_message = error_message + "* " + "Your postcode is invalid" + "\n";
   error = true;
   }
}

But this is not used by the paypal app so if a UK customer dos not have a space in there paypal account the shipping quote fails

Is there a way of ensuring the API converts it to the correct format on the fly?

Thank you

 

David


David

Share this post


Link to post
Share on other sites

Not really - though I dare say it's possible if you get deep into the code.

It would be much better to put it in the shipping module. Then it won't get overrwritten in an update.

You could probably get away with inserting a space before the last three characters if there isn't one.


For a new install or if your store isn't mobile-friendly, get the community-supported responsive osCommerce (2.3.4.1 CE) here: https://github.com/gburton/osCommerce-234-bootstrap/archive/master.zip

Working on generalising bespoke solutions for Quickbooks integration, Easify integration and pay4later (DEKO) integration at 2.3.x

Share this post


Link to post
Share on other sites

Ah see what you mean I am looking at it from the wrong angle, at the moment its in the js for the form when its inserted on the website as its typed

I will play with the actual shipping module itself to try to make it read and convert on the fly

Thanks

 

David


David

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×