/// <summary> /// 获取统一二维码 /// </summary> private string GetUnion2DCodeUrl(CHIS.Models.PayQrInfo model) { string md5 = Ass.Data.Secret.MD5($"{model.wx2DCodeUrl}|{model.ali2DCodeUrl}|{model.totalAmount}|{model.payOrderId}"); string s = $"{md5}|{model.totalAmount}|{model.payOrderId}"; string ens = System.Web.HttpUtility.UrlEncode(Ass.Data.Secret.Encript(s, Global.SYS_ENCRIPT_PWD)); var host = Global.Localhost2Ip(_configuration.GetSection("SysEnvi:SelfUrlRoot").Value); var path = _configuration.GetSection("QRPay:QRUnionScanUrl").Value; return($"{host}{path}?code={ens}"); }
/// <summary> /// 获取支付信息 /// </summary> /// <param name="socket"></param> public async Task GetPayQrInfo(PayQrWebSocket socket) { CHIS.Models.PayQrInfo QrInfo = null; try { string h = await Ass.Net.WebHelper.WebPost(GetUrl("QRPay:HostUrl", "QRPay:GetPayInfo") + $"?payOrderId={socket.PayOrderId}"); QrInfo = GetFromJsonString <CHIS.Models.PayQrInfo>(h); if (QrInfo.status == "ERROR") { throw new Exception(); } if (QrInfo.status == "PAYEDSUCCESS") { await NotifyToClient(socket, QrInfo); socket.PayQrStatus = PayQrStatuses.PAYEDSUCCESS; await _wsconnMgr.RemoveSocket(socket);//关闭连接 } else { QrInfo.union2DCodeUrl = GetUnion2DCodeUrl(QrInfo);//获取统一二维码 socket.WxQrUrl = QrInfo.wx2DCodeUrl; socket.AliQrUrl = QrInfo.ali2DCodeUrl; socket.PayAmount = QrInfo.totalAmount; await NotifyToClient(socket, QrInfo); socket.PayQrStatus = PayQrStatuses.GETPAYINFO; } } catch (Exception ex) { if (QrInfo == null) { QrInfo = new CHIS.Models.PayQrInfo() { rlt = false, msg = ex.Message, status = "ERROR" } } ; await NotifyToClient(socket, QrInfo); await _wsconnMgr.RemoveSocket(socket);//关闭连接 } }