Exemplo n.º 1
0
        // GET: /TinySells/452
        public ActionResult Index(int?code, int?formcode)
        {
            // NOTE: this allows the code to come from the route or the form
            if (formcode != null)
            {
                code = formcode;
            }

            var link = db.TinyLinks.SingleOrDefault(l => l.Code == code && l.IsActive && !(l.Link == null && l.ISBN == null));

            if (link == null)
            {
                if (code != null)
                {
                    ModelState.AddModelError("formcode", string.Format("The code '{0}' is unknown.", code));
                }
                return(View("Index", new MasterViewModel(db)));
            }

            string url = link.Link;

            if (string.IsNullOrEmpty(url))
            {
                url = AmazonHelper.GetAmazonLink(link.ISBN);
            }

            Response.Redirect(url, true);
            return(null);
        }
Exemplo n.º 2
0
        public CanonicalRequestResponse agnosticSimplePayReq(CanonicalRequestResponse req)
        {
            CanonicalRequestResponse resp = new CanonicalRequestResponse();

            var bets = betDb.Bets;

            foreach (var b in bets)
            {
                betDb.Bets.Remove(b);
            }

            Bet bet = new Bet();

            bet.guess  = req.flip;
            bet.amount = req.price;
            betDb.Bets.Add(bet);
            betDb.SaveChanges();

            //protocol agnostic code
            GamblingSite.AccountID      = "*****@*****.**";
            GamblingSite.bets[0].guess  = req.flip;
            GamblingSite.bets[0].amount = req.price;

            resp.id    = 0;
            resp.price = req.price;
            resp.payee = "*****@*****.**";


            //Contract.Assert(GamblingSite.bets[0].amount == resp.price);

            //1. redirect to simplepay
            RemotePost post = new RemotePost();

            post.FormName = "SimplePay";
            post.Url      = "https://authorize.payments-sandbox.amazon.com/pba/paypipeline";
            post.Method   = "POST";

            post.Add("immediateReturn", "1");
            post.Add("signatureVersion", "2");
            post.Add("signatureMethod", "HmacSHA256");
            post.Add("accessKey", "AKIAJB4XJRGX6XRRVIDA");
            post.Add("amount", String.Format(CultureInfo.InvariantCulture, "USD {0:0.00}", req.price));
            post.Add("description", req.flip);
            post.Add("amazonPaymentsAccountId", "IGFCUTPWGXVM311K1E6QTXIQ1RPEIUG5PTIMUZ");
            post.Add("returnUrl", site_root + "/Home/SimplePayResp?path_digest=A[[HASH1()]]");
            post.Add("processImmediate", "1");
            post.Add("referenceId", Convert.ToString(bet.ID));
            //the entire msg is signed using the pre-decided simplepay secret key
            post.Add("signature", AmazonHelper.SignParameters(post.Params,
                                                              "WfZ3JnrY8mpJ8DZ7VlL07+RYtWznX3PWHNV8Zj5M", //simplePay secret key
                                                              post.Method,
                                                              "authorize.payments-sandbox.amazon.com",
                                                              "/pba/paypipeline"));
            post.Post();



            return(resp);
        }
Exemplo n.º 3
0
 static string GetItemLink(OutputItem item)
 {
     if (string.IsNullOrEmpty(item.ISBN))
     {
         return(item.Link);
     }
     return(AmazonHelper.GetAmazonLink(item.ISBN));
 }
