/// <summary> /// Captures payment /// </summary> /// <param name="order">Order</param> /// <param name="processPaymentResult">Process payment result</param> public void Capture(Order order, ref ProcessPaymentResult processPaymentResult) { InitSettings(); string authorizationID = processPaymentResult.AuthorizationTransactionId; DoCaptureReq req = new DoCaptureReq(); req.DoCaptureRequest = new DoCaptureRequestType(); req.DoCaptureRequest.Version = this.APIVersion; req.DoCaptureRequest.AuthorizationID = authorizationID; req.DoCaptureRequest.Amount = new BasicAmountType(); req.DoCaptureRequest.Amount.Value = order.OrderTotal.ToString("N", new CultureInfo("en-us")); req.DoCaptureRequest.Amount.currencyID = PaypalHelper.GetPaypalCurrency(IoC.Resolve <ICurrencyService>().PrimaryStoreCurrency); req.DoCaptureRequest.CompleteType = CompleteCodeType.Complete; DoCaptureResponseType response = service2.DoCapture(req); string error = string.Empty; bool Success = PaypalHelper.CheckSuccess(response, out error); if (Success) { processPaymentResult.PaymentStatus = PaymentStatusEnum.Paid; processPaymentResult.CaptureTransactionId = response.DoCaptureResponseDetails.PaymentInfo.TransactionID; processPaymentResult.CaptureTransactionResult = response.Ack.ToString(); } else { processPaymentResult.Error = error; } }
public override CapturePaymentResult Capture(CapturePaymentRequest capturePaymentRequest) { var result = new DoCaptureResponseType(); var settings = CommonServices.Settings.LoadSetting <PayPalExpressPaymentSettings>(capturePaymentRequest.Order.StoreId); // build the request var req = new DoCaptureReq { DoCaptureRequest = new DoCaptureRequestType() }; //execute request using (var service = new PayPalAPIAASoapBinding()) { service.Url = PayPalHelper.GetPaypalServiceUrl(settings); service.RequesterCredentials = PayPalHelper.GetPaypalApiCredentials(settings); result = service.DoCapture(req); } var capturePaymentResult = new CapturePaymentResult(); if (result.Ack == AckCodeType.Success) { capturePaymentResult.CaptureTransactionId = result.DoCaptureResponseDetails.PaymentInfo.TransactionID; capturePaymentResult.CaptureTransactionResult = "Success"; } else { capturePaymentResult.CaptureTransactionResult = "Error"; capturePaymentResult.Errors.Add(result.Errors.FirstOrDefault().LongMessage); } return(capturePaymentResult); }
/// <summary> /// Captures payment /// </summary> /// <param name="capturePaymentRequest">Capture payment request</param> /// <returns>Capture payment result</returns> public CapturePaymentResult Capture(CapturePaymentRequest capturePaymentRequest) { var result = new CapturePaymentResult(); string authorizationId = capturePaymentRequest.Order.AuthorizationTransactionId; var req = new DoCaptureReq(); req.DoCaptureRequest = new DoCaptureRequestType(); req.DoCaptureRequest.Version = GetApiVersion(); req.DoCaptureRequest.AuthorizationID = authorizationId; req.DoCaptureRequest.Amount = new BasicAmountType(); req.DoCaptureRequest.Amount.Value = Math.Round(capturePaymentRequest.Order.OrderTotal, 2).ToString("N", new CultureInfo("en-us")); req.DoCaptureRequest.Amount.currencyID = PaypalHelper.GetPaypalCurrency(_currencyService.GetCurrencyById(_currencySettings.PrimaryStoreCurrencyId)); req.DoCaptureRequest.CompleteType = CompleteCodeType.Complete; using (var service2 = new PayPalAPIAASoapBinding()) { if (!_paypalDirectPaymentSettings.UseSandbox) { service2.Url = "https://api-3t.paypal.com/2.0/"; } else { service2.Url = "https://api-3t.sandbox.paypal.com/2.0/"; } service2.RequesterCredentials = new CustomSecurityHeaderType(); service2.RequesterCredentials.Credentials = new UserIdPasswordType(); service2.RequesterCredentials.Credentials.Username = _paypalDirectPaymentSettings.ApiAccountName; service2.RequesterCredentials.Credentials.Password = _paypalDirectPaymentSettings.ApiAccountPassword; service2.RequesterCredentials.Credentials.Signature = _paypalDirectPaymentSettings.Signature; service2.RequesterCredentials.Credentials.Subject = ""; DoCaptureResponseType response = service2.DoCapture(req); string error = ""; bool success = PaypalHelper.CheckSuccess(response, out error); if (success) { result.NewPaymentStatus = PaymentStatus.Paid; result.CaptureTransactionId = response.DoCaptureResponseDetails.PaymentInfo.TransactionID; result.CaptureTransactionResult = response.Ack.ToString(); } else { result.AddError(error); } } return(result); }
/// <summary> /// Captures payment /// </summary> /// <param name="capturePaymentRequest">Capture payment request</param> /// <returns>Capture payment result</returns> public override CapturePaymentResult Capture(CapturePaymentRequest capturePaymentRequest) { var result = new CapturePaymentResult() { NewPaymentStatus = capturePaymentRequest.Order.PaymentStatus }; var settings = CommonServices.Settings.LoadSetting <TSetting>(capturePaymentRequest.Order.StoreId); string authorizationId = capturePaymentRequest.Order.AuthorizationTransactionId; var req = new DoCaptureReq(); req.DoCaptureRequest = new DoCaptureRequestType(); req.DoCaptureRequest.Version = PayPalHelper.GetApiVersion(); req.DoCaptureRequest.AuthorizationID = authorizationId; req.DoCaptureRequest.Amount = new BasicAmountType(); req.DoCaptureRequest.Amount.Value = Math.Round(capturePaymentRequest.Order.OrderTotal, 2).ToString("N", new CultureInfo("en-us")); req.DoCaptureRequest.Amount.currencyID = (CurrencyCodeType)Enum.Parse(typeof(CurrencyCodeType), Helper.CurrencyCode, true); req.DoCaptureRequest.CompleteType = CompleteCodeType.Complete; using (var service = new PayPalAPIAASoapBinding()) { service.Url = PayPalHelper.GetPaypalServiceUrl(settings); service.RequesterCredentials = PayPalHelper.GetPaypalApiCredentials(settings); DoCaptureResponseType response = service.DoCapture(req); string error = ""; bool success = PayPalHelper.CheckSuccess(_helper, response, out error); if (success) { result.NewPaymentStatus = PaymentStatus.Paid; result.CaptureTransactionId = response.DoCaptureResponseDetails.PaymentInfo.TransactionID; result.CaptureTransactionResult = response.Ack.ToString(); } else { result.AddError(error); } } return(result); }
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); }