示例#1
0
        public void CreateBill_WithValidBill_AddNewBillToListUnpaid()
        {
            var newBill = new bill()
            {
                created_at    = _timeMock.Object.UtcNow,
                is_paid       = false,
                patient_id    = 1,
                staff_created = 2,
                total_money   = 0
            };

            _sut.CreateBill(newBill);

            _sut.GetListUnpaidBill().Should().Contain(newBill);
        }
示例#2
0
        private bool CreateBill(Bill bill, bool save = true)
        {
            try
            {
                _billRepository.CreateBill(bill);
                if (save)
                {
                    _billRepository.Save();
                }

                return(true);
            }
            catch (SqlException e)
            {
                Logger.Instance.Error(e);
                return(false);
            }
            catch (Exception ex)
            {
                Logger.Instance.Error(ex);
                return(false);
            }
        }
示例#3
0
        /// <summary>
        /// 第一步:用户同意授权,获取code
        /// 第二步:通过code换取网页授权access_token
        /// 第三步:刷新access_token(如果需要)
        /// 第四步:拉取用户信息(需scope为 snsapi_userinfo)
        /// 第五步:获取openid
        /// 第六步:调用微信统一下单
        /// 第七步:拿到prepay_id
        /// 第八步:构造请求URL
        /// 第九步:唤起微信支付
        /// 第十步:支付成功跳转
        /// </summary>
        /// <param name="context"></param>
        private void UnifiedOrder(HttpContext context)
        {
            //定义统一消息体
            Core.Data.Entity.SystemEntity.MessageModel message = new Core.Data.Entity.SystemEntity.MessageModel();
            //定义请求工具
            HttpGetOrPost httpHelper = new HttpGetOrPost();
            //定义重定向URL
            string redirect_url1 = HttpUtility.UrlEncode("https://www.yuming.com.cn/auth.aspx");
            string redirect_url2 = HttpUtility.UrlEncode("https://www.yuming.com.cn/success.html");
            string ip            = context.Request.ServerVariables.Get("Remote_Addr").ToString();

            var jsCode = Q("code", context);
            var mobile = Q("mobile", context);

            if (string.IsNullOrEmpty(jsCode) || string.IsNullOrEmpty(mobile))
            {
                message.msg  = "0";
                message.data = "";
                context.Response.Write(JsonConvert.SerializeObject(message));
                return;
            }

            try
            {
                BillRepository service = new BillRepository();
                var            bill    = service.CreateBill("id", mobile);
                if (!string.IsNullOrEmpty(bill))
                {
                    //logger.Error("创建订单结果:");
                    //logger.Error(bill);
                    BillAddResponse billData = JsonConvert.DeserializeObject <BillAddResponse>(bill);
                    if (billData != null)
                    {
                        #region 第二步,发起预支付统一下单

                        string timestamp = context.Session["timestamp"].ToString();
                        string nonceStr  = context.Session["nonceStr"].ToString();
                        string openid    = context.Session["openid"].ToString();

                        //logger.Error("支付步骤timestamp:" + timestamp);
                        //logger.Error("支付步骤nonceStr:" + nonceStr);
                        //logger.Error("支付步骤openid:" + openid);

                        WxPayData data = new WxPayData();
                        data.SetValue("body", billData.ProductName);                                          //商品描述
                        data.SetValue("out_trade_no", billData.BillNumber);                                   //订单号
                        data.SetValue("total_fee", (int)(billData.BillAmount * 100));                         //总金额,微信是以分为单位
                        data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));                 //交易起始时间
                        data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss")); //交易结束时间
                        data.SetValue("goods_tag", "");                                                       //商品标记
                        data.SetValue("trade_type", "JSAPI");                                                 //交易类型
                        data.SetValue("openid", openid);                                                      //用户OPENID
                        data.SetValue("product_id", billData.ProductID);                                      //商品ID
                        data.SetValue("spbill_create_ip", ip);                                                //中端IP
                        data.SetValue("sign_type", "MD5");                                                    //中端IP
                        data.SetValue("notify_url", WechatJSAPIConfig.notify_url);
                        data.SetValue("nonce_str", nonceStr);

                        WxPayData result = WxPayApi.UnifiedOrder(data);//调用统一下单接口
                        if (result == null)
                        {
                            message.msg  = "0";
                            message.data = "";

                            context.Response.Write(JsonConvert.SerializeObject(message));
                        }

                        string prepay_id = result.GetValue("prepay_id").ToString();//获得统一下单接口返回的二维码链接

                        #endregion

                        //logger.Error("支付步骤订单结构:" + result.ToXml());

                        #region 第三步,生成支付签名

                        WxPayData payData = new WxPayData();
                        payData.SetValue("appId", WechatJSAPIConfig.appid);
                        payData.SetValue("timeStamp", timestamp);
                        payData.SetValue("nonceStr", nonceStr);
                        payData.SetValue("package", $"prepay_id={prepay_id}");
                        payData.SetValue("signType", "MD5");

                        string md5sign = payData.MakeSign();

                        //logger.Error("支付步骤签名:" + md5sign);

                        var jsBridge = new
                        {
                            msg       = "200",
                            appId     = WechatJSAPIConfig.appid,
                            timeStamp = timestamp,
                            nonceStr  = nonceStr,
                            mypackage = $"prepay_id={prepay_id}",
                            md5sign   = md5sign
                        };

                        string jsApiData = JsonConvert.SerializeObject(jsBridge);

                        //logger.Error("支付步骤json:" + jsApiData);

                        context.Response.Write(jsApiData);

                        #endregion
                    }
                    else
                    {
                        message.msg  = "0";
                        message.data = "";
                        context.Response.Write(JsonConvert.SerializeObject(message));
                    }
                }
            }
            catch (Exception ex)
            {
                message.msg  = "0";
                message.data = "";
                context.Response.Write(JsonConvert.SerializeObject(message));
            }
        }
示例#4
0
 public BillDetails CreateBill(BillDetails bill)
 {
     return(BillRepository.CreateBill(bill));
 }