Payment Verification - Order Processing

Hi,



I am in the process of switching carts from digiSHOP to CS-Cart. But now I am at the payment processing testing stage (after over a 100 hours of work) and am seriously confused about how CS-Cart validates Payments.



We use PayPal Payments Standard. The current cart uses IPN (Instant Payment Notification) set up in the cart and at PayPal. It tells you if the order is Pending (could be under Payment Review), Approved (everything is ok and we have money!), or Declined (payment did not process for some reason, so no Money!).



In CS-Cart I can get an OPEN order status by just hitting the Submit Order button. If I just exit off the PayPal page (i.e. don’t enter any info, just close the page) the order goes into the cart without any payment! If the customer hits the back button and returns to the cart for some reason it processes as FAILED.



Can CS-Cart be set-up to not send the order until the payment has actually been processed. There is no point in our store receiving any order that has not been paid for!!



Can CS-Cart be set up to change an Order Status if something changes on the payment handers end. i.e. Chargebacks etc?



Can PayPal Pro or an actual Merchant Gateway be set up so that only paid orders are put into the Cart? I have no problem with getting Declined or Failed orders, just orders that look like orders but have no confirmed payment.



If you get a large volume of orders having to verify every order with your payment handler is not only super time consuming, but leads to errors and really (let face it) takes away from what a Shopping Cart is supposed to do.



I hope I am missing something here!! Any advice or input from those with experience in this area would be most appreciated.



Any MODS or Administrators your input would also be appreciated!!



Thank you in advance.



WUAP

Unfortunately, you are not missing anything. There is a third-party solution available however I do not think it works for Paypal. It is described in in this thread:

[url]http://forum.cs-cart.com/showthread.php?t=15903[/url]



This issue is on the Cs-Cart roadmap but without any estimated fix date. You can vote to have this issue escalated to the highest priority by casting your vote here:

[url]http://cscart.uservoice.com/forums/40782-general/suggestions/517445-order-placement-fix-problems-with-duplicate-order[/url]



You can also add your comments, specifically that it works with Paypal.



Bob

I do not think my addon will do anything about the Paypal (or any off-site processor that is not transaction based). My addon only deals with “decliined” and “failed” order statuses. Open is a whole different animal.



When Cs-cart creates an order is is created with status ‘B’ (backordered). When it goes to a transaction oriented payment processor it can then go to one of ‘F’ (failed), ‘D’ (declined) or ‘P’ (processed).



But an off-line or non-transaction oriented processor, the order status goes from ‘B’ to ‘O’ (open) and then the cart waits for a callback from the processor. If one never comes then the order status remains as it is. If the get the confirming callback, then the status goes to ‘P’.



Paypal is funny in that data isn’t sent via the callback unless the user clicks the “return to merchant” (or whatever it’s called) link. Even though the payment is made.



So this takes two errant environments and compounds them together into one big mess.



I would think cs-cart would be very leary of messing with the payment code. They really have no confirmation from Paypal since they don’t support IPN (which is the most reliable way to get confirmation from paypal).



Oh well…

I think some people have had success using PayPal Express to get rid of the Open PayPal order problem. It allows customers to go directly from the cart to PayPal and bypass the store checkout.



I need my customers to go through checkout so they can create an account (to retrieve download links) so I can’t use PayPal Express. I have quite a few “Open” PayPal orders, but at least half of those customers try again and I can easily delete the duplicate. “Open” with PayPal may also mean an eCheck was used so I have to verify that.



If you use a regular gateway you shouldn’t see any Open orders. Failed orders, yes… but I like the way mine is working now. Even though an order is created for a “failed” order, it does allow the customer to go back and fix it even if they leave the cart and come back later. Many of my failed orders now convert to a successful one. Out-of-the-box it is confusing that an order is created, but now I am using tbirnseth’s addon that provides a reason for the declined payment along with a suggested solution. I also modified my details.tpl to provide additional instructions. It’s working really well.


[quote name=‘tbirnseth’]Paypal is funny in that data isn’t sent via the callback unless the user clicks the “return to merchant” (or whatever it’s called) link. Even though the payment is made.[/QUOTE]

I haven’t noticed any issues with this. I am fairly sure clicking the return to merchant link isn’t required, at least for my set up. If I have an “Open” order it’s because someone went to PayPal and didn’t make the payment OR they used an eCheck. I’ve been using the cart since September and have not had any PayPal payments missed by CS-Cart.

[quote name=‘ogia’]I think some people have had success using PayPal Express to get rid of the Open PayPal order problem. It allows customers to go directly from the cart to PayPal and bypass the store checkout.[/QUOTE]



I tried PayPal Express and it doesn’t bypass the store checkout. In fact, it is a pretty good option to use but I had other issues. PayPal Express actually fits INTO your store checkout by sending the customer out to PayPal to verify the address and billing info within their PayPal account then sends them BACK to your store checkout with the information completed in the checkout and the customer just continues to checkout as normal.



