Using Kentico v9
I am trying to create a custom single page checkout.  We are trying to use the out of the box Authorize.Net payment gateway.  I have everything working up to the point that I try to process the credit card. When I call the ProcessPayment() method, I get the following exception
"Object reference not set to an instance of an object."
There is another forum post with exactly the same issue but no resolution.  http://devnet.kentico.com/questions/custom-e-commerce-one-page-checkout-web-part-issues
My order is place correctly.  The shopping cart has the proper billing address (shipping is not needed.)  
PaymentGatewayProvider.OrderId = ShoppingCart.OrderId;
PaymentGatewayProvider.ShoppingCartInfoObj = ShoppingCart;
I can process the payment thru the dashboard so I know the Authorize.Net portion is set up correctly.  Not sure what I am missing in my code.  Any suggestions?
Here is my current code in case it helps.
AddItemToCart(_skuId, donationAmount);
SetUpCustomer(firstName, lastName, email, phone, address1, address2, city, stateId, 
    countryId, zipCode, nameOnCard, donationAmount, isRecurring, donationFrequency, subscribeNewsletter);
CurrentShoppingCart.Customer = _customer;
CurrentShoppingCart.RegisterAfterCheckout = true;
CurrentShoppingCart.ShoppingCartBillingAddress = _customerAddress;
ShoppingCartInfoProvider.SetOrder(CurrentShoppingCart);
ShoppingCartInfoProvider.SetShoppingCartInfo(CurrentShoppingCart);
CurrentShoppingCart.PaymentGatewayCustomData[AuthorizeNetParameters.CARD_NUMBER] = txtCardNumber.Text.Trim();
CurrentShoppingCart.PaymentGatewayCustomData[AuthorizeNetParameters.CARD_CCV] = txtSecurityCode.Text.Trim();
CurrentShoppingCart.PaymentGatewayCustomData[AuthorizeNetParameters.CARD_EXPIRATION] = CreditCardExpiration;
if (MyAuthorizePaymentProvider != null)
{
    MyAuthorizePaymentProvider.OrderId = CurrentShoppingCart.OrderId;
    MyAuthorizePaymentProvider.ShoppingCartInfoObj = CurrentShoppingCart;
    // Validate data if web part is not placed in wizard
    string validationMsg = MyAuthorizePaymentProvider.ValidateCustomData();
    if (!string.IsNullOrEmpty(validationMsg))
    {
        // Do not continue if validation failed
        ShowError(validationMsg);
    }
    MyAuthorizePaymentProvider.ProcessCustomData();
    MyAuthorizePaymentProvider.ProcessPayment();
}