zhangyang 3 vuotta sitten
vanhempi
commit
533f3e9e85

+ 110 - 7
zhipuzi_pos_windows/page/CShoukuanPageUI.cpp

@@ -194,6 +194,29 @@ void CShoukuanPageUI::HandleClickMsg(TNotifyUI& msg)
 		//点击微信支付
 		this->StartWeixinzhifuShoukuan();
 	}
+	else if (senderName == L"diandan_jiesuan_zhifufangshi_shoukuan_btn")
+	{
+		//点击会员支付
+		this->StartHuiyuanShoukuan();
+	}
+	else if (senderName == L"diandan_jiesuan_zhifufangshi_xianjin_btn")
+	{
+		//点击现金收款
+		this->StartXianjinShoukuan();
+	}
+	else if (senderName == L"diandan_jiesuan_zhifufangshi_fulika_btn")
+	{
+		//福利卡收款
+		this->StartFulikaShoukuan();
+	}
+	else if (senderName == L"diandan_jiesuan_zhifufangshi_zidingyi_btn")
+	{
+		//自定义支付
+		std::wstring name = msg.pSender->GetText();
+		std::wstring selfpay_id = msg.pSender->GetCustomAttribute(L"selfpay_id");
+
+	
+	}
 }
 
 //处理option切换事件
@@ -478,6 +501,8 @@ void CShoukuanPageUI::StartWeixinzhifuShoukuan(std::string fukuanma)
 		m_is_show_modal_wnd = true;
 		m_curModalWnd = pShoukuanWnd;
 
+		pShoukuanWnd->SetType(4);
+
 		pShoukuanWnd->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
 		pShoukuanWnd->SetIcon(IDI_ICON_DUILIB);
 		pShoukuanWnd->CenterWindow();
@@ -514,13 +539,13 @@ void CShoukuanPageUI::StartWeixinzhifuShoukuan(std::string fukuanma)
 			}
 
 			//说明收款成功了,需要进行一些后续的处理
-			//this->StartWorkAfterShoukuan(pShoukuanWnd->m_kucun_string, pShoukuanWnd->m_take_food_code, pShoukuanWnd->m_show_trade_no, zhifu_type);
+			this->StartWorkAfterShoukuan(pShoukuanWnd->m_show_trade_no, zhifu_type);
 
 			m_pMainWnd->ShowToast(L"收款成功!");
 		}
 		else
 		{
-			int a = 1;
+			
 		}
 
 		m_is_show_modal_wnd = false;
@@ -528,6 +553,82 @@ void CShoukuanPageUI::StartWeixinzhifuShoukuan(std::string fukuanma)
 	}
 }
 
+//开始进行会员收款
+void CShoukuanPageUI::StartHuiyuanShoukuan()
+{
+	if (m_is_show_modal_wnd == true)
+	{
+		return;
+	}
+
+	if (atof(GetMoney().c_str()) < 0.0001)
+	{
+		m_pMainWnd->ShowToast(L"收款金额不能为0");
+
+		return;
+	}
+
+	CHuiyuanShoukuanWnd* pShoukuanWnd = new CHuiyuanShoukuanWnd();
+	if (pShoukuanWnd != NULL)
+	{
+		m_is_show_modal_wnd = true;
+		m_curModalWnd = pShoukuanWnd;
+
+		pShoukuanWnd->SetType(4);
+
+		pShoukuanWnd->Create(m_pManager->GetPaintWindow(), _T(""), UI_WNDSTYLE_DIALOG, WS_EX_TOOLWINDOW);
+		pShoukuanWnd->SetIcon(IDI_ICON_DUILIB);
+		pShoukuanWnd->CenterWindow();
+
+		std::string format_string = GetMoney();
+		std::wstring watchValue = CLewaimaiString::UTF8ToUnicode(format_string);
+		pShoukuanWnd->InitMoney(watchValue);
+
+		//这里要对提交订单的参数进行组装,然后方便请求
+		pShoukuanWnd->SetCommonParams(GetSendorderParams());
+
+		/*
+		if (m_is_start_catch && m_catch_string.length() == 18)
+		{
+			pShoukuanWnd->InitFukuanma(m_catch_string);
+		}
+		}*/
+
+		UINT ret = pShoukuanWnd->ShowModal();
+		if (ret == IDOK)
+		{
+			std::string balance = pShoukuanWnd->m_balance;
+			std::string member_number = pShoukuanWnd->m_member_number;
+
+			//说明收款成功了,需要进行一些后续的处理
+			this->StartWorkAfterShoukuan(pShoukuanWnd->m_show_trade_no, "huiyuanzhifu", balance, member_number);
+
+			m_pMainWnd->ShowToast(L"收款成功!");
+		}
+
+		m_is_show_modal_wnd = false;
+		delete pShoukuanWnd;
+	}
+}
+
+//开始进行现金收款
+void CShoukuanPageUI::StartXianjinShoukuan()
+{
+
+}
+
+//开始进行福利卡收款
+void CShoukuanPageUI::StartFulikaShoukuan()
+{
+
+}
+
+//开始自定义支付收款
+void CShoukuanPageUI::StartZidingyiShoukuan(std::wstring name, std::wstring selfpay_id)
+{
+
+}
+
 //获取通用参数,任何支付方式都要用到的参数,个性化参数在弹框里面处理
 //参考文档 http://apidoc.zhipuzi.com/index.php/home/item/show?item_id=4
 std::map<string, string> CShoukuanPageUI::GetSendorderParams()