Exemplo n.º 4
0
        public AmazonPictureTaskGuide(string storePath)
        {
            this.storePath   = storePath;
            this.helper      = new AmazonHelper();
            helper.StorePath = storePath;
//			helper.ConnectionString = connectionString;
            helper.LoadTypes();
//			helper.InitTable();
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (NopContext.Current.User == null)
            {
                string loginURL = SEOHelper.GetLoginPageUrl(true);
                Response.Redirect(loginURL);
            }

            CommonHelper.SetResponseNoCache(Response);

            if (!Page.IsPostBack)
            {
                if (!AmazonHelper.ValidateRequest(Request.QueryString, String.Format("{0}AmazonSimplePayReturn.aspx", CommonHelper.GetStoreLocation()), "GET"))
                {
                    Response.Redirect(CommonHelper.GetStoreLocation());
                }

                //load order
                int   orderId = Convert.ToInt32(CommonHelper.QueryStringInt("referenceId"));
                Order order   = this.OrderService.GetOrderById(orderId);
                if (order == null)
                {
                    Response.Redirect(CommonHelper.GetStoreLocation());
                }
                //validate order
                if (NopContext.Current.User.CustomerId != order.CustomerId)
                {
                    Response.Redirect(CommonHelper.GetStoreLocation());
                }

                //note
                string        recipientEmail = CommonHelper.QueryString("recipientEmail");
                StringBuilder sb             = new StringBuilder();
                sb.AppendLine("Amazon Simple Pay return page:");
                sb.AppendLine("recipientEmail: " + recipientEmail);
                this.OrderService.InsertOrderNote(order.OrderId, recipientEmail, false, DateTime.UtcNow);

                //paymnent
                if (SimplePaySettings.SettleImmediately)
                {
                    if (this.OrderService.CanMarkOrderAsPaid(order))
                    {
                        this.OrderService.MarkOrderAsPaid(order.OrderId);
                    }
                }
                else
                {
                    if (this.OrderService.CanMarkOrderAsAuthorized(order))
                    {
                        this.OrderService.MarkAsAuthorized(order.OrderId);
                    }
                }

                Response.Redirect("~/checkoutcompleted.aspx");
            }
        }
        /// <summary>
        /// Amazonから検索する。
        /// </summary>
        private void execAmazonSearch()
        {
            AmazonHelper amazonHelper = new AmazonHelper();

            amazonItemInfoList = amazonHelper.execItemSearch("Large", textSearch.Text);

            albumView.AutoGenerateColumns = false;

            albumView.DataSource = amazonItemInfoList;
        }
        public IList <ICatalogueExtendedInfo> SearchAmazon(string searchTerms)
        {
            var searchArray = searchTerms.Split(',');
            IDictionary <string, string>   searchParams = AmazonHelper.GetBaseSearchParams(SearchType.ArtistSearch);
            IList <ICatalogueExtendedInfo> returnArray  = new List <ICatalogueExtendedInfo>();

            foreach (var searchItem in searchArray)
            {
                SignedRequestHelper urlHelper = new SignedRequestHelper(this._accessID, this._secretKey, this._requestEndpoint, this._associateTag);
                searchParams["Artist"] = searchItem.Trim();
                var restUrl = urlHelper.Sign(searchParams);

                XmlDocument xmlDoc = new XmlDocument();

                try
                {
                    xmlDoc.Load(restUrl);
                }
                catch (WebException ex)
                {
                    //Log here
                    throw;
                }

                var items = xmlDoc["ItemSearchResponse"]["Items"];

                foreach (XmlNode item in items)
                {
                    if (item.Name == "Item")
                    {
                        var newItem = AmazonHelper.GetNewCatalogueObjectFromXmlNode(item);

                        if (newItem.Artist.ToLower() == searchItem.Trim())
                        {
                            returnArray.Add(newItem);
                        }
                    }
                }

                if (returnArray.Count == 0)
                {
                    ICatalogueExtendedInfo newItem = new CatalogueExtendedInfo
                    {
                        Artist      = "None",
                        Title       = "None",
                        PicUrl      = "None available",
                        ASIN        = "",
                        ReleaseDate = "",
                        Price       = 0,
                        Url         = "http://my-cue.co.uk"
                    };
                }
            }
            return(returnArray);
        }
Exemplo n.º 8
0
        //[TestMethod]
        public void AmazonHelper_GetAmazonS3Object_IntegrationTest_ArthurClive()
        {
            //Arrange
            var bucketName = "arthurclive-products";
            var objectName = "All-Art-Bangalore-Black-.jpg";

            //Act
            var result = AmazonHelper.GetAmazonS3Object(bucketName, objectName) as string;

            //Assert
            Assert.IsNotNull(result);
        }
