Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Official PayPal IPN Support Thread


Mark Evans

Recommended Posts

In fact, I never got any emails from my store upon placing any order, I have it set to send 2 emails one is the usual confirmation the other is an additional confirmation email address. I installed ipn but this email issue has not changed a bit.

Try testing checkout with payment by cheque - that's a veyr straightforward module. If you still don't get any emails then the problem is not with the payment module but with emails / sending / your shop / your server. I've seen email sending errors on this forum quite a lot - might be worth searching. It's also worth noting that the email should be a domain email, as otherwise it could get blocked. As always, check your error logs and check with your hosting company if they have any advice. all the best, Terra

My code for combining PayPal IPN with ** QTPro 4.25 ** osC Affiliate ** CCGV(trad)

and how to solve the invoice already paid error

General info: Allow customer to delete order comment ** FTP Programs & Text Editors ** Amending order email **

Link to comment
Share on other sites

Hi I have tested this contribution and everything appears okay, except for the fact that when I go into Adminstration it says PaypalIPN - 1, but when I click on the link and it takes me to orders there is nothing there.

Terry - yes that can happen, forget how but it usually does when I test in Sandbox, delete a lot or otherwise mess about. I think you just need to go into your database and remove that one order which got stuck. Not sure but try the order_status_history table - if you have an order in there which doesn't exist in the orders table and has the PayPal IPN Preparing order status, that's the one to delete.

 

If it doesn't annoy you too much, you can also just leave as is - it won't actually do any harm, but just show the wrong count. all the best, Tera

My code for combining PayPal IPN with ** QTPro 4.25 ** osC Affiliate ** CCGV(trad)

and how to solve the invoice already paid error

General info: Allow customer to delete order comment ** FTP Programs & Text Editors ** Amending order email **

Link to comment
Share on other sites

i still can't get my ipn working properly. the transaction is not inserted at all, although i'm able to complete the whole payment process.

 

confirmation email is generated, but the transaction number is blank.

 

should i debug from payment confirmation page? i've tried all the global register patch, all other payment modes works fine to me.

 

any idea? thanks.

Link to comment
Share on other sites

Hey everyone I use Paypal IPN 1.1.2.2 by Michael Sasek. I know this can be done but I have no clue how to do it but I would like to have the billing info when you get to the paypal site to be pre-populated. Since they already have an account or just signed up for one they have to enter there shipping info again at the paypal site and that is just silly.

Edited by streetflossin
Link to comment
Share on other sites

Hey everyone I use Paypal IPN 1.1.2.2 by Michael Sasek. I know this can be done but I have no clue how to do it but I would like to have the billing info when you get to the paypal site to be pre-populated. Since they already have an account or just signed up for one they have to enter there shipping info again at the paypal site and that is just silly.

 

Here is the link to the paypal ipn developer guide. It should help you understand how these modules interact with their system and the variables they use.

 

PayPal IPN Developers Guide

 

Sheri

Link to comment
Share on other sites

Here is the link to the paypal ipn developer guide. It should help you understand how these modules interact with their system and the variables they use.

 

PayPal IPN Developers Guide

 

Sheri

 

Thanks for your help, I got it working perfect but I ran into one problem. Paypal uses a 2 char abbervation for state but for some reason when I put the state in it uses the full state name. Please check my code and then try to help me solve the state problem.

 

Keep in mind everyone that I am using "paypal_ipn.php,v 1.1.2.2 2005/08/04 06:05:08 Michael Sasek" so it may or may not work on your paypal_ipn.

 

Ok this posting starts at line 988

$parameters['currency_code'] = $my_currency;

  $parameters['invoice'] = substr($cart_PayPal_IPN_ID, strpos($cart_PayPal_IPN_ID, '-')+1);

  $parameters['custom'] = $customer_id;

	   // Start Populate Paypal	  

  $parameters['first_name'] = $order->billing['firstname'];

	$parameters['last_name'] = $order->billing['lastname'];

  $parameters['address1'] = $order->billing['street_address'];

  $parameters['city'] = $order->billing['city'];

  $parameters['state'] = $order->billing['state'];

  $parameters['zip'] = $order->billing['postcode'];

  $parameters['email'] = $order->customer['email_address'];

  $parameters['night_phone_a'] = $order->customer['telephone'];	  

	   // End Populate Paypal

  $parameters['no_shipping'] = '1';

  $parameters['no_note'] = '1';

  $parameters['notify_url'] = tep_href_link('ext/modules/payment/paypal_ipn/ipn.php', '', 'SSL', false, false);

  $parameters['return'] = tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL');

  $parameters['cancel_return'] = tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL');

  $parameters['bn'] = $this->identifier;

