public ServiceTokenModel GetToken() { ServiceTokenModel serviceToken = new ServiceTokenModel(); string linkGetToken = "https://api-m.sandbox.paypal.com/v1/oauth2/token"; string clientID = "AYwqcEZUQTD1V7zcqg3wr57TOhADFqeReR-l-Ax3UTZA2j3fNCLprhyjP14XiLVimaZtGx5oDaZrhvbP"; string secret = "ECXBAPj_hKreSGLKIk6BFEhZKzWY3P5ZHjbdS33dwNllHDlfCr7Qot0CFlk2W5vLRWWror1Y6-R7DqCi"; var client = new RestClient(linkGetToken); client.Authenticator = new HttpBasicAuthenticator(clientID, secret); var request = new RestRequest(); request.AddHeader("content-type", "application/x-www-form-urlencoded"); request.AddParameter("grant_type", "client_credentials"); IRestResponse response = client.Post(request); var jObject = JObject.Parse(response.Content); if (jObject.ContainsKey("access_token")) { serviceToken.access_token = jObject.GetValue("access_token").ToString(); } if (string.IsNullOrEmpty(serviceToken.access_token)) { throw new Exception("Could not perform authentication. Try again."); } return(serviceToken); }
public ServiceTokenModel GetAccessTokenByCode(string code) { var result = new ServiceTokenModel(); var conn = MxAppHost.Instance.Container.Resolve <IServiceConnection>(); using (var client = new HttpClient()) { var values = new Dictionary <string, string> { { "grant_type", "authorization_code" }, { "code", code }, { "redirect_uri", conn.RedirectUrl }, { "client_id", conn.ClientId }, { "client_secret", conn.SecretKey } /*{"redirect_uri","https://iafc.matrixdev.net/" }, * {"client_id", "29192542"}, * {"client_secret", "Bi4IB9Yhh5PrOa3y7PykntuQKg90ZNDiNes7tDNfwwKDgYIz4v"}*/ }; var content = new FormUrlEncodedContent(values); var response = client.PostAsync("{0}/Token".Fmt(conn.EndpointUrl), content).Result; // where accessToken create from successfully ask Helix exchange infor from ServiceTokenModel above. var respToken = new SiteAccessTokenModel(); var responseString = response.Content.ReadAsStringAsync().Result; log.Info("resp:{0}".Fmt((new { helix = responseString, red = conn.RedirectUrl, client = conn.ClientId, sec = conn.SecretKey }))); respToken = responseString.FromJson <SiteAccessTokenModel>(); if (respToken != null) { result.Refresh_token = respToken.Refresh_token; result.Token = respToken.Access_token; result.IssueTime = respToken.Issued; result.ExpireTime = respToken.Expires; result.ClientId = respToken.ContactId.ToString(); } /*_log.Debug($"from Helix service client secon-token:{responseString.SerializeToString()}," + * $" objReso:{respToken.SerializeToString()}, Token:{respToken.Access_token}");*/ } return(result); }
public void SendPay(double valAmount) { string messageError = string.Empty; string nameError = string.Empty; RequestPayModel requestPay = null; string linkPay = "https://api-m.sandbox.paypal.com/v1/payments/payouts"; ServiceTokenModel serviceToken = GetToken(); List <ItemsModel> listItems = new List <ItemsModel>(); listItems.Add(new ItemsModel() { amount = new AmountModel() { currency = "BRL", value = valAmount.ToString() }, note = "Payouts sample transaction", receiver = "*****@*****.**", recipient_type = "EMAIL", sender_item_id = "item-2-1619353250049" }); requestPay = new RequestPayModel() { sender_batch_header = new BatchHeaderModel() { email_subject = "You have a payment", sender_batch_id = Guid.NewGuid().ToString() }, items = listItems }; var client = new RestClient(linkPay); client.AddDefaultHeader("Authorization", string.Format("Bearer {0}", serviceToken.access_token)); var request = new RestRequest(); request.AddJsonBody(requestPay); IRestResponse response = client.Post(request); var jObject = JObject.Parse(response.Content); if (jObject.ContainsKey("message")) { messageError = jObject.GetValue("message").ToString(); nameError = jObject.GetValue("name").ToString(); if (nameError.Contains("USER_BUSINESS_ERROR")) { throw new Exception("Something did not go very well. Try again later"); } else { throw new Exception(messageError); } } }
public ActionResult Index_(string code = "") { if (String.IsNullOrEmpty(code)) { return(Redirect("~/?code=null")); } // have code & not login then do activate code if ((this.MyId().IsNullOrEmptyGuid() || this.MyId().IsOneGuid()) && !String.IsNullOrEmpty(code)) { log.Info("what myid: {0}, by code:{1}".Fmt(this.MyId(), code)); /*var m = HelixServiceClient.Init(ServiceConn) * .GetAccessTokenByCode(code);*/ var conn = MxAppHost.Instance.Container.Resolve <IServiceConnection>(); var result = new ServiceTokenModel(); using (var client = new HttpClient()) { var values = new Dictionary <string, string> { { "grant_type", "authorization_code" }, { "code", code }, { "redirect_uri", conn.RedirectUrl }, { "client_id", conn.ClientId }, { "client_secret", conn.SecretKey } /*{"redirect_uri","https://iafc.matrixdev.net/" }, * {"client_id", "29192542"}, * {"client_secret", "Bi4IB9Yhh5PrOa3y7PykntuQKg90ZNDiNes7tDNfwwKDgYIz4v"}*/ }; var content = new FormUrlEncodedContent(values); var response = client.PostAsync("{0}/Token".Fmt(conn.EndpointUrl), content).Result; // where accessToken create from successfully ask Helix exchange infor from ServiceTokenModel above. var respToken = new SiteAccessTokenModel(); var responseString = response.Content.ReadAsStringAsync().Result; log.Info("resp:{0}".Fmt((new { helix = responseString, red = conn.RedirectUrl, client = conn.ClientId, sec = conn.SecretKey }))); respToken = responseString.FromJson <SiteAccessTokenModel>(); if (respToken != null) { result.Refresh_token = respToken.Refresh_token; result.Token = respToken.Access_token; result.IssueTime = respToken.Issued; result.ExpireTime = respToken.Expires; result.ClientId = respToken.ContactId.ToString(); } /*_log.Debug($"from Helix service client secon-token:{responseString.SerializeToString()}," + * $" objReso:{respToken.SerializeToString()}, Token:{respToken.Access_token}");*/ } /*HelixClient response = HelixServiceClient.Init(ServiceConn) * .GetAccessTokenByCode(code).Instance(); * if (response.HelixDataResponse.ResponseStatus.Is(MatrixGroup.Data.ResponseStatus.Warning)) * { * ViewData["warning"] = response.HelixDataResponse.Message; * return Redirect("~/NotifyInfo/WarningInfo"); * }*/ } return(Redirect("~/?code={0}".Fmt(code))); }