Jump to content
Sign in to follow this  
Enrico

Paymentech contribution

Recommended Posts

Getting things to work with Paymentech/Orbital is a bit challenging, but if it helps, here's some information, along with a couple of fixes, that I can pass along:

 

1. Paymentech has TWO environments: Test and Production. Each has to have a unique Merchant ID associated with it in order for things to be set up on their end correctly. Meaning, if you've selected Test mode through the OSC Admin and you pass Paymentech your Production Merchant ID, it won't work.

 

2. The Paymentech environments do not talk to each other. If you've got the OSC switch set to run in Test mode, you'll be sending data to their Test server. If you've got the OSC switch set to run in Production mode, you'll be sending data to their Production server. Each server needs to have your shopping cart's IP addresses loaded on it. If they're not, you'll bomb out with a 20412 error ("Precondition Failed: Security Information is missing"). The only way to get your IP addresses loaded on each server is to call the Orbital 800 number.

 

[FYI: Once the IP addresses have been added, you need to wait about an hour before you sending a sale through.]

 

3. Make sure that you've got the correct merchant information in the correct field in the OSC Admin. Paymentech sends their Orbital customers a document showing their "Group" number and "Merchant Number". The "Merchant Number" is the "Bank Merchant Number" or "Visa/Mastercard Merchant Number". Meaning, if there's ever a question about a sale and someone calls on it, the "Merchant Number" would come into play. For sending data to the Paymentech Test and Production environments, the GROUP number needs to be sent. If the Group number is NOT sent, Paymentech will return a "9717 Security Information - agent/chain/merchant is missing" error and you'll be scratching your head thinking, "But I SENT the Merchant ID! What else could be missing?!!"

 

Also, the "Paymentech Trace ID" field shown on the OSC Admin is actually the Paymentech "Terminal ID". "Terminal ID" doesn't seem to be included in any of the initial documents sent by Paymentech, but a quick call to their 800 number should provide that. If the wrong "Terminal ID" is sent, Paymentech will return a "523 An invalid TID was received (xxx)" (where xxx is the ID that was entered in the "Payment Trace ID" field through the OSC Admin.

 

Lastly, double-check everything. This seems obvious, but when you're trying to get a new module working and the pressure is on, it's easy to overlook stuff like this.

 

4. FIX: In the process of adding taxes (and other percentile amounts) to the order's total amount, OSC keeps everything as a float data type. Even though paymentech.php was coded things to multiply the total by 100 to eliminate decimal positions (which are not allowed on the authorizations), the total remains a float. Meaning, there are still decimal positions! This will cause the auth to fail with an "801 Error validating amount. Must be numerical and greater than 0 [xxxx.xxxx]" (where xxxx.xxxx is the total amount that was actually sent to Paymentech. I don't know if there's a specific setting in OSC's Admin to limit the number of decimal positions, but this will take care of things regardless:

 

Old Line:

tep_draw_hidden_field('my_totalamount', ($order->info['total'])*100) .

 

New Line:

tep_draw_hidden_field('my_totalamount', round(($order->info['total'] * 100), 0)) .

 

5. FIX: In tracing through the Line 337 error ("Fatal error: Call to a member function on a non-object in ... paymentech.php on line 337"), I discovered that line 337 was bombing because the $procstatus object was never created two lines earlier. No $procstatus object = No $procstatus value = BOOM! So, I contacted Wheat explaining what I had found and he sent me brand new versions of the following classes:

 

doc.inc.php

element.inc.php

node.inc.php

treecomp.inc.php

 

New versions located here listed as "Ver2 Update":

http://www.oscommerce.com/community/contri...ns,1998/page,15

 

These worked like a charm with no further code changes needed oni my part! Big kudos to Wheat also for answering my cry for help as quickly as he did!

 

Hope this helps!

 

Paul

Share this post


Link to post
Share on other sites

