PayPal Express Checkout for nopCommerce 3.0 & 3.10

4 years ago
bump! anyone?
4 years ago
ohtsu wrote:
[Recurring Payment Processing Error]

When I tried to use this plugin for recurring payments, I found an error :"Value cannot be null. Parameter name: value".

This error occurred when I clicked "Confirm button" after redirecting from PayPal checkout window.

The log message is as follows.

-------------------------------------------------------------------------------------------------
Error  

The log entry message.Short message:  Value cannot be null. Parameter name: value  

The details for the log entry.Full message:  System.ArgumentNullException: Value cannot be null. Parameter name: value at System.Enum.TryParseEnum(Type enumType, String value, Boolean ignoreCase, EnumResult& parseResult) at System.Enum.Parse(Type enumType, String value, Boolean ignoreCase) at System.Enum.Parse(Type enumType, String value) at Nop.Plugin.Payments.PayPalExpressCheckout.Services.PayPalRecurringPaymentsService.GetPaypalCreditCardType(String creditCardType) at Nop.Plugin.Payments.PayPalExpressCheckout.Services.PayPalRecurringPaymentsService.GetCreateRecurringPaymentProfileRequestDetails(ProcessPaymentRequest processPaymentRequest) at Nop.Plugin.Payments.PayPalExpressCheckout.Services.PayPalRequestService.GetCreateRecurringPaymentsProfileRequest(ProcessPaymentRequest processPaymentRequest) at Nop.Plugin.Payments.PayPalExpressCheckout.PayPalExpressCheckoutPaymentProcessor.ProcessRecurringPayment(ProcessPaymentRequest processPaymentRequest) at Nop.Services.Payments.PaymentService.ProcessRecurringPayment(ProcessPaymentRequest processPaymentRequest) in c:\Users\ohtsu\Documents\Visual Studio 2012\Projects\Csharp\__Mvc\nopCommerce_3.10_Source\Libraries\Nop.Services\Payments\PaymentService.cs:line 314 at Nop.Services.Orders.OrderProcessingService.PlaceOrder(ProcessPaymentRequest processPaymentRequest) in c:\Users\ohtsu\Documents\Visual Studio 2012\Projects\Csharp\__Mvc\nopCommerce_3.10_Source\Libraries\Nop.Services\Orders\OrderProcessingService.cs:line 878

---------------------------------------------------------------------------------------------------------------

I think that the cause is related with the following function in PayPalExpressCheckout.Services.PayPalRedirectionServices.cs. Because variable "details"'s properties are like these.

paymentDetailsField[0].Recurring : Y
paymentDetailsField[0].recurringField : Y
paymentDetailsField[0].recurringFieldSpecified : false
paymentDetailsField[0].RecurringSpecified : false

So variable "request"'s Recurring fields are set like these.

InitialOrderId : 0
IsRecurring Paymnet : false
RecurringCycleLength : 0
RecurringCyclePeriod : Days
RecurringTotalCycles : 0


----------------------------------------------------
        public bool ProcessReturn(string token)
        {
            using (var payPalApiaaInterfaceClient = _payPalInterfaceService.GetAAService())
            {
                var customSecurityHeaderType = _payPalSecurityService.GetRequesterCredentials();
                var details = payPalApiaaInterfaceClient.GetExpressCheckoutDetails(ref customSecurityHeaderType,
                                                                                   _payPalRequestService
                                                                                       .GetGetExpressCheckoutDetailsRequest
                                                                                       (token));

                details.LogResponse(Guid.Empty);
                if (details.Ack == AckCodeType.Success || details.Ack == AckCodeType.SuccessWithWarning)
                {
                    var request =
                        _payPalCheckoutDetailsService.SetCheckoutDetails(
                            details.GetExpressCheckoutDetailsResponseDetails);
                    _session["OrderPaymentInfo"] = request;

                    var customer = _customerService.GetCustomerById(request.CustomerId);

                    _workContext.CurrentCustomer = customer;
                    _customerService.UpdateCustomer(_workContext.CurrentCustomer);
                    return true;
                }
                return false;
            }
        }


Have you solved?