示例#1
0
        /// <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}");
        }
示例#2
0
        /// <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);//关闭连接
            }
        }