I'm at the point where I need to install a gateway for these CC transactions. I'm thinking of using paymentech, however from the search that I've done and the little information that I've found, paymentech's orbital gateway is either easy to setup (with the info above) or an absolute nightmare.

 

I would really like to talk with someone that is currently using paymentech for there online store before I dive into this.

 

In addition, if you have the experience that would suggest a better means, please reply.

 

Thanks.

Share this post


Link to post
Share on other sites

Hi kitchenbitch,

 

I am facing the same issue which you have described below:

 

2. The Paymentech environments do not talk to each other. If you've got the OSC switch set to run in Test mode, you'll be sending data to their Test server. If you've got the OSC switch set to run in Production mode, you'll be sending data to their Production server. Each server needs to have your shopping cart's IP addresses loaded on it. If they're not, you'll bomb out with a 20412 error ("Precondition Failed: Security Information is missing"). The only way to get your IP addresses loaded on each server is to call the Orbital 800 number.

 

[FYI: Once the IP addresses have been added, you need to wait about an hour before you sending a sale through.]

 

If you can please tell me how to call this Orbital 800 number and get rid of this warning. Should I need to add some extra code or to do some extra setting.

 

Also my OSC Admin is not having the Test mode / Production mode option, which you are talking about in your statement.

 

Eagerly waiting for your response.

 

Thanks,

Manoj.

Share this post


Link to post
Share on other sites

We still get the 337 error even though we applied the patch. Anyone have any ideas?

 

Also it gives a choice of Tampa or Salem and our client has told us "Nashville" network. This a new one? How do we handle that?


Kym

Projects Director @ ozEworks.com

Share this post


Link to post
Share on other sites

Hi

 

Sorry about the slow response. My account seemed to have gotten messed up somehow. I have been suspended until 1970! :)

 

Ask a member here called Kit. He is my team leader and may recall what he did.

 

regards

Kym

Share this post


Link to post
Share on other sites

I downloaded and installed the paymentech contribution.

 

Then I applied the fixes as described above, super. It got rid of the decimal issue.

 

The module was still broken, no matter what I did it always sent back the error code of:

"20412:Presecurity condition not met"

 

After ignorning the documentation I decided to modify the headers and how CURL was sending the request to their server. I dont know if my fix is universal or not, or if it is because I am using Firefox and sending from a shared certificate SSL windows server.

 

In the beforeprocess(); after the curl_init and before the curl_exec, function you will notice this block of code:

 

 
		// curl_setopt($ch, CURLOPT_VERBOSE, 1); // comment once in production
	  if(!curl_setopt($ch, CURLOPT_URL, GATEWAY_URL)) {echo 'CURLOPT URL Error<p>';}
	  if(!curl_setopt($ch, CURLOPT_HEADER, 1)) {echo 'CURLOPT Header Error<p>';}
	  if(!curl_setopt($ch, CURLOPT_HTTPHEADER, array('POST /AUTHORIZE HTTP/1.0', 'MIME-Version: 1.0', 'Content-type: application/PTI21',
		  'Content-transfer-encoding: text', 'Request-number: 1', 'Document-type: Request'))) {echo 'CURLOPT HTTPHEADER Error<p>';}
	  if(!curl_setopt($ch, CURLOPT_POST, 1)) {echo 'CURLOPT POST Error<p>';}
	  if(!curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlRequest)) {echo 'CURLOPT POSTFIELDS Error<p>';}
	  if(!curl_setopt($ch, CURLOPT_TIMEOUT, 90)) {echo 'CURLOPT TIMEOUT Error<p>';} 
	  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // gives error, but keeps xml formatting

 

That is the one that was causing me extreme hurt.

 

If you are receiving the error that I was without anywhere else to turn and gave up on the documentation then change it to this:

 

