We had a system that supported both PayPal and Authorize.net (Authorize.net was through Business::OnlinePayment). The Authorize.net stuff was easy to implement, and when their server went down, the scripts would error out correctly. The problem with PayPal was that we would send off a request to their server to charge a card, and their server would never ping back that the card was charged. So people were being charged, but we had no record of it. It was a really bad system and I was happy when we were finally authorized to get rid of the PayPal component.