Esempio n. 1
0
        public HttpResponseMessage OnAuthorization()
        {
            AmexAuthRequest  request  = ParseRequest();
            AmexAuthResponse response = new AmexAuthResponse();
            CommerceContext  context  = CommerceContext.BuildSynchronousContext("Amex payment authorization request", request, response);

            context.Log.Verbose("Amex payment authorization payload : \r\n\"{0}\".", Request.Content.ReadAsStringAsync().Result);

            if (IsAuthorized(context))
            {
                Stopwatch      callTimer      = Stopwatch.StartNew();
                HttpStatusCode httpStatusCode = ProcessAmexAuthCall(context, callTimer, () =>
                {
                    AmexAuthorizationExecutor amexAuthorizationExecutor = new AmexAuthorizationExecutor(context);
                    return(amexAuthorizationExecutor.Execute());
                });

                if (httpStatusCode != HttpStatusCode.OK)
                {
                    response.ResponseCode = AmexAuthResponseCode.AmexAuthInternalError;
                    context.Log.Warning("Amex payment authorization processing error. Request : {0} ", request.ToString());
                }

                HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new ObjectContent <AmexAuthResponse>(response, new XmlMediaTypeFormatter())
                };

                return(message);
            }

            return(new HttpResponseMessage(HttpStatusCode.Unauthorized));
        }
Esempio n. 2
0
        /// <summary>
        /// Helper Method to parse incoming payload from AMEX.
        /// </summary>
        /// <returns>
        /// Auth representation
        /// </returns>
        private AmexAuthRequest ParseRequest()
        {
            string          payLoad          = Request.Content.ReadAsStringAsync().Result;
            AmexAuthRequest resultingMessage = null;
            XmlSerializer   serializer       = new XmlSerializer(typeof(AmexAuthRequest));

            using (StringReader rdr = new StringReader(payLoad))
            {
                resultingMessage = (AmexAuthRequest)serializer.Deserialize(rdr);
            }

            return(resultingMessage);
        }
Esempio n. 3
0
        /// <summary>
        /// Marshals information from the Amex Auth request into the Authorization object in the context.
        /// </summary>
        public void MarshalAuthorization()
        {
            AmexAuthRequest request = (AmexAuthRequest)Context[Key.Request];

            // Populate the Authorization.
            DataModels.Authorization authorization = (DataModels.Authorization)Context[Key.Authorization];
            authorization.AuthorizationAmount = AmexUtilities.ParseAuthAmount(request.TransactionAmount);
            authorization.Currency            = "USD";
            authorization.TransactionId       = request.TransactionId;
            authorization.PurchaseDateTime    = AmexUtilities.ParseAuthDateTime(request.TransactionTime);

            // Populate the Amex Auth Info.
            Context[Key.PartnerDealId]     = request.OfferId;
            Context[Key.PartnerCardId]     = request.CardToken;
            Context[Key.PartnerMerchantId] = request.MerchantNumber;
        }