Esempio n. 1
0
        public async Task <CheckMacValueModel> GetOrderCheckMacValue(string TradeNo)
        {
            CheckMacValueModel ret = null;
            int r = 0;

            try
            {
                using (SqlConnection con = new SqlConnection(constr))
                {
                    var p = new DynamicParameters();
                    p.Add("@TradeNo", TradeNo, dbType: DbType.String, direction: ParameterDirection.Input);
                    p.Add("@r", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);
                    await con.OpenAsync();

                    IEnumerable <CheckMacValueModel> tmp = await con.QueryAsync <CheckMacValueModel>("sp_GetOrderCheckMacValue", p, commandType : CommandType.StoredProcedure);

                    ret = tmp.FirstOrDefault <CheckMacValueModel>();
                    r   = p.Get <int>("@r");
                }
            }
            catch (Exception ex)
            {
                string msg = ex.Message;
                ret = null;
                r   = 1;
            }
            if (r != 0)
            {
                // 執行失敗
                ret = null;
            }
            else
            {
                if (ret == null)
                {
                    // 找不到CheckMacValue
                    ret = new CheckMacValueModel {
                        CheckMacValue = ""
                    };
                }
            }
            return(ret);
        }
Esempio n. 2
0
        // ReturnURL:信用卡付款結果通知
        public async Task <ActionResult <string> > PostCardInfo([FromForm] CardInfo model)
        {
            string             ret  = "1|OK";
            CheckMacValueModel cmvm = null;
            byte OrderStateId       = 4;

            try
            {
                if (model.RtnCode == 1)
                {
                    // 3.系統在Action【Paymeent/PostCardInfo】判斷綠界傳送之RtnCode==1。
                    // 4.系統在Action【Paymeent/PostCardInfo】讀取對應訂單之CheckMacValue。
                    cmvm = await IOR.GetOrderCheckMacValue(model.MerchantTradeNo);

                    if (cmvm != null)
                    {
                        // 5.系統判斷4傳回值!=null。
                        if (cmvm.CheckMacValue != "")
                        {
                            // 6.系統判斷4傳回值之CheckMacValue!=""。
                            // 6-1.系統設定OrderStateId=4。
                            OrderStateId = 4;
                        }
                        else
                        {
                            // 6a.系統判斷4傳回值之CheckMacValue==""。
                            //  6a-1.系統設定OrderStateId=6。
                            OrderStateId = 6;
                            //  6a-2.回7。
                        }
                        // 7.系統變更訂單狀態,並新增一筆會計帳。
                        int r = await IOR.UpdateOrderGreenCard(cmvm.OrderId, OrderStateId, model.TradeDate, model.PaymentType, model.TradeAmt, model.TradeNo, DateTime.Now);

                        if (r == 0)
                        {
                            // 8-1.系統判斷7傳回值=0。
                            // 8-2.系統寄發己付款eMail。
                            System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
                            mail.To.Add(cmvm.eMail);
                            mail.From       = new System.Net.Mail.MailAddress($@"{IEC.SmtpUsername}@{IEC.SmtpServer}");
                            mail.Subject    = "288訂購訊息";
                            mail.Body       = "您好,\n";
                            mail.Body      += $"您在288建立的訂單己付款完成,訂單代碼為{cmvm.OrderId},<br>";
                            mail.Body      += $"若為會員,請至本平台會員中心查詢訂單處理狀態,<br>";
                            mail.Body      += $"若非會員,本平台會寄送eMail告知訂單處理狀況,<br>";
                            mail.Body      += $"288網址:http://288ibobo.com ,<br>";
                            mail.Body      += $"客服專線:04-28825252";
                            mail.Body      += $"288應謝您!";
                            mail.IsBodyHtml = true;
                            IES.SendMail(mail);
                            // 9系統回傳"1|OK"。
                            ret = "1|OK";
                        }
                        else if (r == 2)
                        {
                            // 8-1a.系統判斷7傳回值=2。
                            //  8-1a-1.系統設定傳回值=”1|特店訂單編號找不到”
                            ret = "1|特店訂單編號找不到";
                            //  8-1a-2.回10。
                        }
                        else
                        {
                            // 8-1a.系統判斷7傳回值!=0/2。
                            //  8-1a-1.系統設定傳回值=”0|特店系統內部錯誤”
                            ret = "0|特店系統內部錯誤";
                            //  8-1a-2.回10。
                        }
                    }
                    else
                    {
                        // 5a.系統判斷4傳回值==null。
                        //  5a-1.系統設定傳回值=”0|內部錯誤”。
                        ret = $@"0|特店系統內部錯誤";
                        //  5a-2.回10。
                    }
                }
                else
                {
                    // 3a.系統在Action【Paymeent/PostCardInfo】判斷綠界傳送之RtnCode!=1。
                    //  3a-1.系統設定傳回值=”0|RtnMsg”。
                    //ret = $@"0|{model.RtnMsg}";
                    ret = $@"0|{model.RtnMsg}";
                    //  3a-2.回10。
                }
            }
            catch (Exception ex)
            {
                // 8a.系統判斷7執行失敗。
                //  8a-1.系統設定傳回值=”0|特店系統內部錯誤”
                //  8a-2.回10。
                ret = $@"0|特店系統內部錯誤";
            }
            return(ret);
        }