Link to comment
Share on other sites

Hey everyone I use Paypal IPN 1.1.2.2 by Michael Sasek.
You are in the wrong support thread - to avoid confusion, please either use the thread supplied by the contrib you are using or start a new one.

 

Just to clarify - this thread is ONLY for the installation of the "official osCommerce PayPal IPN" as can be found here:

http://www.oscommerce.com/community/contributions,2679

 

posting queries for other contribs will just confuse the matter, so please don't do it.

 

many thanks for your understanding, Terra

My code for combining PayPal IPN with ** QTPro 4.25 ** osC Affiliate ** CCGV(trad)

and how to solve the invoice already paid error

General info: Allow customer to delete order comment ** FTP Programs & Text Editors ** Amending order email **

Link to comment
Share on other sites

i still can't get my ipn working properly. the transaction is not inserted at all, although i'm able to complete the whole payment process.

 

confirmation email is generated, but the transaction number is blank.

 

should i debug from payment confirmation page? i've tried all the global register patch, all other payment modes works fine to me.

The order is stored in the database when you reach checkout_confirmation.php. The code is in paypal_ipn and starts like this:

 

	function confirmation() {
  global $cartID, $cart_PayPal_IPN_ID, $customer_id, $languages_id, $order, $order_total_modules;

 // if (tep_session_is_registered('cartID')) {
 // PandA.nl: register_globals fix
 if (array_key_exists('cartID', $_SESSION)) {

 

Should the if clause above for the cartID fail, then the whole process of storing the order would fail. Please note that it does not check whether there is a value for cartID, just whether there is a variable cartID in the sessions array. An easy way to check variable arrays is by using

   echo "<pre>";
  print_r($_SESSION);
  echo "</pre>";

 

A few things to try: check what appears for cartID in your checkout_confirmation.php. Also to consider - which version of PHP you are using ($_SESSION started with PHP 4.1.0). Plus - all my testing has been done on Apache, so things might differ if you are on Windows.

 

all the best, Terra

My code for combining PayPal IPN with ** QTPro 4.25 ** osC Affiliate ** CCGV(trad)

and how to solve the invoice already paid error

General info: Allow customer to delete order comment ** FTP Programs & Text Editors ** Amending order email **

Link to comment
Share on other sites


Hi Terra, thanks for the help again.

 

I'm using php 4.3.10, and is running on windows......

 

i've tried to echo the session array, the info displayed in checkout confirmation page looks like this :

 

Array

(

[cart] => shoppingcart Object

(

[contents] => Array

(

[202] => Array

(

[qty] => 1

)

 

[212] => Array

(

[qty] => 1

)

 

[136] => Array

(

[qty] => 1

)

 

)

 

[total] => 14.25

[weight] => 0.2

[cartID] => 21401

[content_type] => physical

)

 

[language] => english

[languages_id] => 1

[currency] => USD

[navigation] => navigationhistory Object

(

[path] => Array

(

[0] => Array

(

[mode] => NONSSL

[get] => Array

(

[cPath] => 28

[sort] => 2a

[action] => buy_now

[products_id] => 136

)

 

=> Array

(

)

 

)

 

[1] => Array

(

[mode] => NONSSL

[get] => Array

(

[sort] => 2a

)

 

=> Array

(

)

 

)

 

[2] => Array

(

[mode] => NONSSL

[get] => Array

(

)

 

=> Array

(

[action] => process

[shipping] => zones_zones

[comments] =>

[x] => 41

[y] => 15

)

 

)

 

[3] => Array

(

[mode] => NONSSL

[get] => Array

(

)

 

=> Array

(

)

 

)

 

[4] => Array

(

[mode] => NONSSL

[get] => Array

(

)

 

=> Array

(

[payment] => paypal_ipn

[comments] =>

[x] => 27

[y] => 6

)

 

)

 

)

 

[snapshot] => Array

(

)

 

)

 

[sendto] => 2

[shipping] => Array

(

[id] => zones_zones

[title] => Zone Rates (Shipping to Singapore: 0.22 lb(s))

[cost] => 1

)

 

[billto] => 2

[payment] => paypal_ipn

[customer_id] => 2

[customer_default_address_id] => 2

[customer_first_name] => Goh

[customer_country_id] => 188

[customer_zone_id] => 0

[cartID] => 21401

[comments] =>

)


=> index.php

Link to comment
Share on other sites

I'm using php 4.3.10, and is running on windows......

 

i've tried to echo the session array, the info displayed in checkout confirmation page looks like this :

at this point of time, no order is inserted into the store.

 

do i need to modify the file checkout_confirmation.php when installing paypal ipn?

You shouldn't need to modify checkout_confirmation.php. Also the cartID is there, so that's fine. I'm sorry but I've got no experience with Windows servers, so this is where my knowledge ends (also can't test on Windows as I have no access to a Windows server). All I can say is that it works perfectly on Apache :) . Terra

 

PS: maybe worth a try - try changing this line:

if (array_key_exists('cartID', $_SESSION)) {

to this:

if (tep_session_is_registered('cartID')) {

 

Also - there were others on this thread using Windows, might be worth going through the thread & checking if anything helps.

My code for combining PayPal IPN with ** QTPro 4.25 ** osC Affiliate ** CCGV(trad)

and how to solve the invoice already paid error

General info: Allow customer to delete order comment ** FTP Programs & Text Editors ** Amending order email **

Link to comment
Share on other sites

You are in the wrong support thread - to avoid confusion, please either use the thread supplied by the contrib you are using or start a new one.

 

Just to clarify - this thread is ONLY for the installation of the "official osCommerce PayPal IPN" as can be found here:

http://www.oscommerce.com/community/contributions,2679

 

posting queries for other contribs will just confuse the matter, so please don't do it.

 

many thanks for your understanding, Terra

 

Then please point me to the right support page, since there does not seem to be one.

Link to comment
Share on other sites

I once had a problem where two payment modules were enabled and both had the same sort order - can't remember if only one or none displayed, but giving unique sort order numbers solved it.

 

As for file permissions - when you go through checkout, it's only the paypal_ipn.php file which is called and on my test server it has 644 - the same as you, so that's correct.

 

The most likely cause for the payment method not to show up in checkout is a wrong file in the wrong location (module level / language level - missing or mixed up), so I'd double-check that.

 

all the best, Terra

 

 

Thanks, Terra. Two of my payment modules had the same sort order so after changing them it worked like a charm.

 

I don't want to start a whole new thread so I'll tell you my situation here. All I want to do with my osCommerce store is to sell t-shirts.I've been reading up on paypal and I believe it's the best method for me to receive payments.

 

I'm just wondering if Paypal IPN module is the correct one for me. From what I read I think it is.

 

Lastly, I'm just confused on the IPN notifcation url I'm suppose to be putting in my paypal profile. Am I suppose to point the address to a file? I am also testing it in sandbox mode so I don't mess anything up.

 

 

Thanks again guys. You guys are great! :D

Link to comment
Share on other sites

Thanks, Terra. Two of my payment modules had the same sort order so after changing them it worked like a charm.

 

I don't want to start a whole new thread so I'll tell you my situation here. All I want to do with my osCommerce store is to sell t-shirts.I've been reading up on paypal and I believe it's the best method for me to receive payments.

 

I'm just wondering if Paypal IPN module is the correct one for me. From what I read I think it is.

 

Lastly, I'm just confused on the IPN notifcation url I'm suppose to be putting in my paypal profile. Am I suppose to point the address to a file? I am also testing it in sandbox mode so I don't mess anything up.

Glad it's working! it's allways the detail that will stop everything from running along nicely. As for your queries:

 

-> The PayPal modules are notorious for "losing" orders. So unless your idea of fun is phoning up customers to get order details, then some kind of backup is needed. The PayPal IPN is specifically for PayPal and also gives you a payment confirmation. If for for any reason you don't want to use it, then you can look in the contribs section at basket lookup scripts (which also allows you to retrive "lost order" info). Whatever way you go, you'll either need the IPN or basket / lost order retrieval scripts to run your shop efficiently.

 

-> Good news is that with the PayPal IPN you don't need to put any URL info into your PayPal account, neither notification URL nor return URL - all the info is sent by the IPN (it's in the code if you are interested, just have a look & you'll see it there as parameter to be sent to PayPal).

 

Not one of your queries, but if you are selling T-Shirts you might want to check out QTPro - essential if you want to manage stock at attribute level (sizes / colours). The PayPal IPN latest upload contains a help file for amending the IPN to work with it. I've got it runnning on customer sites who sell clothing and it's a neat contrib.

 

all the best for your shop! Terra

My code for combining PayPal IPN with ** QTPro 4.25 ** osC Affiliate ** CCGV(trad)

and how to solve the invoice already paid error

General info: Allow customer to delete order comment ** FTP Programs & Text Editors ** Amending order email **

Link to comment
Share on other sites

Then please point me to the right support page, since there does not seem to be one.

Hence my note about "either ... or start a new one". If there is no support thread at the moment, it's a great opportunity to get one going! You'll also help others who are using the same contribution.

 

PS: Not sure what's going on with that contrib you mention though - can't find it in the contrib section and under Michael Sasek's name (aka msasek) it does not mention any contributions he uploaded. I wonder if it got deleted for any reason? The code base seems fairly similar though to the IPN on this thread (well, actually identical from what I could see from my google results), so yes, you're probably right to use this thread ..

 

NB: this is some stuff I wanted to test for the next upload - it's theoretical at the moment, but if you feel happy to volunteer please give it a try & report back if it does any good! The plan is to pass the billing info to PayPal to avoid tedious double typing.

> this would look something like replacing line 323 ($parameters['cmd'] = '_xclick';) with the following:


	 //$parameters['cmd'] = '_xclick';
	 $parameters['cmd']='_ext-enter';
	 $parameters['redirect_cmd']='_xclick';
	 $parameters['first_name'] = $order->billing['firstname'];
	 $parameters['last_name'] = $order->billing['lastname'];
	 $parameters['address1'] = $order->billing['street_address'];
	 $parameters['address2'] = $order->billing['company'] . ' ' . $order->billing['suburb'];
	 $parameters['city'] = $order->billing['city'];
	 $parameters['state'] = $order->billing['state'];
	 $parameters['zip'] = $order->billing['postcode'];
	 $parameters['country'] = $order->billing['country']['id']; //maybe ['title']
	 $parameters['email'] = $order->customer['email_address'];
	 $parameters['night_phone_a'] = $order->customer['telephone'];
	 //$parameters['night_phone_b'] =;
	 //$parameters['night_phone_c'] =;

>> The first 2 lines are standard PayPal redirect stuff. The rest is about taking data from the $order structure and sending it to PayPal via the proper PayPal variables. I am not too sure whether you have to pass PayPal $order->customer['country']['id'] or  $order->customer['country']['title'], this will have to be tested. Similarly, I am not 100% sure whether the phone numbers will be treated properly by this code, but I am guessing so.

 

The state problem arises, because "billing[state]" is taken from the orders table where states are stored as names (if you have a look into PHPMyAdmin it becomes clearer). To get the abbrivation you'd need to run a query on the zones_id table and take the relevant 2letter code out of it, based on the billing[state] name. The query would be something where zone_name(i.e. billing[state]) is X, then zone_code is Y, and then you'd send Y to PayPal.

 

all the best, Terra

My code for combining PayPal IPN with ** QTPro 4.25 ** osC Affiliate ** CCGV(trad)

and how to solve the invoice already paid error

General info: Allow customer to delete order comment ** FTP Programs & Text Editors ** Amending order email **

Link to comment
Share on other sites

Terra, what would happen if the customer already have a PayPal account, with different billing info registered?

Super Download Shop, PayPal Express Checkout IPN, Selling Downloads, Visual Validation (preventing robotic flood), phpBB2 Integration

 

Yes, I'm willing to help, but please ask in the right place. Think twice before trying to PM me, it might be ignored.

Link to comment
Share on other sites

Terra, what would happen if the customer already have a PayPal account, with different billing info registered?

like I said - haven't had time to test, all theory for now so basically - no idea. would be easy to test in sandbox though if you have a bit of spare time. Terra

My code for combining PayPal IPN with ** QTPro 4.25 ** osC Affiliate ** CCGV(trad)

and how to solve the invoice already paid error

General info: Allow customer to delete order comment ** FTP Programs & Text Editors ** Amending order email **

Link to comment
Share on other sites

With the code I posted is pretty much the same as the code you posted and my way was tested and works perfect, well almost perfect.

$order->billing['state']; sends the full state name (ie New Jersey instead of NJ) and the telephone numbers work but it gets sent like this 5551112222-- with 2 dashes at the end since only night_phone_a is being used.

 

Alex if you already have a paypal account it still works, when the customer gets transfer to paypal they have two options, to use there existing paypal or to just enter the cc info.

Link to comment
Share on other sites

Thanks for your answer, Terra and Ryan. I will give it a try when I have time.

Super Download Shop, PayPal Express Checkout IPN, Selling Downloads, Visual Validation (preventing robotic flood), phpBB2 Integration

 

Yes, I'm willing to help, but please ask in the right place. Think twice before trying to PM me, it might be ignored.

Link to comment
Share on other sites

With the code I posted is pretty much the same as the code you posted and my way was tested and works perfect, well almost perfect.

$order->billing['state']; sends the full state name (ie New Jersey instead of NJ) and the telephone numbers work but it gets sent like this 5551112222-- with 2 dashes at the end since only night_phone_a is being used.

 

Agreed - one thing I need to test is that when I had contact with PayPal, they weren't keen on

$parameters['cmd'] = '_xclick';

hence the change above. Will need to do some testing to check whether the different parameter makes any difference.

 

As for state code - like I said, just run a query on the zones_id table and send the result to PayPal instead of the state name stored in the orders table. Will check out the telephone issue & see if I can come up with a solution for the next update.

 

all the best, Terra

My code for combining PayPal IPN with ** QTPro 4.25 ** osC Affiliate ** CCGV(trad)

and how to solve the invoice already paid error

General info: Allow customer to delete order comment ** FTP Programs & Text Editors ** Amending order email **

Link to comment
Share on other sites

You shouldn't need to modify checkout_confirmation.php. Also the cartID is there, so that's fine. I'm sorry but I've got no experience with Windows servers, so this is where my knowledge ends (also can't test on Windows as I have no access to a Windows server). All I can say is that it works perfectly on Apache :) . Terra

 

PS: maybe worth a try - try changing this line:

if (array_key_exists('cartID', $_SESSION)) {

to this:

if (tep_session_is_registered('cartID')) {

 

Also - there were others on this thread using Windows, might be worth going through the thread & checking if anything helps.

 

Thanks Terra.

 

One more question. If i select paypal ipn as payment method, checkout_confirmation.php page will insert the sales into database, but if i use other payment method, for example cash, it will only be inserted after i complete the payment, am i right?

 

May i know what caused checkout_information.php to insert the sales? which block of codes or files that i can refer to? Thanks.

Link to comment
Share on other sites

The order is stored in the database when you reach checkout_confirmation.php. The code is in paypal_ipn and starts like this:

 

	function confirmation() {
  global $cartID, $cart_PayPal_IPN_ID, $customer_id, $languages_id, $order, $order_total_modules;

 // if (tep_session_is_registered('cartID')) {
 // PandA.nl: register_globals fix
 if (array_key_exists('cartID', $_SESSION)) {

One more question. If i select paypal ipn as payment method, checkout_confirmation.php page will insert the sales into database, but if i use other payment method, for example cash, it will only be inserted after i complete the payment, am i right?

 

May i know what caused checkout_information.php to insert the sales? which block of codes or files that i can refer to?

For which code inserts the order please see my post above - it's the function confirmation () in paypal_ipn.php. As for your other query - that's correct, only IPN pre-maturely stores orders, all others are handled by checkout_process.php.

 

all the best, Terra

Edited by Terra

My code for combining PayPal IPN with ** QTPro 4.25 ** osC Affiliate ** CCGV(trad)

and how to solve the invoice already paid error

General info: Allow customer to delete order comment ** FTP Programs & Text Editors ** Amending order email **

Link to comment
Share on other sites

Glad it's working! it's allways the detail that will stop everything from running along nicely. As for your queries:

 

-> The PayPal modules are notorious for "losing" orders. So unless your idea of fun is phoning up customers to get order details, then some kind of backup is needed. The PayPal IPN is specifically for PayPal and also gives you a payment confirmation. If for for any reason you don't want to use it, then you can look in the contribs section at basket lookup scripts (which also allows you to retrive "lost order" info). Whatever way you go, you'll either need the IPN or basket / lost order retrieval scripts to run your shop efficiently.

 

-> Good news is that with the PayPal IPN you don't need to put any URL info into your PayPal account, neither notification URL nor return URL - all the info is sent by the IPN (it's in the code if you are interested, just have a look & you'll see it there as parameter to be sent to PayPal).

 

Not one of your queries, but if you are selling T-Shirts you might want to check out QTPro - essential if you want to manage stock at attribute level (sizes / colours). The PayPal IPN latest upload contains a help file for amending the IPN to work with it. I've got it runnning on customer sites who sell clothing and it's a neat contrib.

 

all the best for your shop! Terra

 

 

Thanks Terra, your reply was extremely helpful. The reason why I was asking about notification url's or return url's is because I couldn't get to the final checkout page on paypal after I chose my fake (sandbox) payment option. But after searching around I figure out the problem.

 

If anybody receives a "Paypal 3005 Error Message", try confirming your e-mail with paypal. That did the trick and now I can get through the whole ordering and checking process. I also read that clearing your cache works. I hope the forum search engine picks this up this solution.

 

I do have another question that I can't seem to figure out. The quantity of items bought in paypal are incorrect.

 

For example , I add 5 items to my cart, and I check out to the paypal site. Paypal always shows the quantity as 1 item. I'm just wondering if osCommerce is somehow giving paypal the wrong quantity. Something that just came to my mind is that maybe since the order is aggregated, it will just show the order as one. If it is aggregated as I believe that's the default option in the module options, wouldn't that sort of not give an accurate idea of how many items are bought since the receipt will always show 1?

 

Lastly I hope the next question isn't off topic. I'm wondering if it's better to let my shop calculate the tax or to let paypal handle it.

 

Currently I'm doing it on my site but it adds the tax before shipping&handling - it should come after. Just in case you were wondering, I am using contribution 1124 (Canada Tax Zones Setup notes)

 

Thanks again, it's greatly appreciated.

Link to comment
Share on other sites

The state problem arises, because "billing[state]" is taken from the orders table where states are stored as names (if you have a look into PHPMyAdmin it becomes clearer). To get the abbrivation you'd need to run a query on the zones_id table and take the relevant 2letter code out of it, based on the billing[state] name. The query would be something where zone_name(i.e. billing[state]) is X, then zone_code is Y, and then you'd send Y to PayPal.

 

all the best, Terra

 

Terra,

If you are using the big zone table (contribution 1792), you must also consider the country code, because there are instances where a zone name exists in multiple countries and maps to different codes. Maryland comes to mind; the US state code is MD, but the county of Maryland in Liberia has the code ML. I ran into this while improving international support in the PayPal WPP contribution (the dynamoeffects version, contribution 3647).

 

Since the orders table stores the country by name, and the zones table stores only the country ID, you have to do a sub-query to get the country ID for the query on the zone table. The query would look something like this:

$state_query = tep_db_query("SELECT zone_code FROM " . TABLE_ZONES . " WHERE zone_name = '".$order->billing['state']."' AND zone_country_id = ("SELECT countries_id FROM " . TABLE_COUNTRIES . " WHERE countries_name = '".$order->billing['country']."')");

 

--Glen

Link to comment
Share on other sites

I need some help here. Everything seems to be setup correctly, but I receive a debug email, and the order status doesn't update.

 

My encryption is set to false.

 

I'm not sure what the working path is supposed to look like, but I've tried: /tmp/ ; tmp/ ; mywebsite.com/tmp/ ; /home/content/a/a/a/user/html/tmp/ - and the chmod on that folder is set to 777

 

I've also used the sandbox server and the live, both return the same results, only that in the live server I receive three debug emails instead of one.

 

The debug email subject is PayPal IPN Invalid Process.

 

I'm not sure where I went wrong. Please if anyone can help, it would be greatly appreciated.

 

Thanks,

Leibtek

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...