I will probably try to test it again and figure out what the problem was with my setup because I’m using PayPal Standard right now and would love to have the process included with the checkout steps.



I also have not had any issues with PayPal Standard working to make my orders Processed. They are not left in an Open status and the customer does not have to click the Return to store link to make the status change to Processed.

When I tried PayPal Express, I had several customers place orders without having to register so I had to switch back to the old PayPal method. I assume they were clicking on the PayPal Express button when viewing their cart, which sent them straight to PayPal. :confused:

Right but they should have had to click a button in PayPal to return to your store and finish checking out. How do you make them register now? Do you have it required that a customer has to create an account? Maybe that doesn’t work in conjunction with PPE correctly? I don’t require customer registration so maybe that’s why I didn’t realize there might be an issue. :slight_smile:

I do have registration required. I’m not sure how it was working, but I thought they must have been bypassing checkout. I didn’t take much time to see what was happening and just switched back to the old way because I didn’t want to have to manually create any more accounts for my PayPal customers.

[quote name=‘tbirnseth’]When Cs-cart creates an order is is created with status ‘B’ (backordered). When it goes to a transaction oriented payment processor it can then go to one of ‘F’ (failed), ‘D’ (declined) or ‘P’ (processed).



But an off-line or non-transaction oriented processor, the order status goes from ‘B’ to ‘O’ (open) and then the cart waits for a callback from the processor. If one never comes then the order status remains as it is. If the get the confirming callback, then the status goes to ‘P’.[/QUOTE]



Can anyone help me understand how CS-Cart works with Authorize.net?



It sounds like “Backorder” means the cart’s saying, “I acknowlege that you entered payment info, but I need confirmation from the credit card company before I’ll mark this ‘paid’.” Right? If so, that’s the wrong name for this state of affairs. :wink:



Can I just change “Backordered” to say “Pending” in the Order Statuses admin? (I see that it’s a changeable field, but someone said elsewhere that doing so could cause a mess… sorry for all the newbie questions.)



I am placing test orders now (both in Authorize.net Test Mode and live mode) and as a customer, my orders say Backordered once I complete the credit card info. This will confuse the **** out of my customers!



I have a manual transaction review on Auth.net, so none of my orders will complete processing until a human being notices the sale and checks “approve” on Auth.net. Assuming the card is good (most are), does Auth.net then update the order status in the cart automatically? I don’t mind clicking “paid” myself in the admin, but if it’s automated… bonus!



What’s most important to me is that CS-Cart will not remove anything from inventory until an order is actually marked PAID. Does the Open order status (like from a “Phone Ordering” payment choice) decrease the inventory before a payment is actually called in? The Order status admin makes it look that way, and it’s not changeable. :confused: I could disable this choice it need be, but really wanted to use it.

You can change the ‘Backordered’ label in the order statuses to ‘Pending’; the cart uses the status code (B, C, P, etc) internally.



Bob

Music to my ears! Thank you and done.



I just processed a test order and manually changed “pending” to “processed.” It gave me the green box that status was updated, then I refreshed my customer cart and it still says pending.



I then navigated off the orders admin page and came back to it… it’s pending again. Reset to processed, cleared cache, pending again. I feel crazy. :shock:



Does the cart require a ping from the actual processor? If no, how can I manually change an order status and make it “take”?

I am not sure I am clear on this.



Are you saying that the cart is configured so that a ‘Pending’ status is the initial order status for credit card payments? You then change the status to ‘Processed’ and the status reverts to ‘Pending’?



Are you changing only the Status dropdown?



Bob

I changed Backorder to be labeled Pending, because that is what my customers are used to.



So, to use default cart terms:



Placed an order (Authorize.net is in test mode) and order comes through with status Backordered (expected behavior).



Using the Status dropdown, I changed the Order Status to Processed, and it reverts to Backordered upon refreshing the window (not expected!).



The following order statuses will stay once selected: Declined, Failed, Cancelled.



These will persistently revert to Backordered: Completed, Open, Paid.



Is there another place I can/should be changing this status? It’s actually rather key to my workflow, thanks to the manual review process mentioned upthread. I did try to change it from “view order” - no good. If I hit Edit and then tried to change it, doesn’t work either. That order is bound and determined to remain Backordered.



Oh, I forgot to uncheck “Notify Customer” so I sent myself a dozen emails while checking this :wink: Good job there is another thread about permanently un-checking that box! So much to do…

Not sure why this is happening. It does not make any sense though since someone with a problem order could call in their information and you could manually run the card through the Authorize.net terminal and would then need to change the status to ‘Processed’.



Bob