Esempio n. 3
0
        // PaymentInfoURL:ATM、CVS的取號結果通知
        public async Task <ActionResult <string> > PostPaymentInfo([FromForm] PaymentInfo model)
        {
            string ret = "1|OK";
            bool   suc = true;
            string pay = model.PaymentType.Substring(0, 3);

            switch (pay)
            {
            case "ATM":
                if (model.RtnCode != 2)
                {
                    // 3a.系統在Action【Paymeent/PostPaymentInfo】判斷綠界傳送之RtnCode!=2?(ATM),或是10100073(CVS)。
                    //  3a-1.系統設定傳回值=”0|RtnMsg”。
                    ret = $@"0|{model.RtnMsg}";
                    //  3a-2.回10。
                    suc = false;
                }
                break;

            case "CVS":
                if (model.RtnCode != 10100073)
                {
                    // 3a.系統在Action【Paymeent/PostPaymentInfo】判斷綠界傳送之RtnCode!=2?(ATM),或是10100073(CVS)。
                    //  3a-1.系統設定傳回值=”0|RtnMsg”。
                    ret = $@"0|{model.RtnMsg}";
                    //  3a-2.回10。
                    suc = false;
                }
                break;

            default:
                break;
            }
            if (suc)
            {
                CheckMacValueModel cmvm = null;
                byte OrderStateId       = 4;
                try
                {
                    // 3.系統在Action【Paymeent/PostPaymentInfo】判斷綠界傳送之RtnCode==2?(ATM),或是10100073(CVS)。
                    // 4.系統在Action【Paymeent/PostCardInfo】讀取對應訂單之CheckMacValue。
                    cmvm = await IOR.GetOrderCheckMacValue(model.MerchantTradeNo);

                    if (cmvm != null)
                    {
                        // 5.系統判斷4傳回值!=null。
                        if (cmvm.CheckMacValue != "")
                        {
                            // 6.系統判斷4傳回值之CheckMacValue!=""。
                            // 6-1.系統設定OrderStateId=2。
                            OrderStateId = 2;
                        }
                        else
                        {
                            // 6a.系統判斷4傳回值之CheckMacValue==""。
                            //  6a-1.系統設定OrderStateId=6。
                            OrderStateId = 6;
                            //  6a-2.回7。
                        }
                        // 7.系統變更訂單狀態。
                        int r = await IOR.UpdateOrderGreenATMCVS(cmvm.OrderId, OrderStateId, model.TradeDate, model.PaymentType, model.TradeAmt, model.TradeNo, model.BankCode, model.vAccount, model.ExpireDate, model.PaymentNo);

                        if (r == 0)
                        {
                            // 8-1.系統判斷7傳回值=0。
                            // 8-2.系統寄發己付款eMail。
                            System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
                            mail.To.Add(cmvm.eMail);
                            mail.From    = new System.Net.Mail.MailAddress($@"{IEC.SmtpUsername}@{IEC.SmtpServer}");
                            mail.Subject = "288訂購訊息";
                            mail.Body    = "您好,\n";
                            mail.Body   += $"您在288建立的訂單己付款完成({model.PaymentType}),訂單代碼為{cmvm.OrderId},<br>";
                            if (pay == "ATM")
                            {
                                mail.Body += $"您的ATM繳款帳號為{model.vAccount}<br>";
                            }
                            else if (pay == "CVS")
                            {
                                mail.Body += $"您的超商繳款代碼為{model.PaymentNo}<br>";
                            }
                            mail.Body      += $"若為會員,請至本平台會員中心查詢訂單處理狀態,<br>";
                            mail.Body      += $"若非會員,本平台會寄送eMail告知訂單處理狀況,<br>";
                            mail.Body      += $"288網址:http://288ibobo.com ,<br>";
                            mail.Body      += $"客服專線:04-28825252";
                            mail.Body      += $"288應謝您!";
                            mail.IsBodyHtml = true;
                            IES.SendMail(mail);
                            // 9系統回傳"1|OK"。
                            ret = "1|OK";
                        }
                        else if (r == 2)
                        {
                            // 8-1a.系統判斷7傳回值=2。
                            //  8-1a-1.系統設定傳回值=”1|特店訂單編號找不到”
                            ret = "1|特店訂單編號找不到";
                            //  8-1a-2.回10。
                        }
                        else
                        {
                            // 8-1a.系統判斷7傳回值!=0/2。
                            //  8-1a-1.系統設定傳回值=”0|特店系統內部錯誤”
                            ret = "0|特店系統內部錯誤";
                            //  8-1a-2.回10。
                        }
                    }
                    else
                    {
                        // 5a.系統判斷4傳回值==null。
                        //  5a-1.系統設定傳回值=”0|內部錯誤”。
                        ret = $@"0|特店系統內部錯誤";
                        //  5a-2.回10。
                    }
                }
                catch (Exception ex)
                {
                    // 8a.系統判斷7執行失敗。
                    //  8a-1.系統設定傳回值=”0|特店系統內部錯誤”
                    //  8a-2.回10。
                    ret = $@"0|特店系統內部錯誤";
                }
            }
            return(ret);
        }