예제 #1
0
        // Http Request to Momo Server
        public void sendPaymentRequest()
        {
            var reqtime   = Utils.GetTimeStamp().ToString();
            var transid   = Guid.NewGuid().ToString();
            var embeddata = new {};
            var order     = new Dictionary <string, string>();

            order.Add("appid", appid);
            order.Add("appuser", "demo");
            order.Add("apptime", Utils.GetTimeStamp().ToString());
            order.Add("amount", totalCost.ToString());
            order.Add("apptransid", DateTime.Now.ToString("yyMMdd") + "_" + transid);
            order.Add("embeddata", JsonConvert.SerializeObject(embeddata));
            order.Add("item", orderInfo);
            order.Add("description", "Smart Food Court ZaloPay demo");
            order.Add("bankcode", "zalopayapp");

            var data = appid + "|" + order["apptransid"] + "|" + order["appuser"] + "|" + order["amount"] + "|"
                       + order["apptime"] + "|" + order["embeddata"] + "|" + order["item"];

            order.Add("mac", HmacHelper.Compute(ZaloPayHMAC.HMACSHA256, key1, data));

            var orderJSON = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(order));

            Dictionary <string, string> param = new Dictionary <string, string>();

            param.Add("appid", appid);
            param.Add("reqtime", reqtime);
            param.Add("mac", HmacHelper.Compute(ZaloPayHMAC.HMACSHA256, key1, appid + "|" + reqtime));

            payUrl = qrUrl = "https://sbgateway.zalopay.vn/openinapp?order=" + Convert.ToBase64String(orderJSON);
        }
예제 #2
0
        public async Task <string> CreateOrderAsync(Booking booking, long amount, string description)
        {
            var transid   = Guid.NewGuid().ToString();
            var embeddata = new {};
            var items     = new object[] {};
            var param     = new Dictionary <string, string>();

            param.Add("appid", _appid);
            param.Add("appuser", booking.Owner.Name);
            param.Add("apptime", Utils.GetTimeStamp().ToString());
            // Quick hack to convert to VND :))
            param.Add("amount", Math.Ceiling(amount * 23193d).ToString());
            param.Add("apptransid", DateTime.Now.ToString("yyMMdd") + "_" + transid);
            param.Add("embeddata", JsonConvert.SerializeObject(embeddata));
            param.Add("item", JsonConvert.SerializeObject(items));
            param.Add("description", description);
            param.Add("bankcode", "zalopayapp");

            var data = _appid + "|" + param["apptransid"] + "|" + param["appuser"] + "|" + param["amount"] + "|"
                       + param["apptime"] + "|" + param["embeddata"] + "|" + param["item"];

            param.Add("mac", HmacHelper.Compute(ZaloPayHMAC.HMACSHA256, _key1, data));

            var result = await HttpHelper.PostFormAsync(_createOrderUrl, param);

            foreach (var entry in result)
            {
                Console.WriteLine("{0} = {1}", entry.Key, entry.Value);
            }
            return(result["orderurl"] as string);
        }
예제 #3
0
        public static string Compute(string data, string key = "")
        {
            if (string.IsNullOrEmpty(key))
            {
                key = Constants.KEY1;
            }

            return(HmacHelper.Compute(ZaloPayHMAC.HMACSHA256, key, data));
        }
예제 #4
0
        public static string Compute(string data, string key = "")
        {
            if (string.IsNullOrEmpty(key))
            {
                key = ConfigurationManager.AppSettings["Key1"];
            }

            return(HmacHelper.Compute(ZaloPayHMAC.HMACSHA256, key, data));
        }
예제 #5
0
        public static bool VerifyCallback(string data, string requestMac)
        {
            try
            {
                string mac = HmacHelper.Compute(ZaloPayHMAC.HMACSHA256, ConfigurationManager.AppSettings["Key2"], data);

                return(requestMac.Equals(mac));
            } catch
            {
                return(false);
            }
        }
예제 #6
0
        public static bool VerifyCallback(string data, string requestMac)
        {
            try
            {
                string mac = HmacHelper.Compute(ZaloPayHMAC.HMACSHA256, Constants.KEY1, data);

                return(requestMac.Equals(mac));
            } catch
            {
                return(false);
            }
        }
        public Task <string> CreateOrderAsync(Booking booking, long amount, string description)
        {
            string secret    = "MbRYDmFmFTVl11Dp8KqUYmeSPpUnEYnr";
            long   amountVnd = amount * 21000;

            string partnerCode = "MOMOLEEQ20210615";
            string accessKey   = "XGqCNhlAZAtL0lGD";
            string requestId   = Utils.GetTimeStamp().ToString();
            string orderId     = Guid.NewGuid().ToString();
            string orderInfo   = description;
            string url         = (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Production"? "https://etour-client.azurewebsites.net/booking/momoconfirm" : "https://localhost:44323/booking/momoconfirm") + $"?id={booking.ID}";
            string requestType = "captureMoMoWallet";
            string extraData   = "";

            var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://test-payment.momo.vn/gw_payment/transactionProcessor");

            httpWebRequest.ContentType = "application/json";
            httpWebRequest.Method      = "POST";

            using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
            {
                string json = new JavaScriptSerializer().Serialize(new
                {
                    partnerCode,
                    accessKey,
                    requestId,
                    amount = amountVnd.ToString(),
                    orderId,
                    orderInfo,
                    returnUrl = url,
                    notifyUrl = url,
                    requestType,
                    signature = HmacHelper.Compute(key: secret, message: $"partnerCode={partnerCode}&accessKey={accessKey}&requestId={requestId}&amount={amountVnd.ToString()}&orderId={orderId}&orderInfo={orderInfo}&returnUrl={url}&notifyUrl={url}&extraData={extraData}"),
                    extraData
                });

                streamWriter.Write(json);
            }

            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                var result = streamReader.ReadToEnd();
                Console.WriteLine(result);
                return(Task.FromResult <string>(((dynamic) new JavaScriptSerializer().DeserializeObject(result)).payUrl));
            }
        }
예제 #8
0
 public string ComputeMac()
 {
     return(HmacHelper.Compute(ZaloPayHMAC.HMACSHA256, Constants.APP_ID, GetMacData()));
 }
예제 #9
0
 public string ComputeMac()
 {
     return(HmacHelper.Compute(ZaloPayHMAC.HMACSHA256, ConfigurationManager.AppSettings["Key1"], GetMacData()));
 }