if(!curl_setopt($ch, CURLOPT_URL, GATEWAY_URL)) {echo 'CURLOPT URL Error<p>';}
	  curl_setopt($ch, CURLOPT_HTTPHEADER, array('MIME-Version: 1.0','Content-transfer-encoding: text','Document-type: Request','Content-type: application/PTI34'));
	  if(!curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlRequest)) {echo 'CURLOPT POSTFIELDS Error<p>';} 
	  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // gives error, but keeps xml formatting
	  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

 

It worked for me and it only took 3 days to hack it out... wahoooo

Edited by OSCommerceSurgeon

While I'm operating on OSCommerce, I don't have to worry about silly vitals or forgetting to turn off the ane..the.. no wait I remember aes....thetic, or right I've got it Anaesthetic

Share this post


Link to post
Share on other sites

I've read through all the documentation I could find on their site and as far as I understand their system there is no Nashville.

 

000001 = Salem

000002 = Tampa (default)

 

But that doesnt mean anything as I have found.

 

If your client insists that they should be submitting to Nashville then you have to find the numerical representation for Nashville.

 

In the actual XML submission the BIN is represented as a number: 000001 or 000002

 

If you want to change the BIN to where it is getting submitted to, the quick and easy way.

 

Edit your paymentech.php file.

 

Look for this line:

$BIN->text(MODULE_PAYMENT_PAYMENTECH_BIN);

 

Change it to:

$BIN->text('000003');

 

Or whatever numerical representation Nashville is, because I havent seen that BIN anywhere.

 

hope that helps


While I'm operating on OSCommerce, I don't have to worry about silly vitals or forgetting to turn off the ane..the.. no wait I remember aes....thetic, or right I've got it Anaesthetic

Share this post


Link to post
Share on other sites

I installed the Paymentech Orbital Gateway module ver 2 as instructed.

