Exemple #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="info"></param>
        /// <param name="apiKey"></param>
        /// <returns></returns>
        public static string GetResponseText(ChargeCardDirentResult info, string apiKey)
        {
            string rHmac = info.R0_Cmd + info.R1_Code + info.R6_Order + info.Rq_ReturnMsg;

            rHmac = Lib.Digest.HmacSign(rHmac, apiKey);

            string text = string.Format("r0_Cmd={1}{0}r1_Code={2}{0}r6_Order={3}{0}rq_ReturnMsg={4}{0}hmac={5}", '\n'
                                        , info.R0_Cmd
                                        , info.R1_Code
                                        , info.R6_Order
                                        , info.Rq_ReturnMsg
                                        , rHmac);

            return(text);
        }
Exemple #2
0
        /// <summary>
        ///
        /// </summary>
        private void Process()
        {
            var szxresult = new ChargeCardDirentResult {
                R0_Cmd = "ChargeCardDirect", R6_Order = DirectCardInfo.p2_Order
            };

            string rCode = viviapi.SysInterface.Card.YeePay.ChargeCardDirect.CheckParameter(DirectCardInfo);

            if (rCode != "1")
            {
                #region 记录日志

                if (this.DebuglogOpen)
                {
                    var debugInfo = new viviapi.Model.Sys.debuginfo
                    {
                        userid    = DirectCardInfo.UserId,
                        addtime   = DateTime.Now,
                        bugtype   = viviapi.Model.Sys.debugtypeenum.卡类订单,
                        errorcode = rCode,
                        errorinfo = DirectCardInfo.Msg,
                        userorder = DirectCardInfo.p2_Order,
                        url       = Request.RawUrl,
                        detail    = ""
                    };
                    viviapi.BLL.Sys.Debuglog.Insert(debugInfo);
                }

                #endregion
            }
            else
            {
                string sysOrderNo = Factory.Instance.GenerateOrderId(OrderPrefix);

                bool initTotal = true;

                if (DirectCardInfo.CardNum > 1)
                {
                    initTotal = InitTotalOrder(sysOrderNo, DirectCardInfo);
                }
                //成功提交个数
                int succSummit = 0;

                if (initTotal)
                {
                    for (int i = 0; i < DirectCardInfo.CardNum; i++)
                    {
                        #region 明细项

                        var item = new ChargeCardDirectDetails
                        {
                            TypeId       = DirectCardInfo.TypeId,
                            CardType     = DirectCardInfo.CardType,
                            UserId       = DirectCardInfo.UserId,
                            ManageId     = DirectCardInfo.ManageId,
                            APIkey       = DirectCardInfo.APIkey,
                            CardNo       = DirectCardInfo.CardNos[i],
                            CardPwd      = DirectCardInfo.CardPwds[i],
                            Refervalue   = DirectCardInfo.CardFaceValues[i],
                            SerialNumber = i.ToString("00")
                        };

                        if (DirectCardInfo.CardNum > 1)
                        {
                            item.UserOrderNo = DirectCardInfo.p2_Order + "_" + item.SerialNumber;
                            item.SysOrderNo  = sysOrderNo + "_" + item.SerialNumber;
                        }
                        else
                        {
                            item.UserOrderNo = DirectCardInfo.p2_Order;
                            item.SysOrderNo  = sysOrderNo;
                        }

                        string chk =
                            viviapi.SysInterface.Card.YeePay.ChargeCardDirect.CheckChargeCardDirectDetails(item);

                        if (chk == "0")
                        {
                            var orderInfo = InitOrder(DirectCardInfo.CardNum, sysOrderNo, item.SysOrderNo, item);
                            if (orderInfo == null)
                            {
                                rCode = "-1";
                                DirectCardInfo.Msg = "系统故障,请联系商务";
                                break;
                            }
                            else
                            {
                                var suppResponse = new CardSynchCallBack();

                                if (item.ProcessMode == 1)
                                {
                                    #region 通过接口

                                    var supp = (SupplierCode)item.SupplierId;

                                    suppResponse = OrderCardUtils.SynchSubmit(supp
                                                                              , item.SysOrderNo
                                                                              , item.TypeId
                                                                              , item.CardNo
                                                                              , item.CardPwd
                                                                              , decimal.ToInt32(item.Refervalue)
                                                                              , string.Empty
                                                                              , 1);

                                    if (suppResponse.SummitStatus == 0)
                                    {
                                        item.CardStatus = "-1";

                                        string viewMsg = suppResponse.SuppErrorMsg;

                                        var response = new CardOrderSupplierResponse()
                                        {
                                            Sync          = 1,
                                            SupplierId    = item.SupplierId,
                                            SuppTransNo   = suppResponse.SuppTransNo,
                                            SysOrderNo    = item.SysOrderNo,
                                            OrderAmt      = 0M,
                                            SuppAmt       = 0M,
                                            OrderStatus   = 4,
                                            SuppErrorCode = suppResponse.SuppErrorCode,
                                            Opstate       = rCode,
                                            SuppErrorMsg  = suppResponse.SuppErrorMsg,
                                            ViewMsg       = viewMsg,
                                            Method        = 1
                                        };

                                        OrderCardUtils.FinishForSync(orderInfo, response);
                                    }
                                    else
                                    {
                                        succSummit++;

                                        item.CardStatus = "0";
                                        item.Msg        = "提卡成功,等待处理结果";
                                    }

                                    #endregion
                                }
                                else
                                {
                                    succSummit++;

                                    #region 系统自已处理

                                    item.SupplierId            = 0;
                                    suppResponse.SuppTransNo   = DateTime.Now.ToString("yyyyMMddHHmmssfff");
                                    suppResponse.OrderStatus   = 2;
                                    suppResponse.SuppErrorMsg  = "支付成功";
                                    suppResponse.SuppErrorCode = "0";
                                    suppResponse.SuccAmt       = decimal.ToInt32(item.Refervalue);

                                    #endregion
                                }

                                if (item.ProcessMode == 2 || suppResponse.OrderStatus == 2)
                                {
                                    #region 系统自处理

                                    var resInfo = new CardProcessResultInfo
                                    {
                                        supplierId    = 0,
                                        orderid       = item.SysOrderNo,
                                        supplierOrder = suppResponse.SuppTransNo,
                                        status        = 2,
                                        opstate       = "0",
                                        msg           = suppResponse.SuppErrorMsg,
                                        userViewMsg   = suppResponse.SuppErrorMsg,
                                        tranAMT       = suppResponse.SuccAmt,
                                        suppAmt       = 0M,
                                        errtype       = "0",
                                        method        = item.ProcessMode,
                                        count         = 0
                                    };
                                    item.Msg = "提卡成功,等待处理结果";
                                    var process = new SystemProcessCard();

                                    var tmr = new System.Threading.Timer(process.Process, resInfo, 1000, 0);
                                    resInfo.tmr = tmr;

                                    #endregion
                                }
                            }
                        }

                        #endregion
                    }
                    if (succSummit == 0)
                    {
                        rCode = "-1";
                        DirectCardInfo.Msg = "未有成功提卡记录";
                    }
                    else
                    {
                        rCode = "1";
                        DirectCardInfo.Msg = "接收成功,等待结果";
                    }
                }
                else
                {
                    rCode = "-1";
                    DirectCardInfo.Msg = "系统繁忙,请稍后再试";
                }
            }

            szxresult.R1_Code      = rCode;
            szxresult.Rq_ReturnMsg = DirectCardInfo.Msg;

            string text = viviapi.SysInterface.Card.YeePay.ChargeCardDirect.GetResponseText(szxresult, "");

            Response.Write(text);
        }