Exactly, and that does happen now and again. I also have a few people that like to put all their stuff in the cart and then call me just because they feel weird about entering their card data on the internet!



I’ll keep looking and working with this. So far every strange thing in this cart has had an explanation or at least a good workaround… expect this to be the same.



Thanks again for your help!

[quote name=‘jobosales’]Not sure why this is happening. It does not make any sense though since someone with a problem order could call in their information and you could manually run the card through the Authorize.net terminal and would then need to change the status to ‘Processed’.

Bob[/QUOTE]



my guess is an addon hook… Anything non-standard installed on your cart?



You can search your addons tree for “change_order_status(". It will normally be written as "fn_change_order_status(”. You’ll then see what addons are “hooking” the order status change and can then investigate them.



My system show the following addons hook order status:

reward_points

gift_registry

gift_certificates

google_analytics

bestsellers

rma

affiliate



If you have anything in that’s not in the list it’s probaby non-standard and would be my first suspect. I don’t have many of these turned on in my environment.



But I’m very interested in what you find out since I have a client who gets 4 emails when they submit through a particular payment processor and I think it may be caused by my changing the order status remotely to something else and then something may be changing it back again…

[QUOTE]Exactly, and that does happen now and again. I also have a few people that like to put all their stuff in the cart and then call me just because they feel weird about entering their card data on the internet![/QUOTE]



There is already a payment method called “Phone Ordering” in CS-Cart which should work well for this type of scenario!

tbirnseth, I’ll check on that in the morning, right now it’s a bit too late at night in my timezone for anything technical :mrgreen: Will post here if I find anything conclusive.


[quote name=‘Struck’]There is already a payment method called “Phone Ordering” in CS-Cart which should work well for this type of scenario![/QUOTE]



Yes, and I’m looking forward to using it! For exactly that reason. Currently I have those orders ending up as “unfinalized” which leaves them subject to deletion if the buyer does not call promptly. As long as I can change the order status once their payment is approved, this will be a good thing.

[quote name=‘tbirnseth’]my guess is an addon hook… Anything non-standard installed on your cart?



You can search your addons tree for “change_order_status(". It will normally be written as "fn_change_order_status(”. You’ll then see what addons are “hooking” the order status change and can then investigate them.[/QUOTE]



I guess it’s been a few days since this discussion began, but unfortunately this is still an issue. I thought it was resolved, but now I’m live and it’s back :evil:



First question, can anyone tell me where/how to search the addons tree? This is the first thing I’d like to check, because I have been changing things.



Next, here’s the drama that took place last night:


  1. Customer places order, but mis-types her expiration date. Order fails, as expected. (Order #xxx201)
  2. She sees that it failed and places a different order, succeeds this time. Order #xxx202 is automatically marked status “B” and her info passes to Authorize.net for manual approval.
  3. I review and approve the Auth.net transaction, change order #xxx202 status to Paid, and it resets to “B”. Repeat ad infinitum.



    I’d also love to know why there were multiple orders from her passed to Auth.net. Two bear the invoice number of the Failed order and a third one is from the good order - which we approved and her card was accepted.



    I also have another order with this unchangeable status issue. Some of my test orders have this issue, other go to “Open” and they update fine. Have not yet discovered the reason why this occurs sometimes, but not others.



    Any ideas?

[quote name=‘Dardanus’]I guess it’s been a few days since this discussion began, but unfortunately this is still an issue. I thought it was resolved, but now I’m live and it’s back :evil:



First question, can anyone tell me where/how to search the addons tree? This is the first thing I’d like to check, because I have been changing things.



Next, here’s the drama that took place last night:


  1. Customer places order, but mis-types her expiration date. Order fails, as expected. (Order #xxx201)
  2. She sees that it failed and places a different order, succeeds this time. Order #xxx202 is automatically marked status “B” and her info passes to Authorize.net for manual approval.
  3. I review and approve the Auth.net transaction, change order #xxx202 status to Paid, and it resets to “B”. Repeat ad infinitum.



    I’d also love to know why there were multiple orders from her passed to Auth.net. Two bear the invoice number of the Failed order and a third one is from the good order - which we approved and her card was accepted.



    I also have another order with this unchangeable status issue. Some of my test orders have this issue, other go to “Open” and they update fine. Have not yet discovered the reason why this occurs sometimes, but not others.



    Any ideas?[/QUOTE]



    I use Auth.net and I have not seen any of the problems you are having, Duplicate transactions listed at Auth.net will have a (-1, -2, -3 etc) at the end of the order # and this means as I understand it the customer submitted as many times on the same order.

    I have my Auth.net setup to Authorize only and every order comes back with the status processed or Declined , I don,t know why you have it setup to manually approve.



    As far the other problem with the order status, did you add a new order status “paid” or did you change the label for any other status to paid? I can change any order status to whatever and it takes without a problem.