@@ -536,11 +637,8 @@ std::map<string, string> CShoukuanPageUI::GetSendorderParams()
 
 	params["order_no"] = CRandomHelper::GetRandString(20);
 
-	params["coupon"] = CLewaimaiString::DoubleToString(1, 2);
-	params["price_plus"] = CLewaimaiString::DoubleToString(1, 2);
-	params["price_moling"] = CLewaimaiString::DoubleToString(1, 2);
-	params["yingshou_value"] = CLewaimaiString::DoubleToString(1, 2);
-	params["shishou_value"] = CLewaimaiString::DoubleToString(1, 2);
+	params["yingshou_value"] = GetMoney();
+	params["shishou_value"] = GetMoney();
 	params["zhaoling_value"] = "0";
 
 	params["zhifu_type"] = "";
@@ -548,6 +646,11 @@ std::map<string, string> CShoukuanPageUI::GetSendorderParams()
 	return params;
 }
 
+void CShoukuanPageUI::StartWorkAfterShoukuan(std::string show_trade_no, std::string shoukuan_type, std::string balance, std::string member_number)
+{
+	this->InitMoney();
+}
+
 void CShoukuanPageUI::SetPos(RECT rc, bool bNeedInvalidate)
 {
 	m_nPageWidth = rc.right - rc.left;

+ 15 - 0
zhipuzi_pos_windows/page/CShoukuanPageUI.h

@@ -60,9 +60,24 @@ private:
 	//开始进行微信支付收款,如果fukuanma不为空,默认自动唤起支付
 	void StartWeixinzhifuShoukuan(std::string fukuanma = "");
 
+	//开始进行会员收款
+	void StartHuiyuanShoukuan();
+
+	//开始进行现金收款
+	void StartXianjinShoukuan();
+
+	//开始进行福利卡收款
+	void StartFulikaShoukuan();
+
+	//开始自定义支付收款
+	void StartZidingyiShoukuan(std::wstring name, std::wstring selfpay_id);
+
 	//获取用于提交订单的参数结构
 	std::map<string, string> GetSendorderParams();
 
+	//执行付款成功后的所有操作逻辑
+	void StartWorkAfterShoukuan(std::string show_trade_no, std::string shoukuan_type, std::string balance = "", std::string member_number = "");
+
 private:
 	//是否正在请求服务器
 	bool m_is_handle = false;

+ 5 - 0
zhipuzi_pos_windows/wnd/CHuiyuanShoukuanWnd.cpp

@@ -988,6 +988,11 @@ void CHuiyuanShoukuanWnd::HandleShoukuan()
 	{
 		url = "/dinnercash/pay";
 	}
+	else if (m_nType == 4)
+	{
+		url = "/shouyin/sendorder";
+	}
+
 	bool ret = CZhipuziHttpClient::GetInstance()->Request(url.c_str(), m_commonParams, response);
 	if (ret == false)
 	{

+ 2 - 3
zhipuzi_pos_windows/wnd/CHuiyuanShoukuanWnd.h

@@ -117,7 +117,6 @@ public:
 	std::string m_balance;
 	std::string m_member_number;
 
-	//뎠품澗운끝쒼 1 듐데澗陵 2攣꽜澗陵 3�쯤澗陵
+	//뎠품澗운끝쒼 1 듐데澗陵 2攣꽜澗陵 3�쯤澗陵 4우醵澗陵
 	int m_nType = 1;
-};
-
+};

+ 49 - 8
zhipuzi_pos_windows/wnd/CWeixinzhifuShoukuanWnd.cpp

