예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }