Paymentech contribution
#3
Posted 17 May 2005 - 02:25 PM
Wheat, on Apr 18 2005, 07:31 PM, said:
We had minixml 1.3.0 installed and received the error regarding line 337 (see snippet below) - we then rolled back to 1.2.6 and still get the same error. Line 337 reads:
if ($procstatus->getValue() === '0') {
any ideas?
#4
Posted 19 September 2005 - 02:44 PM
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.oscommerc...ity/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
#5
Posted 30 November 2005 - 01:39 AM
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.
#6
Posted 06 January 2006 - 12:38 PM
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.
#11
Posted 27 April 2006 - 08:19 PM
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 formattingThat 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
This post has been edited by OSCommerceSurgeon: 27 April 2006 - 08:20 PM
#12
Posted 27 April 2006 - 08:28 PM
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
#13
Posted 06 June 2006 - 11:33 PM
( 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 !!
#14
Posted 15 August 2006 - 06:39 PM
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
kitchenbitch, on Sep 19 2005, 09:44 AM, said:
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.oscommerc...ity/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
#16
Posted 15 October 2007 - 04:02 PM
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
#17
Posted 18 February 2008 - 12:01 PM
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

Sign In
Register
Help



MultiQuote
