// A helper method used by APIResponse.aspx that returns select response parameters // of interest. You must process API response objects as applicable to your application private void setKeyResponseObjects(PayPalAPIInterfaceServiceService service, DoCaptureResponseType doCaptureResponse) { Dictionary<string, string> responseParams = new Dictionary<string, string>(); HttpContext CurrContext = HttpContext.Current; CurrContext.Items.Add("Response_keyResponseObject", responseParams); CurrContext.Items.Add("Response_apiName", "DoCapture"); CurrContext.Items.Add("Response_redirectURL", null); CurrContext.Items.Add("Response_requestPayload", service.getLastRequest()); CurrContext.Items.Add("Response_responsePayload", service.getLastResponse()); if (doCaptureResponse.Ack.Equals(AckCodeType.FAILURE) || (doCaptureResponse.Errors != null && doCaptureResponse.Errors.Count > 0)) { CurrContext.Items.Add("Response_error", doCaptureResponse.Errors); } else { CurrContext.Items.Add("Response_error", null); responseParams.Add("Transaction Id", doCaptureResponse.DoCaptureResponseDetails.PaymentInfo.TransactionID); responseParams.Add("Payment status", doCaptureResponse.DoCaptureResponseDetails.PaymentInfo.PaymentStatus.ToString()); responseParams.Add("Pending reason", doCaptureResponse.DoCaptureResponseDetails.PaymentInfo.PendingReason.ToString()); } Server.Transfer("../APIResponse.aspx"); }
// # DoCapture API Operation // Captures an authorized payment. public DoCaptureResponseType DoCaptureAPIOperation() { // Create the DoCaptureResponseType object DoCaptureResponseType responseDoCaptureResponseType = new DoCaptureResponseType(); try { // Create the DoCapture object DoCaptureReq doCapture = new DoCaptureReq(); // `Amount` to capture which takes mandatory params: // // * `currencyCode` // * `amount` BasicAmountType amount = new BasicAmountType(CurrencyCodeType.USD, "4.00"); // `DoCaptureRequest` which takes mandatory params: // // * `Authorization ID` - Authorization identification number of the // payment you want to capture. This is the transaction ID returned from // DoExpressCheckoutPayment, DoDirectPayment, or CheckOut. For // point-of-sale transactions, this is the transaction ID returned by // the CheckOut call when the payment action is Authorization. // * `amount` - Amount to capture // * `CompleteCode` - Indicates whether or not this is your last capture. // It is one of the following values: // * Complete – This is the last capture you intend to make. // * NotComplete – You intend to make additional captures. // `Note: // If Complete, any remaining amount of the original authorized // transaction is automatically voided and all remaining open // authorizations are voided.` DoCaptureRequestType doCaptureRequest = new DoCaptureRequestType("O-4VR15106P7416533H", amount, CompleteCodeType.NOTCOMPLETE); doCapture.DoCaptureRequest = doCaptureRequest; // Create the service wrapper object to make the API call PayPalAPIInterfaceServiceService service = new PayPalAPIInterfaceServiceService(); // # API call // Invoke the DoCapture method in service wrapper object responseDoCaptureResponseType = service.DoCapture(doCapture); if (responseDoCaptureResponseType != null) { // Response envelope acknowledgement string acknowledgement = "DoCapture API Operation - "; acknowledgement += responseDoCaptureResponseType.Ack.ToString(); logger.Info(acknowledgement + "\n"); Console.WriteLine(acknowledgement + "\n"); // # Success values if (responseDoCaptureResponseType.Ack.ToString().Trim().ToUpper().Equals("SUCCESS")) { // Authorization identification number logger.Info("Authorization ID : " + responseDoCaptureResponseType.DoCaptureResponseDetails.AuthorizationID + "\n"); Console.WriteLine("Authorization ID : " + responseDoCaptureResponseType.DoCaptureResponseDetails.AuthorizationID + "\n"); } // # Error Values else { List<ErrorType> errorMessages = responseDoCaptureResponseType.Errors; foreach (ErrorType error in errorMessages) { logger.Debug("API Error Message : " + error.LongMessage); Console.WriteLine("API Error Message : " + error.LongMessage + "\n"); } } } } // # Exception log catch (System.Exception ex) { // Log the exception message logger.Debug("Error Message : " + ex.Message); Console.WriteLine("Error Message : " + ex.Message); } return responseDoCaptureResponseType; }