Exemplo n.º 9
0
        public ICatalogueExtendedInfo LookupSearchString(string searchString, SearchIndex searchIndex)
        {
            string searchIndexString;
            var    searchStringEncoded = HttpUtility.UrlEncode(searchString);
            IDictionary <string, string> searchParams = AmazonHelper.GetBaseSearchParams(SearchType.SearchTerm);
            ICatalogueExtendedInfo       returnItem   = new CatalogueExtendedInfo();

            switch (searchIndex)
            {
            case SearchIndex.MP3:
                searchIndexString = "MP3Downloads";
                break;

            case SearchIndex.CD:
                searchIndexString = "Music";
                break;

            default:
                searchIndexString = "All";
                break;
            }

            SignedRequestHelper urlHelper = new SignedRequestHelper(this._accessID, this._secretKey, this._requestEndpoint, this._associateTag);

            searchParams["Keywords"]    = searchStringEncoded;
            searchParams["SearchIndex"] = searchIndexString;

            var restUrl = urlHelper.Sign(searchParams);

            XmlDocument xmlDoc = new XmlDocument();

            try
            {
                xmlDoc.Load(restUrl);
            }
            catch (WebException ex)
            {
                //Log here
                throw;
            }

            var items = xmlDoc["ItemSearchResponse"]["Items"];

            foreach (XmlNode item in items)
            {
                if (item.Name == "Item")
                {
                    returnItem = AmazonHelper.GetNewCatalogueObjectFromXmlNode(item);
                    break;
                }
            }
            return(returnItem);
        }
Exemplo n.º 10
0
        public void AmazonHelper_GetS3Object_IntegrationTest_ArthurClive()
        {
            //Arrange
            var bucketName     = "arthurclive-products";
            var objectName     = "All-Art-Bangalore-Black-.jpg";
            var expectedResult = "https://s3.ap-south-1.amazonaws.com/" + bucketName + "/" + objectName;

            //Act
            var result = AmazonHelper.GetS3Object(bucketName, objectName) as string;

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(expectedResult, result);
        }
Exemplo n.º 11
0
 public ActionResult UploadImageToS3([FromForm] ImageData data)
 {
     try
     {
         if (data != null)
         {
             var objectName = data.ObjectName + ".jpg";
             var result     = AmazonHelper.UploadImageToS3(data.Image, data.BucketName, objectName);
             var Image_Url  = AmazonHelper.GetS3Object(data.BucketName, objectName);
             if (result.Result == true)
             {
                 return(Ok(new ResponseData
                 {
                     Code = "200",
                     Message = "Image uploaded",
                     Data = Image_Url
                 }));
             }
             else
             {
                 return(BadRequest(new ResponseData
                 {
                     Code = "401",
                     Message = "Image upload failed",
                     Data = null
                 }));
             }
         }
         else
         {
             return(BadRequest(new ResponseData
             {
                 Code = "404",
                 Message = "Image upload data not found",
                 Data = null
             }));
         }
     }
     catch (Exception ex)
     {
         SL.CreateLog("AdminContoller", "UploadImageToS3", ex.Message);
         return(BadRequest(new ResponseData
         {
             Code = "400",
             Message = "Failed",
             Data = ex.Message
         }));
     }
 }
Exemplo n.º 12
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (NopContext.Current.User == null)
            {
                string loginURL = SEOHelper.GetLoginPageUrl(true);
                Response.Redirect(loginURL);
            }

            CommonHelper.SetResponseNoCache(Response);

            if (!Page.IsPostBack)
            {
                if (!AmazonHelper.ValidateRequest(Request.QueryString, String.Format("{0}AmazonSimplePayReturn.aspx", CommonHelper.GetStoreLocation()), "GET"))
                {
                    Response.Redirect(CommonHelper.GetStoreLocation());
                }

                int   orderId = Convert.ToInt32(CommonHelper.QueryStringInt("referenceId"));
                Order order   = OrderManager.GetOrderById(orderId);
                if (order == null)
                {
                    Response.Redirect(CommonHelper.GetStoreLocation());
                }
                if (NopContext.Current.User.CustomerId != order.CustomerId)
                {
                    Response.Redirect(CommonHelper.GetStoreLocation());
                }

                if (SimplePaySettings.SettleImmediately)
                {
                    if (OrderManager.CanMarkOrderAsPaid(order))
                    {
                        OrderManager.MarkOrderAsPaid(order.OrderId);
                    }
                }
                else
                {
                    if (OrderManager.CanMarkOrderAsAuthorized(order))
                    {
                        OrderManager.MarkAsAuthorized(order.OrderId);
                    }
                }

                Response.Redirect("~/checkoutcompleted.aspx");
            }
        }
