Ejemplo n.º 1
0
        /// <summary>
        /// 返回预支付订单号
        /// 统一支付接口,可受 JSAPI/NATIVE/APP 下预支付订单,返回预支付订单号
        /// </summary>
        public weixin_unified_order_return UnifiedOrder(weixin_unified_order order)
        {
            //初始化的一些固定的值
            order.appid  = AppId;
            order.mch_id = MchId;

            //设置可能中文的字段的UTF8编码格式
            //ordervo.body = HttpUtility.UrlEncode(ordervo.body, System.Text.Encoding.GetEncoding("UTF-8"));

            //设置数据签名
            Hashtable sign_hashtable = Util.voToHashtable(order);

            order.sign = Sign(sign_hashtable);


            //发起远程请求,得到XML数据
            string action  = "https://api.mch.weixin.qq.com/pay/unifiedorder";
            string data    = Util.voToXML(order);
            string xmlData = Util.MethodPOST(action, data, "UTF-8");

            //读取XML文档
            XmlDocument xml = new XmlDocument();

            xml.LoadXml(xmlData);

            return((weixin_unified_order_return)Util.xmlToVO(xml, "DbModels.WeixinModels.UnifiedOrderReturn"));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 统一下单
        /// </summary>
        /// <param name="openid"></param>
        /// <param name="appcode"></param>
        /// <param name="seedName"></param>
        /// <param name="notifyUrl"></param>
        /// <param name="weixin"></param>
        /// <returns></returns>
        public weixin_jsapi_pay GetPayParaData(string openid, string appcode, string seedName, string notifyUrl, weixin_list weixin)
        {
            //微信公众号统一下单 (需要将数据库weixin的信息补全)
            WeixinPay weixinPay = new WeixinPay(System.Web.HttpContext.Current, weixin.appid, weixin.appsecret, weixin.pay_mch_id, weixin.pay_partner_key);
            //string payNumber = Common.Orderform.Orderform.getNewPayNumer(orderform.uid.ToString());
            string payNumber = "";
            //微信支付,统一下单(与微信支付订单一样)
            weixin_unified_order unifiedOrder = new weixin_unified_order();
            //int total_fee = int.Parse(((orderform.money + orderform.freight) * 100).To<double>().ToString("F0"));
            int total_fee = 0;

            unifiedOrder.nonce_str        = Sys.getRandomCode(26);
            unifiedOrder.body             = seedName + "(" + appcode + "-Applet)";
            unifiedOrder.out_trade_no     = payNumber;//商户单号使用支付单号
            unifiedOrder.total_fee        = total_fee;
            unifiedOrder.spbill_create_ip = Util.GetUserIp();
            unifiedOrder.notify_url       = notifyUrl; //回调
            unifiedOrder.trade_type       = "JSAPI";
            unifiedOrder.openid           = openid;

            //获得统一下单返回的支付单信息
            weixin_unified_order_return unifiedOrderReturn = weixinPay.UnifiedOrder(unifiedOrder);

            LogHelper.Info("统一下单返回的支付单信息:" + Newtonsoft.Json.JsonConvert.SerializeObject(unifiedOrderReturn));
            if ("SUCCESS".Equals(unifiedOrderReturn.return_code))
            {
                //准备获取支付信息的签名参数
                Hashtable parameter = new Hashtable();
                parameter.Add("appId", unifiedOrderReturn.appid);
                parameter.Add("timeStamp", Util.getLongTime().ToString());
                parameter.Add("nonceStr", unifiedOrderReturn.nonce_str);
                parameter.Add("package", "prepay_id=" + unifiedOrderReturn.prepay_id);
                parameter.Add("signType", "MD5");
                string           paysign       = weixinPay.Sign(parameter);
                weixin_jsapi_pay weixinPayInfo = new weixin_jsapi_pay()
                {
                    timestamp = Util.getLongTime(),
                    nonceStr  = unifiedOrderReturn.nonce_str,
                    package   = "prepay_id=" + unifiedOrderReturn.prepay_id,
                    signType  = "MD5",
                    paySign   = paysign,
                    is_pay    = false
                };
                LogHelper.Info("获得了统一下单数据:" + Newtonsoft.Json.JsonConvert.SerializeObject(weixinPayInfo));

                return(weixinPayInfo);
            }
            else
            {
                ////删除订单
                //orderform.isdelete = 1;
                //orderform.remarks = "小程序统一下单失败,自动删除";
                //db.Update("orderform", orderform, "id=" + orderform_id);
            }
            return(null);
        }