示例#1
0
        public ITransactionCaptureResult Capture(ITransactionCaptureRequest request)
        {
            //to capture a transaction, we'll need authorization id previously obtained from paypal
            var authorizationId = request.GetParameterAs <string>(PaymentParameterNames.AuthorizationId);

            var paypalCurrency = PayPalHelper.GetPaypalCurrency(request.CurrencyIsoCode);

            //create a capture request for paypal
            var doCaptureRequest = new DoCaptureReq()
            {
                DoCaptureRequest = new DoCaptureRequestType()
                {
                    Version         = ApiVersion,
                    AuthorizationID = authorizationId,
                    Amount          = new BasicAmountType()
                    {
                        value      = Math.Round(request.Amount, 2).ToString("N", new CultureInfo("en-us")),
                        currencyID = paypalCurrency
                    },
                    CompleteType = CompleteCodeType.COMPLETE
                }
            };

            //get the service for paypal api
            var service        = GetPayPalApiInterfaceServiceService();
            var paypalResponse = service.DoCapture(doCaptureRequest);


            var result = new TransactionResult();

            string error;
            var    success = PayPalHelper.ParseResponseSuccess(paypalResponse, out error);

            if (success)
            {
                result.Success = true;
                result.SetParameter(PaymentParameterNames.CaptureId, paypalResponse.DoCaptureResponseDetails.PaymentInfo.TransactionID);
                result.SetParameter(PaymentParameterNames.CaptureResult, paypalResponse.Ack);
            }
            else
            {
                result.SetParameter(PaymentParameterNames.ErrorMessage, error);
            }

            return(result);
        }
        public ITransactionCaptureResult Capture(ITransactionCaptureRequest request)
        {
            //to capture a transaction, we'll need authorization id previously obtained from paypal
            var authorizationId = request.GetParameterAs<string>(PaymentParameterNames.AuthorizationId);

            var paypalCurrency = PayPalHelper.GetPaypalCurrency(request.CurrencyIsoCode);

            //create a capture request for paypal
            var doCaptureRequest = new DoCaptureReq() {
                DoCaptureRequest = new DoCaptureRequestType() {
                    Version = ApiVersion,
                    AuthorizationID = authorizationId,
                    Amount = new BasicAmountType() {
                        value = Math.Round(request.Amount, 2).ToString("N", new CultureInfo("en-us")),
                        currencyID = paypalCurrency
                    },
                    CompleteType = CompleteCodeType.COMPLETE
                }
            };

            //get the service for paypal api
            var service = GetPayPalApiInterfaceServiceService();
            var paypalResponse = service.DoCapture(doCaptureRequest);

            var result = new TransactionResult();

            string error;
            var success = PayPalHelper.ParseResponseSuccess(paypalResponse, out error);
            if (success)
            {
                result.Success = true;
                result.SetParameter(PaymentParameterNames.CaptureId, paypalResponse.DoCaptureResponseDetails.PaymentInfo.TransactionID);
                result.SetParameter(PaymentParameterNames.CaptureResult, paypalResponse.Ack);
            }
            else
            {
                result.SetParameter(PaymentParameterNames.ErrorMessage, error);
            }

            return result;
        }