Exemplo n.º 13
0
        public void SimplePayReq(int amount, string flip)
        {
            var bets = betDb.Bets;

            foreach (var b in bets)
            {
                betDb.Bets.Remove(b);
            }

            betDb.SaveChanges();

            Bet bet = new Bet();

            bet.guess  = flip;
            bet.amount = amount;
            betDb.Bets.Add(bet);
            betDb.SaveChanges();

            string codeHash = CCPHelper.code_to_hash(CCPHelper.SimplePayReq_code);

            //1. redirect to simplepay
            RemotePost post = new RemotePost();

            post.FormName = "SimplePay";
            post.Url      = "https://authorize.payments-sandbox.amazon.com/pba/paypipeline";
            post.Method   = "POST";

            post.Add("immediateReturn", "1");
            post.Add("signatureVersion", "2");
            post.Add("signatureMethod", "HmacSHA256");
            post.Add("accessKey", "AKIAJB4XJRGX6XRRVIDA");
            post.Add("amount", String.Format(CultureInfo.InvariantCulture, "USD {0:0.00}", amount));
            post.Add("description", flip);
            post.Add("amazonPaymentsAccountId", "IGFCUTPWGXVM311K1E6QTXIQ1RPEIUG5PTIMUZ");
            post.Add("returnUrl", site_root + "/Home/SimplePayResp?path_digest=GamblingSite[[" + codeHash + "()]]");
            post.Add("processImmediate", "1");
            post.Add("referenceId", Convert.ToString(bet.ID));
            //the entire msg is signed using the pre-decided simplepay secret key
            post.Add("signature", AmazonHelper.SignParameters(post.Params,
                                                              "WfZ3JnrY8mpJ8DZ7VlL07+RYtWznX3PWHNV8Zj5M", //simplePay secret key
                                                              post.Method,
                                                              "authorize.payments-sandbox.amazon.com",
                                                              "/pba/paypipeline"));
            post.Post();
        }
Exemplo n.º 14
0
        public void AmazonHelper_GetAmazonS3Client_IntegrationTest_ArthurClive()
        {
            //Arrange
            var accessKeyFromXML  = GlobalHelper.ReadXML().Elements("amasons3").Where(x => x.Element("current").Value.Equals("Yes")).Descendants("accesskey").FirstOrDefault().Value;
            var secretKeyFromXML  = GlobalHelper.ReadXML().Elements("amasons3").Where(x => x.Element("current").Value.Equals("Yes")).Descendants("secretkey").FirstOrDefault().Value;
            var expectedAccessKey = "AKIAIUAYVIL7A7I6XECA";
            var expectedSecretKey = "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";

            //Act
            var result = AmazonHelper.GetAmazonS3Client() as IAmazonS3;

            //Assert
            Assert.IsNotNull(result);
            Assert.IsNotNull(accessKeyFromXML);
            Assert.IsNotNull(secretKeyFromXML);
            Assert.AreEqual(expectedAccessKey, accessKeyFromXML);
            Assert.AreEqual(expectedSecretKey, secretKeyFromXML);
        }
