public override string CaptureOrder(Order o) { String result = String.Empty; o.CaptureTXCommand = ""; o.CaptureTXResult = ""; // check for ReauthorizationID first, if doesn't exist, use original AuthorizationID String TransID = Regex.Match(o.AuthorizationPNREF, "(?<=REAU=)[0-9A-Z]+", RegexOptions.Compiled).ToString(); if (TransID.Length == 0) { TransID = Regex.Match(o.AuthorizationPNREF, "(?<=AUTH=)[0-9A-Z]+", RegexOptions.Compiled).ToString(); } Decimal OrderTotal = o.OrderBalance; if (TransID.Length == 0 || TransID == "0") { result = "Invalid or Empty Transaction ID"; } else { try { DoCaptureReq CaptureReq = new DoCaptureReq(); DoCaptureRequestType CaptureRequestType = new DoCaptureRequestType(); DoCaptureResponseType CaptureResponse; BasicAmountType totalAmount = new BasicAmountType(); totalAmount.Value = Localization.CurrencyStringForGatewayWithoutExchangeRate(OrderTotal); totalAmount.currencyID = (CurrencyCodeType)Enum.Parse(typeof(CurrencyCodeType), AppLogic.AppConfig("Localization.StoreCurrency"), true); CaptureRequestType.Amount = totalAmount; CaptureRequestType.AuthorizationID = TransID; CaptureRequestType.CompleteType = CompleteCodeType.Complete; CaptureRequestType.Version = API_VER; CaptureReq.DoCaptureRequest = CaptureRequestType; o.CaptureTXCommand = XmlCommon.SerializeObject(CaptureReq, CaptureReq.GetType()); //"Not Available For PayPal"; CaptureResponse = (DoCaptureResponseType)IPayPal.DoCapture(CaptureReq); //if (LogToErrorTable) //{ // PayPalController.Log(XmlCommon.SerializeObject(CaptureReq, CaptureReq.GetType()), "DoCapture Request"); // PayPalController.Log(XmlCommon.SerializeObject(CaptureResponse, CaptureResponse.GetType()), "DoCapture Response"); //} o.CaptureTXResult = XmlCommon.SerializeObject(CaptureResponse, CaptureResponse.GetType()); if (CaptureResponse != null && CaptureResponse.Ack.ToString().StartsWith("success", StringComparison.InvariantCultureIgnoreCase)) { result = AppLogic.ro_OK; String CaptureTransID = CaptureResponse.DoCaptureResponseDetails.PaymentInfo.TransactionID; o.AuthorizationPNREF = o.AuthorizationPNREF + "|CAPTURE=" + CaptureTransID; } else { if (CaptureResponse.Errors != null) { bool first = true; for (int ix = 0; ix < CaptureResponse.Errors.Length; ix++) { if (!first) { result += ", "; } result += "Error: [" + CaptureResponse.Errors[ix].ErrorCode + "] " + CaptureResponse.Errors[ix].LongMessage; first = false; } } } } catch { result = "NO RESPONSE FROM GATEWAY!"; } } return(result); }