( cURL library function installed http://curl.haxx.se)

( miniXML php package installed as instructed - Ver2 - Update)

 

and I called Paymentech Gateway Support and got back as follow

Primary URL: https://orbitalvar1.paymentech.net

Secondary URL: https://orbitalvar2.paymentech.net

BIN: 000002, MID: #######, TID: 001

 

Then, all are configured thru OScommerce Admin and test this paymenttech Gateway module through my shopping cart system with the following data

 

Name ABC

Visa 4012888888881

Any expiration date

Credit Card Verification Number: 234

 

Whatever I put in the form field (Credit Card Verification) is received the same error message as follow

 

Credit Card Error!

 

Other fields are look like working well.

 

Has anyone gotten this error yet?

Any ideas will be appreciated !!

Share this post


Link to post
Share on other sites

First, Thanks so much for this contribution, Wheat!

 

Thanks also for the explanation below, Paul!

 

I am not a programmer, but a hack and so far have been able to make things work.

 

I have a question for you, Paul about the Fix, Item 4. below...

Is this rounding to the nearest unit ($) because of the zero "0" or the 100th (penny)? If it is rounding to the dollar and I use a two (2) instead of the zero (0), can I get it to round to a penny?

 

 

Thanks in advance,

 

Tom

 

 

Getting things to work with Paymentech/Orbital is a bit challenging, but if it helps, here's some information, along with a couple of fixes, that I can pass along:

 

1. Paymentech has TWO environments: Test and Production. Each has to have a unique Merchant ID associated with it in order for things to be set up on their end correctly. Meaning, if you've selected Test mode through the OSC Admin and you pass Paymentech your Production Merchant ID, it won't work.

 

2. The Paymentech environments do not talk to each other. If you've got the OSC switch set to run in Test mode, you'll be sending data to their Test server. If you've got the OSC switch set to run in Production mode, you'll be sending data to their Production server. Each server needs to have your shopping cart's IP addresses loaded on it. If they're not, you'll bomb out with a 20412 error ("Precondition Failed: Security Information is missing"). The only way to get your IP addresses loaded on each server is to call the Orbital 800 number.

 

[FYI: Once the IP addresses have been added, you need to wait about an hour before you sending a sale through.]

 

3. Make sure that you've got the correct merchant information in the correct field in the OSC Admin. Paymentech sends their Orbital customers a document showing their "Group" number and "Merchant Number". The "Merchant Number" is the "Bank Merchant Number" or "Visa/Mastercard Merchant Number". Meaning, if there's ever a question about a sale and someone calls on it, the "Merchant Number" would come into play. For sending data to the Paymentech Test and Production environments, the GROUP number needs to be sent. If the Group number is NOT sent, Paymentech will return a "9717 Security Information - agent/chain/merchant is missing" error and you'll be scratching your head thinking, "But I SENT the Merchant ID! What else could be missing?!!"

 

Also, the "Paymentech Trace ID" field shown on the OSC Admin is actually the Paymentech "Terminal ID". "Terminal ID" doesn't seem to be included in any of the initial documents sent by Paymentech, but a quick call to their 800 number should provide that. If the wrong "Terminal ID" is sent, Paymentech will return a "523 An invalid TID was received (xxx)" (where xxx is the ID that was entered in the "Payment Trace ID" field through the OSC Admin.

 

Lastly, double-check everything. This seems obvious, but when you're trying to get a new module working and the pressure is on, it's easy to overlook stuff like this.

 

4. FIX: In the process of adding taxes (and other percentile amounts) to the order's total amount, OSC keeps everything as a float data type. Even though paymentech.php was coded things to multiply the total by 100 to eliminate decimal positions (which are not allowed on the authorizations), the total remains a float. Meaning, there are still decimal positions! This will cause the auth to fail with an "801 Error validating amount. Must be numerical and greater than 0 [xxxx.xxxx]" (where xxxx.xxxx is the total amount that was actually sent to Paymentech. I don't know if there's a specific setting in OSC's Admin to limit the number of decimal positions, but this will take care of things regardless:

 

Old Line:

tep_draw_hidden_field('my_totalamount', ($order->info['total'])*100) .

 

New Line:

tep_draw_hidden_field('my_totalamount', round(($order->info['total'] * 100), 0)) .

 

5. FIX: In tracing through the Line 337 error ("Fatal error: Call to a member function on a non-object in ... paymentech.php on line 337"), I discovered that line 337 was bombing because the $procstatus object was never created two lines earlier. No $procstatus object = No $procstatus value = BOOM! So, I contacted Wheat explaining what I had found and he sent me brand new versions of the following classes:

 

doc.inc.php

element.inc.php

node.inc.php

treecomp.inc.php

 

New versions located here listed as "Ver2 Update":

http://www.oscommerce.com/community/contri...ns,1998/page,15

 

These worked like a charm with no further code changes needed oni my part! Big kudos to Wheat also for answering my cry for help as quickly as he did!

 

Hope this helps!

 

Paul

Share this post


Link to post
Share on other sites

I have tried all the suggestions and contributions (ver2 & Ver2 Update) and am still getting the 337 error. What am I missing? Any further insight would be great!!

Share this post


Link to post
Share on other sites

Hi,

 

I have configured exactly as brifed, also send my Server IP address to the Orbital and they add it. But i still got Page Can not be displayed error.

 

My Server is CURL enabled. I doubled checked that before sending request to the Paymentech Server everything is fine. But i can't get any response from them and i don't think that CURL is a problem. As i checked it and it's enabled in my server.

 

Any help will be appriciated !!!

 

arya

Share this post


Link to post
Share on other sites

Hi All,

 

Could any one provide me information as to how I could affiliate an ip address with the paymentech Orbital gateway.

 

I couldn't find much information on the Paymentech site. I have read in the Paymentech COM SDK Documentation that the Orbital Gateway uses source IP authentication to authenticate the request generation. So I need to raise a request to the paymentech support.

 

Please let me know the number where I could contact Paymentech support or where I could raise a request online.

 

Any help would be highly appreciated.

 

Thanks

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
Sign in to follow this  

×