Exemplo n.º 15
0
    public canonicalRequestResponse PostProcessPayment(Order order)
    {
        Uri gatewayUrl = new Uri(SimplePaySettings.GatewayUrl);

        RemotePostProxy post = new RemotePostProxy();

        post.FormName = "SimplePay";
        //ERIC'S CODE
        //post.Url = gatewayUrl.ToString();
        post.Url    = "http://localhost:38623/Default.aspx";
        post.Method = "POST";

        post.Add("immediateReturn", "1");
        post.Add(AmazonHelper.SIGNATURE_VERSION_KEYNAME, AmazonHelper.SIGNATURE_VERSION_2);
        post.Add(AmazonHelper.SIGNATURE_METHOD_KEYNAME, AmazonHelper.HMAC_SHA256_ALGORITHM);
        post.Add("accessKey", SimplePaySettings.AccessKey);
        post.Add("amount", String.Format(CultureInfo.InvariantCulture, "USD {0:0.00}", order.OrderTotal));
        post.Add("description", string.Format("{0}, {1}", SettingManager.StoreName, order.OrderId));
        post.Add("amazonPaymentsAccountId", SimplePaySettings.AccountId);
        post.Add("returnUrl", String.Format("{0}AmazonSimplePayReturn.aspx", CommonHelper.GetStoreLocation(false)));
        post.Add("processImmediate", (SimplePaySettings.SettleImmediately ? "1" : "0"));
        post.Add("referenceId", order.OrderId.ToString());
        post.Add(AmazonHelper.SIGNATURE_KEYNAME, AmazonHelper.SignParameters(post.Params, SimplePaySettings.SecretKey, post.Method, gatewayUrl.Host, gatewayUrl.AbsolutePath));

        string tmp = String.Format("{0}AmazonSimplePayReturn.aspx", CommonHelper.GetStoreLocation(false));

        //Protocol independant code
        GlobalState.order.gross  = order.OrderTotal;
        post.req.gross           = order.OrderTotal;
        GlobalState.order.id     = order.OrderId;
        post.req.orderID         = order.OrderId;
        GlobalState.order.status = Global.OrderStatusEnum.Pending;

        //Contract.Assert(order.OrderTotal == order.OrderTotal);


        return(post.Post());
    }
Exemplo n.º 16
0
        public ICatalogueExtendedInfo LookupASIN(string ASINNumber)
        {
            var itemNumber = HttpUtility.UrlEncode(ASINNumber);
            IDictionary <string, string> searchParams = AmazonHelper.GetBaseSearchParams(SearchType.ASIN);
            ICatalogueExtendedInfo       returnItem   = new CatalogueExtendedInfo();

            SignedRequestHelper urlHelper = new SignedRequestHelper(this._accessID, this._secretKey, this._requestEndpoint, this._associateTag);

            searchParams["ItemId"] = ASINNumber;

            var restUrl = urlHelper.Sign(searchParams);

            XmlDocument xmlDoc = new XmlDocument();

            try
            {
                xmlDoc.Load(restUrl);
            }
            catch (WebException ex)
            {
                //Log here
                throw;
            }

            var items = xmlDoc["ItemLookupResponse"]["Items"];

            foreach (XmlNode item in items)
            {
                if (item.Name == "Item")
                {
                    returnItem = AmazonHelper.GetNewCatalogueObjectFromXmlNode(item);
                    break;
                }
            }

            return(returnItem);
        }
