Beispiel #1
0
        private void GetPrepayID(string tradeno)
        {
            string version      = "1.0";
            string charset      = "UTF-8";
            string merchant_id  = System.Configuration.ConfigurationManager.AppSettings["wm_merchant_id"].ToStringOrEmpty();
            string out_trade_no = tradeno;
            string trade_type   = Request.QueryString["trade_type"].ToStringOrEmpty();
            string user_ip      = Request.QueryString["ip"].ToStringOrEmpty();
            string subject      = "在线支付";
            double cardtotal    = 0;
            var    dt           = aideTreasureFacade.GetDataSetBySql(" select currency from  OnLineOrder where OrderID = '" + tradeno + "'").Tables[0];

            if (dt.Rows.Count > 0)
            {
                cardtotal = dt.Rows[0][0].ToDouble(0).Value;
            }
            string body        = (cardtotal) + "金币";
            string user_id     = Request.QueryString["userid"].ToStringOrEmpty();
            string total_fee   = (Request.QueryString["money"].ToStringOrEmpty().ToDouble(0)).ToStringOrEmpty();
            string nonce_str   = Game.Utils.Common.GetRandomChar(32);
            string notify_url  = System.Configuration.ConfigurationManager.AppSettings["url"].ToStringOrEmpty() + "Pay/wangmao/notify_url.aspx";
            string return_url  = System.Configuration.ConfigurationManager.AppSettings["url"].ToStringOrEmpty() + "Pay/wangmao/return_url.aspx";
            string biz_content = ToBase64(Server.UrlEncode("{\"datetime\":\"" + DateTime.Now.ToString("yyyyMMddHHssmm") + "\",\"timeout\":\"120\",\"reply_format\":\"xml\",\"tongle_cashier_desk\":\"1\"}"));
            string key         = System.Configuration.ConfigurationManager.AppSettings["wm_pay_key"].ToStringOrEmpty();

            string signTemp       = "biz_content=" + biz_content + "body=" + body + "&charset=" + charset + "&merchant_id=" + merchant_id + "&nonce_str=" + nonce_str + "&notify_url=" + notify_url + "&out_trade_no=" + out_trade_no + "&return_url=" + return_url + "&subject=" + subject + "&total_fee=" + total_fee + "&trade_type=" + trade_type + "&user_id=" + user_id + "&user_ip=" + user_ip + "&version=" + version + "&key=" + key;
            string sign           = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(signTemp, "MD5").ToUpper();
            var    packageRequest = new Dictionary <string, string>();

            packageRequest.Add("biz_content", biz_content);
            packageRequest.Add("body", body);
            packageRequest.Add("charset", charset);
            packageRequest.Add("merchant_id", merchant_id);
            packageRequest.Add("nonce_str", nonce_str);
            packageRequest.Add("notify_url", notify_url);
            packageRequest.Add("out_trade_no", out_trade_no);
            packageRequest.Add("return_url", return_url);
            packageRequest.Add("subject", subject);
            packageRequest.Add("total_fee", total_fee);
            packageRequest.Add("trade_type", trade_type);
            packageRequest.Add("user_id", user_id);
            packageRequest.Add("user_ip", user_ip);
            packageRequest.Add("version", version);
            packageRequest.Add("sign", sign);

            var data = Serializer.DictionaryToXml(packageRequest);

            //Encoding iso = Encoding.GetEncoding("ISO-8859-1");
            //Encoding utf8 = Encoding.UTF8;
            //byte[] utfBytes = utf8.GetBytes(data);
            //byte[] isoBytes = Encoding.Convert(utf8, iso, utfBytes);
            //  data = iso.GetString(isoBytes);

            Logger.Debug("data:" + data);
            string prepayXml = HttpHelper.HttpRequest("http://api.mxc88.com/gateway/soa", data);

            Logger.Debug("prepayXml:" + prepayXml);
            var a = Serializer.XmlDeserialize <xml>(prepayXml);

            //a.nonce_str = nonce_str;
            //a.partner_id = mch_id;
            //a.key = key;
            var b = new { nonce_str = nonce_str, merchant_id = merchant_id, key = key, errorcode = "1", errormsg = tradeno, secretstr = "", sign = sign };

            Logger.Debug(Serializer.SerializeToJson(b));
            ResponseToEnd(Serializer.SerializeToJson(b));

            //Prepay b = new Prepay();
            //b.return_code = "123";
            //Serializer.XmlSerialize(b);
            //var xdoc = new XmlDocument();
            //xdoc.LoadXml(prepayXml);
        }
Beispiel #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string partner = ApplicationSettings.Get("parter_jr");  //商户ID

            Log.Write("partner" + partner);
            string Key = ApplicationSettings.Get("key_jr");  //商户KEY

            Log.Write("Key" + Key);
            int orderstatus = Convert.ToInt32(Request["orderstatus"]);

            Log.Write("orderstatus" + orderstatus);
            string ordernumber = Request["ordernumber"];

            Log.Write("ordernumber" + ordernumber);
            string paymoney = Request["paymoney"];

            Log.Write("paymoney" + paymoney);
            string sign = Request["sign"];

            Log.Write("sign" + sign);
            string attach = Request["attach"];

            Log.Write("attach" + attach);
            string signSource = string.Format("partner={0}&ordernumber={1}&orderstatus={2}&paymoney={3}{4}", partner, ordernumber, orderstatus, paymoney, Key);

            Log.Write("sign" + sign);
            Log.Write("signSource" + signSource);
            if (sign.ToUpper() == JRAPI_NET_DEMO.JRAPICommon.MD5(signSource, false).ToUpper())//签名正确
            {
                ShareDetialInfo shareDetialInfo = new ShareDetialInfo();
                shareDetialInfo.OrderID   = ordernumber;
                shareDetialInfo.IPAddress = Utility.UserIP;
                shareDetialInfo.PayAmount = System.Convert.ToDecimal(paymoney);
                Message message = FacadeManage.aideTreasureFacade.FilliedOnline(shareDetialInfo, 0);
                if (message.Success)
                {
                    Log.Write("充值成功");
                    base.Response.Write("充值成功!订单号:" + ordernumber);
                }
                else
                {
                    var dt = aideTreasureFacade.GetDataSetBySql("select OrderStatus from OnLineOrder where orderid = '" + ordernumber + "'").Tables[0];
                    if (dt.Rows.Count > 0)
                    {
                        if (dt.Rows[0][0].ToStringOrEmpty() == "2")
                        {
                            Log.Write(message.Content);
                            base.Response.Write("充值成功!订单号:" + ordernumber);
                        }
                        else
                        {
                            Log.Write(message.Content);
                            base.Response.Write("充值失败:" + message.Content + "<br/>订单号:" + ordernumber);
                        }
                    }
                    else
                    {
                        Log.Write(message.Content);
                        base.Response.Write("充值失败:" + message.Content + "<br/>订单号:" + ordernumber);
                    }
                }
            }
            Response.Write("ok");
            Response.End();
        }