示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
                }
            }
        }
示例#4
0
        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)));
        }