| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313 |
- using HttpServices;
- using Newtonsoft.Json.Linq;
- using System;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using UppPay.Forms;
- using Ini;
- using DGPosPay;
- namespace UppPay
- {
- public class UppPay
- {
- Thread thread;
- string errorCode = "-1";
- string errorMessage = "";
- JObject SMFormOutDataobj = new JObject();
- JObject result;
- JObject inParamsobj = new JObject();
- IniFile ini = new IniFile();
- Loading loading = new Loading();
- public string UPPPayControl(string inParams)
- {
- System.Diagnostics.Debugger.Launch();
- string readData = "";
- result= new JObject();
- JObject jObject = new JObject();
- try
- {
- inParamsobj = JObject.Parse(inParams);
- string recordIDinfo = inParamsobj["recordIDinfo"].ToString();
- var payInfo = inParamsobj["payInfo"];
- var payListArr = inParamsobj["payList"];
- string inPaywCode = "";
- string inAuthcode = "";
- if (payInfo != null)
- {
- inPaywCode = payInfo["paywCode"]?.ToString();
- inAuthcode = payInfo["authcode"]?.ToString();
- }
- foreach (JObject obj in payListArr)
- {
- // 提取对象的属性值
- string payWType = obj["payWType"]?.ToString();
- string payWayCode = obj["payWayCode"]?.ToString();
- string payAmt = obj["payAmt"]?.ToString();
- string revTranFlag= obj["revTranFlag"]?.ToString();
- if (payWType == "DGDLL")
- {
- //东莞光明
-
- thread = new Thread(() => formPOSFormd(obj));
- thread.SetApartmentState(ApartmentState.STA); //重点
- thread.Start();
- thread.Join();
- if (errorCode != "0")
- {
- //错误退出
- break;
- }
- }
- else if (payWType == "ONLINE")
- {
- //线上扫码支付
- string authcode = "";
- if ((inPaywCode != "") && (inPaywCode == payWayCode))
- {
- ///前端界面传入了二维码
- authcode = inAuthcode;
- }
- else {
- SMForm formSM = new SMForm();
- JObject smreturnobj = formSMFormd(formSM);
- errorCode = smreturnobj["errorCode"].ToString();
- errorMessage = smreturnobj["errorMessage"].ToString();
- if (errorCode != "0")
- {
- break;
- }
- authcode = smreturnobj["authcode"].ToString();
- }
-
- if (string.IsNullOrWhiteSpace(authcode))
- {
- errorCode = "-1";
- errorMessage = "authcode 为空";
- break;
- }
- obj.Add("authcode", authcode);
- LoadingFormd();
- thread = new Thread(() => payONLINE(obj));
- thread.SetApartmentState(ApartmentState.STA); //重点
- thread.Start();
- thread.Join();
- if (errorCode != "0")
- {
- //错误退出
- break;
- }
-
- }
- else
- {
- break;
- errorCode = "-1";
- errorMessage = "非第三支付方式";
- }
- }
- }
- catch (Exception ex2)
- {
- errorCode = "-1";
- errorMessage = ex2.Message;
- }
- jObject.Add("errorCode", errorCode);
- jObject.Add("errorMessage", errorMessage);
- jObject.Add("result", result);
- return jObject.ToString();
- }
- private JObject payONLINE2()
- {
- SMFormOutDataobj = new JObject();
- loading.lblStatusText("请稍等........");
- try
- {
- for (int i = 0; i < 50; i++)
- {
- Thread.Sleep(500);
- loading.lblStatusText("" + i);
- }
- loading.CloseLoading();
- }
- catch (Exception ex2)
- {
- errorCode = "-1";
- errorMessage = "ReportFormd:" + ex2.Message;
- }
- errorCode = "-1";
- errorMessage = "ReportFormd:";
- return SMFormOutDataobj;
- }
- private void payONLINE(JObject InjObject)
- {
- loading.lblStatusText("请稍等........");
- try
- {
- string PayCode = ini.IniReadValue("SMPay", "PayCode");
- // 创建一个 JObject 对象
- JObject hisParamsobj = new JObject();
- // 创建一个 JArray 对象
- JArray paramsArray = new JArray();
- paramsArray.Add(InjObject);
- hisParamsobj["params"] = paramsArray;
- hisParamsobj["code"] = PayCode;
- hisParamsobj["session"] = inParamsobj["session"];
- //调用his进行数据Pos数据组织
- RestClient restClient = new RestClient();
- Task<string> task = restClient.HISHTTPServices(hisParamsobj.ToString()); //调用HIS回调
- string hisResult = task.Result;
- JObject hisResultObject = JObject.Parse(hisResult);
- errorCode = hisResultObject["errorCode"].ToString();
- errorMessage = hisResultObject["errorMessage"].ToString();
- string callbackDatainfo = hisResultObject["callbackData"].ToString();
- if (errorCode == "0")
- {
- ///支付成功
- errorCode = hisResultObject["errorCode"].ToString();
- errorMessage = hisResultObject["errorMessage"].ToString();
- result = JObject.Parse(hisResultObject["result"].ToString());
- }
- else if (errorCode == "USERPAYING")
- {
- loading.lblStatusText("请告知病人手机输入支付密码........");
- Thread.Sleep(3000);
- int countDownTime = int.Parse(ini.IniReadValue("Config", "waitTime"));
- int warningTime = int.Parse(ini.IniReadValue("Config", "warningTime"));
- for (int i = 0; i < countDownTime; i++)
- {
- Thread.Sleep(1000);
- loading.label2Text(countDownTime-i, warningTime);
- JObject callbackDataobj = JObject.Parse(callbackDatainfo);
- Task<string> savetask = restClient.HISHTTPServices(callbackDataobj.ToString()); //调用HIS回调保存数据
- string hisSaveResult = savetask.Result;
- JObject hisSaveResultobj = JObject.Parse(hisSaveResult);
- errorCode = hisSaveResultobj["errorCode"].ToString();
- errorMessage = hisSaveResultobj["errorMessage"].ToString();
- if (errorCode != "USERPAYING")
- {
- break;
- }
- }
- if (errorCode == "USERPAYING")
- {
- errorCode = "-1";
- errorMessage = "支付超时!!!";
- }
- }
- else {
- ///支付失败
- errorCode = hisResultObject["errorCode"].ToString();
- errorMessage = hisResultObject["errorMessage"].ToString();
- }
- }
- catch (Exception ex2)
- {
- errorCode = "-1";
- errorMessage = "ReportFormd:" + ex2.Message;
- //MessageBox.Show(errorMessage);
- }
- loading.CloseLoading();
- }
- private JObject formSMFormd(SMForm formSM)
- {
- SMFormOutDataobj = new JObject();
- try
- {
- if (formSM.ShowDialog() == DialogResult.OK)
- {
- SMFormOutDataobj = formSM.OutjObject;
-
- }
- else
- {
- SMFormOutDataobj = formSM.OutjObject;
- }
- }
- catch (Exception ex2)
- {
- errorCode = "-1";
- errorMessage = "ReportFormd:" + ex2.Message;
- }
- return SMFormOutDataobj;
- }
- private void formPOSFormd(JObject InjObject)
- {
- try
- {
- string PayCode = ini.IniReadValue("DGPosPay", "PayCode");
- // 创建一个 JObject 对象
- JObject hisParamsobj = new JObject();
- // 创建一个 JArray 对象
- JArray paramsArray = new JArray();
- paramsArray.Add(InjObject);
- hisParamsobj["params"] = paramsArray;
- hisParamsobj["code"] = PayCode;
- hisParamsobj["session"] = inParamsobj["session"];
- //调用his进行数据Pos数据组织
- RestClient restClient = new RestClient();
- Task<string> task = restClient.HISHTTPServices(hisParamsobj.ToString()); //调用HIS回调
- string hisResult = task.Result;
- JObject hisResultObject = JObject.Parse(hisResult);
- errorCode = hisResultObject["errorCode"].ToString();
- errorMessage = hisResultObject["errorMessage"].ToString();
- string callbackDatainfo = hisResultObject["callbackData"].ToString();
- if (errorCode == "0")
- {
- //调用posdll
- DGPosPayClass dgPosPay = new DGPosPayClass();
- string dllResult = dgPosPay.DGPosPay(hisResult);
- JObject dllResultobj = JObject.Parse(dllResult);
- errorCode = dllResultobj["errorCode"].ToString();
- errorMessage = dllResultobj["errorMessage"].ToString();
- string SavePayCode = ini.IniReadValue("DGPosPay", "SavePayCode");
- JObject callbackDataobj = JObject.Parse(callbackDatainfo);
- callbackDataobj["code"] = SavePayCode;
- string paramsinfo = callbackDataobj["params"][0].ToString();
- JObject paramsobj = JObject.Parse(paramsinfo);
- paramsobj.Add("posData", dllResultobj);
- JArray paramsArray2 = new JArray();
- paramsArray2.Add(paramsobj);
- callbackDataobj["params"] = paramsArray2;
- Task<string> savetask = restClient.HISHTTPServices(callbackDataobj.ToString()); //调用HIS回调保存数据
- string hisSaveResult = savetask.Result;
- JObject hisSaveResultobj = JObject.Parse(hisSaveResult);
- errorCode = hisSaveResultobj["errorCode"].ToString();
- errorMessage = hisSaveResultobj["errorMessage"].ToString();
- result = JObject.Parse(hisSaveResultobj["result"].ToString());
- }
- }
- catch (Exception ex2)
- {
- errorCode = "-1";
- errorMessage = "ReportFormd:" + ex2.Message;
- //MessageBox.Show(errorMessage);
- }
- thread.Abort();
- }
- private JObject LoadingFormd()
- {
- try
- {
- loading.Show();
- }
- catch (Exception ex2)
- {
- loading = new Loading();
- loading.Show();
- }
- return SMFormOutDataobj;
- }
- }
- }
|