@@ -622,6 +622,11 @@ void CWeixinzhifuShoukuanWnd::HandleShoukuan()
 	{
 		url = "/dinnercash/pay";
 	}
+	else if (m_nType == 4)
+	{
+		url = "/shouyin/sendorder";
+	}
+
 	bool ret = CZhipuziHttpClient::GetInstance()->Request(url.c_str(), m_commonParams, response);
 	if (ret == false)
 	{
@@ -693,16 +698,28 @@ void CWeixinzhifuShoukuanWnd::HandleShoukuan()
 		//支付成功
 		m_shoukuan_status = 3;
 
-		Value& stock = data["stock"];
-		m_kucun_string = CLewaimaiJson::JsonToString(stock);
-		m_show_trade_no = data["show_trade_no"].GetString();
-
 		if (m_nType == 1)
 		{
 			//快餐才有取餐号
 			m_take_food_code = data["take_food_code"].GetString();
 
 			m_trade_no = data["trade_no"].GetString();
+
+			Value& stock = data["stock"];
+			m_kucun_string = CLewaimaiJson::JsonToString(stock);
+
+			m_show_trade_no = data["show_trade_no"].GetString();
+		}
+		else if (m_nType == 2)
+		{
+			Value& stock = data["stock"];
+			m_kucun_string = CLewaimaiJson::JsonToString(stock);
+
+			m_show_trade_no = data["show_trade_no"].GetString();
+		}
+		else if (m_nType == 4)
+		{
+			m_show_trade_no = data["trade_no"].GetString();
 		}
 
 		SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
@@ -722,6 +739,8 @@ void CWeixinzhifuShoukuanWnd::HandleShoukuan()
 
 		m_trade_no = data["trade_no"].GetString();
 
+		m_show_trade_no = data["trade_no"].GetString();
+
 		//需要查询支付状态
 		SendMessage(WM_SHOUKUAN_STATUS_NEEDPASSWORD, 0, 0);
 	}
@@ -756,6 +775,11 @@ void CWeixinzhifuShoukuanWnd::HandleShoukuanPassword()
 
 			params["is_clear"] = "1";
 		}
+		else if (m_nType == 4)
+		{
+			url = "/shouyin/queryorderstatus";
+		}
+
 		bool ret = CZhipuziHttpClient::GetInstance()->Request(url.c_str(), params, response);
 		if (ret == false)
 		{
@@ -815,14 +839,26 @@ void CWeixinzhifuShoukuanWnd::HandleShoukuanPassword()
 			//支付成功
 			m_shoukuan_status = 3;
 
-			Value& stock = data["stock"];
-			m_kucun_string = CLewaimaiJson::JsonToString(stock);
-			m_show_trade_no = data["show_trade_no"].GetString();
-
 			if (m_nType == 1)
 			{
 				//快餐才有取餐号
 				m_take_food_code = data["take_food_code"].GetString();
+
+				Value& stock = data["stock"];
+				m_kucun_string = CLewaimaiJson::JsonToString(stock);
+
+				m_show_trade_no = data["show_trade_no"].GetString();
+			}
+			else if (m_nType == 2)
+			{
+				Value& stock = data["stock"];
+				m_kucun_string = CLewaimaiJson::JsonToString(stock);
+
+				m_show_trade_no = data["show_trade_no"].GetString();
+			}
+			else if (m_nType == 4)
+			{
+				
 			}
 
 			SendMessage(WM_SHOUKUAN_STATUS_SUCCESS, 0, 0);
@@ -885,6 +921,11 @@ void CWeixinzhifuShoukuanWnd::HandleCancelShoukuan()
 	{
 		url = "/dinnercash/closeorder";
 	}
+	else if (m_nType == 4)
+	{
+		url = "/shouyin/closeorder";
+	}
+
 	bool ret = CZhipuziHttpClient::GetInstance()->Request(url.c_str(), params, response);
 	if (ret == false)
 	{

+ 1 - 1
zhipuzi_pos_windows/wnd/CWeixinzhifuShoukuanWnd.h

@@ -122,7 +122,7 @@ public:
 	std::string m_take_food_code;
 	std::string m_show_trade_no;
 
-	//뎠품澗운끝쒼 1 듐데澗陵 2攣꽜澗陵 3�쯤澗陵
+	//뎠품澗운끝쒼 1 듐데澗陵 2攣꽜澗陵 3�쯤澗陵 4:우醵澗陵
 	int m_nType = 1;
 };