public static string CaptureOrder(Order o) { AmazonFPS.Request request = new AmazonFPS.Request(); string status = string.Empty; if (AppLogic.AppConfigBool("UseLiveTransactions")) { request.url = AppLogic.AppConfig("AMAZON.FPS_LiveServer"); } else { request.url = AppLogic.AppConfig("AMAZON.FPS_TestServer"); } request.ord = o; request.accessKey = AppLogic.AppConfig("AMAZON.AccessKey"); request.type = AmazonFPS.Request.ActionType.Settle; request.secretKey = AppLogic.AppConfig("AMAZON.SecretKey"); request.timeStamp = string.Concat(DateTime.UtcNow.ToString("s", System.Globalization.CultureInfo.InvariantCulture), "Z"); string response = CreateWebRequest(request); if (response.Contains("<Errors")) { status = GetErrorMessages(response); } else { AmazonFPS.ResponseDeserialization.SettleResponse deserializedResponse = (AmazonFPS.ResponseDeserialization.SettleResponse)DeserializeResponse(response, typeof(AmazonFPS.ResponseDeserialization.SettleResponse)); if (deserializedResponse.settle.tranStatus == AmazonFPS.ResponseDeserialization.TransactionStatus.Pending || deserializedResponse.settle.tranStatus == AmazonFPS.ResponseDeserialization.TransactionStatus.Success) { AmazonFPS.ResponseDeserialization.TransactionStatus tranStatus = deserializedResponse.settle.tranStatus; StringBuilder txResult = new StringBuilder(); txResult.AppendFormat("TransactionId={0}", deserializedResponse.settle.tranId); txResult.AppendFormat("&TransactionStatus={0}", deserializedResponse.settle.tranStatus); txResult.AppendFormat("&RequestId={0}", deserializedResponse.metadata.reqId); o.CaptureTXResult = txResult.ToString(); StringBuilder txCommand = new StringBuilder(); txCommand.AppendFormat("Action={0}", tranStatus.ToString()); txCommand.AppendFormat("&AWSAccessKeyId={0}", request.accessKey); txCommand.AppendFormat("&ReserveTransactionId={0}", request.ord.AuthorizationPNREF); txCommand.AppendFormat("&SignatureVersion={0}", request.signatureVersion); txCommand.AppendFormat("&TimeStamp={0}", request.timeStamp); txCommand.AppendFormat("&Version={0}", request.schemaVersion); o.CaptureTXCommand = txCommand.ToString(); DB.ExecuteSQL(String.Format("update orders set CaptureTXCommand={0}, CaptureTXResult={1} where OrderNumber={2}", DB.SQuote(txCommand.ToString()), DB.SQuote(txResult.ToString()), o.OrderNumber)); status = AppLogic.ro_OK; } } return(status); }
public static string RefundOrder(int originalOrderNumber, int newOrderNumber, decimal refundAmount, string refundReason, Address useBillingAddress) { string transactionId = string.Empty, status = string.Empty; using (SqlConnection conn = DB.dbConn()) { conn.Open(); using (IDataReader rs = DB.GetRS(String.Format("SELECT AuthorizationPNREF, OrderTotal FROM Orders with (NOLOCK) where OrderNumber={0}", originalOrderNumber.ToString()), conn)) { if (rs.Read()) { transactionId = DB.RSField(rs, "AuthorizationPNREF"); if (refundAmount == 0M) { refundAmount = DB.RSFieldDecimal(rs, "OrderTotal"); } } } } AmazonFPS.Request request = new AmazonFPS.Request(); if (AppLogic.AppConfigBool("UseLiveTransactions")) { request.url = AppLogic.AppConfig("AMAZON.FPS_LiveServer"); } else { request.url = AppLogic.AppConfig("AMAZON.FPS_TestServer"); } request.type = AmazonFPS.Request.ActionType.Refund; request.accessKey = AppLogic.AppConfig("AMAZON.AccessKey"); request.secretKey = AppLogic.AppConfig("AMAZON.SecretKey"); request.timeStamp = string.Concat(DateTime.UtcNow.ToString("s", System.Globalization.CultureInfo.InvariantCulture), "Z"); request.ord = new Order(originalOrderNumber); request.description = refundReason; string response = CreateWebRequest(request); if (response.Contains("<Errors")) { status = GetErrorMessages(response); } else { AmazonFPS.ResponseDeserialization.RefundResponse deserializedResponse = (AmazonFPS.ResponseDeserialization.RefundResponse)DeserializeResponse(response, typeof(AmazonFPS.ResponseDeserialization.RefundResponse)); if (deserializedResponse.refund.tranStatus == AmazonFPS.ResponseDeserialization.TransactionStatus.Pending || deserializedResponse.refund.tranStatus == AmazonFPS.ResponseDeserialization.TransactionStatus.Success) { AmazonFPS.ResponseDeserialization.TransactionStatus tranStatus = deserializedResponse.refund.tranStatus; StringBuilder txResult = new StringBuilder(); txResult.AppendFormat("TransactionId={0}", deserializedResponse.refund.tranId); txResult.AppendFormat("&TransactionStatus={0}", deserializedResponse.refund.tranStatus); txResult.AppendFormat("&RequestId={0}", deserializedResponse.metadata.reqId); StringBuilder txCommand = new StringBuilder(); txCommand.AppendFormat("Action={0}", tranStatus.ToString()); txCommand.AppendFormat("&AWSAccessKeyId={0}", request.accessKey); txCommand.AppendFormat("&CallerDescription={0}", request.GetCallerDescription()); txCommand.AppendFormat("&CallerReference={0}", request.GetCallerReference()); txCommand.AppendFormat("&TransactionId={0}", request.ord.AuthorizationPNREF); txCommand.AppendFormat("&SignatureVersion={0}", request.signatureVersion); txCommand.AppendFormat("&TimeStamp={0}", request.timeStamp); txCommand.AppendFormat("&Version={0}", request.schemaVersion); DB.ExecuteSQL(String.Format("update orders set RefundTXCommand={0}, RefundTXResult={1} where OrderNumber={2}", DB.SQuote(txCommand.ToString()), DB.SQuote(txResult.ToString()), originalOrderNumber.ToString())); status = AppLogic.ro_OK; } } return(status); }
public static string VoidOrder(int orderNumber) { string transactionID = string.Empty, transactionState = string.Empty, status = string.Empty; using (SqlConnection conn = DB.dbConn()) { conn.Open(); using (IDataReader rs = DB.GetRS(String.Format("SELECT AuthorizationPNREF, TransactionState FROM Orders with (NOLOCK) where OrderNumber={0}", orderNumber.ToString()), conn)) { if (rs.Read()) { transactionState = DB.RSField(rs, "TransactionState"); transactionID = DB.RSField(rs, "AuthorizationPNREF"); } } } if (transactionState.Equals("CAPTURED", StringComparison.InvariantCultureIgnoreCase)) { return(AppLogic.GetString("AmazonSimplePay.VoidedCaptureError", Customer.Current.SkinID, Customer.Current.LocaleSetting)); } AmazonFPS.Request request = new AmazonFPS.Request(); if (AppLogic.AppConfigBool("UseLiveTransactions")) { request.url = AppLogic.AppConfig("AMAZON.FPS_LiveServer"); } else { request.url = AppLogic.AppConfig("AMAZON.FPS_TestServer"); } request.type = AmazonFPS.Request.ActionType.Cancel; request.accessKey = AppLogic.AppConfig("AMAZON.AccessKey"); request.secretKey = AppLogic.AppConfig("AMAZON.SecretKey"); request.timeStamp = string.Concat(DateTime.UtcNow.ToString("s", System.Globalization.CultureInfo.InvariantCulture), "Z"); request.ord = new Order(orderNumber); string response = CreateWebRequest(request); if (response.Contains("<Errors")) { status = GetErrorMessages(response); } else { AmazonFPS.ResponseDeserialization.CancelResponse deserializedResponse = (AmazonFPS.ResponseDeserialization.CancelResponse)DeserializeResponse(response, typeof(AmazonFPS.ResponseDeserialization.CancelResponse)); if (deserializedResponse.cancel.tranStatus == AmazonFPS.ResponseDeserialization.TransactionStatus.Pending || deserializedResponse.cancel.tranStatus == AmazonFPS.ResponseDeserialization.TransactionStatus.Cancelled) { AmazonFPS.ResponseDeserialization.TransactionStatus tranStatus = deserializedResponse.cancel.tranStatus; StringBuilder txResult = new StringBuilder(); txResult.AppendFormat("TransactionId={0}", deserializedResponse.cancel.tranId); txResult.AppendFormat("&TransactionStatus={0}", deserializedResponse.cancel.tranStatus); txResult.AppendFormat("&RequestId={0}", deserializedResponse.metadata.reqId); StringBuilder txCommand = new StringBuilder(); txCommand.AppendFormat("Action={0}", tranStatus.ToString()); txCommand.AppendFormat("&AWSAccessKeyId={0}", request.accessKey); txCommand.AppendFormat("&TransactionId={0}", request.ord.AuthorizationPNREF); txCommand.AppendFormat("&SignatureVersion={0}", request.signatureVersion); txCommand.AppendFormat("&TimeStamp={0}", request.timeStamp); txCommand.AppendFormat("&Version={0}", request.schemaVersion); DB.ExecuteSQL(String.Format("update orders set VoidTXCommand={0}, VoidTXResult={1} where OrderNumber={2}", DB.SQuote(txCommand.ToString()), DB.SQuote(txResult.ToString()), orderNumber)); status = AppLogic.ro_OK; } } return(status); }