// 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); }
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); }
static string GetItemLink(OutputItem item) { if (string.IsNullOrEmpty(item.ISBN)) { return(item.Link); } return(AmazonHelper.GetAmazonLink(item.ISBN)); }
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); }
//[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); }
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); }
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); }
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 })); } }
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"); } }
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(); }
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); }
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()); }
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); }
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(); }
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(); }