Exemplo n.º 17
0
        protected void Page_Load(object sender, EventArgs e)
        {
            String stringToSign = "";

            Page.EnableViewState = false;
            UrlLabel.Text        = Server.UrlDecode(Request.Path + "?" + Request.QueryString);

            // Code that runs when a new session is started
            string returnUrl = "http://localhost:8242/AmazonSimplePayReturn.aspx";

            NameValueCollection parameters = new NameValueCollection(Request.QueryString);

            string old_hash    = parameters["path_digest"];
            string new_hash    = code_to_hash(SourceCode_Pay);
            string path_digest = "CaaS[[" + new_hash + "(" + old_hash + ")]]";

            parameters["path_digest"] = path_digest;

            //prepare the sig
            CspParameters            cspParams      = null;
            RSACryptoServiceProvider rsaProvider    = null;
            StreamReader             privateKeyFile = null;
            string privateKeyText = "";

            byte[] signatureBytes = null;
            byte[] plainBytes     = null;
            string sig            = "";


            cspParams = new CspParameters();
            cspParams.ProviderType = 1;// PROV_RSA_FULL;
            rsaProvider            = new RSACryptoServiceProvider(384, cspParams);

            // Read public key from file
            privateKeyFile = File.OpenText(key_root + "\\RSAKeys\\prikey_CaaS.xml");
            privateKeyText = privateKeyFile.ReadToEnd();

            // Import public key
            rsaProvider.FromXmlString(privateKeyText);
            parameters.Remove("signature");
            //parameters["status"] = "PF";
            stringToSign = AmazonHelper.CalculateSignV2(parameters, "GET", "localhost:8242", "/AmazonSimplePayReturn.aspx");

            try
            {
                // Encrypt plain text
                plainBytes     = Encoding.Unicode.GetBytes(stringToSign);
                signatureBytes = rsaProvider.SignData(plainBytes, new SHA1CryptoServiceProvider());

                sig = Convert.ToBase64String(signatureBytes, 0, signatureBytes.Length);
            }
            catch (Exception ex)
            {
                Response.Write("Fail to sign.");
            }

            //Note that localhost:8243 and AmazonSimplePayReturn.aspx are hardcoded right now, idealy we want them to be dynamically inserted
            Response.StatusCode       = 302;
            Response.Status           = "302 Moved Temporarily";
            Response.RedirectLocation = returnUrl + "?";// +stringToSign + "&signature=" + parameters["signature"];

            var items = parameters.AllKeys.SelectMany(parameters.GetValues, (k, v) => new { key = k, value = v });

            foreach (var item in items)
            {
                Response.RedirectLocation += HttpUtility.UrlEncode(item.key) + "=" + HttpUtility.UrlEncode(item.value) + "&";
            }
            Response.RedirectLocation += "signature=" + HttpUtility.UrlEncode(sig);

            Response.End();
        }
Exemplo n.º 18
0
        protected void Page_Load(object sender, EventArgs e)
        {
            // Code that runs when a new session is started

            //get the incoming request
            var         context = HttpContext.Current;
            HttpRequest req     = context.Request;

            RemotePost post = new RemotePost();

            post.FormName = "SimplePay";
            post.Url      = "https://authorize.payments-sandbox.amazon.com/pba/paypipeline";
            post.Method   = "POST";

            //get info from nopcommerce submission form
            NameValueCollection form = Request.Form;
            var items = form.AllKeys.SelectMany(form.GetValues, (k, v) => new { key = k, value = v });

            foreach (var item in items)
            {
                if (item.key == "returnUrl" && form["path_digest"] == null)
                {
                    post.Add(item.key, "http://localhost:38623/pay.aspx");
                }
                else if (item.key == "returnUrl" && form["path_digest"] != null)
                {
                    post.Add(item.key, "http://localhost:38623/pay.aspx?path_digest=" + form["path_digest"]);
                }
                else if (item.key == "signature")
                {
                    post.Add(item.key, AmazonHelper.SignParameters(post.Params,
                                                                   "[secret key]", //simplePay secret key
                                                                   post.Method,
                                                                   "authorize.payments-sandbox.amazon.com",
                                                                   "/pba/paypipeline"));
                }
                else if (item.key == "path_digest")
                {
                    continue;
                }
                else
                {
                    post.Add(item.key, item.value);
                }
            }

            /*
             * post.Add("immediateReturn", "1");
             * post.Add("signatureVersion", "2");
             * post.Add("signatureMethod", "HmacSHA256");
             * post.Add("accessKey", "[AWS access key]");
             * post.Add("amount", "USD 35.12");
             * post.Add("description", "Your store name, 9");
             * post.Add("amazonPaymentsAccountId", "IGFCUTPWGXVM311K1E6QTXIQ1RPEIUG5PTIMUZ");
             * post.Add("returnUrl", "http://localhost:8242/AmazonSimplePayReturn.aspx");
             * post.Add("processImmediate", "0");
             * post.Add("referenceId", "9");
             * post.Add("signature", "e6nHOQqZCC3BMXZ1veEVIzWfu5SQxUIJ7O6v2wjdpQw=");
             */

            post.Post();
        }