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); }
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); } }
/// <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)); } }
public BillDetails CreateBill(BillDetails bill) { return(BillRepository.CreateBill(bill)); }