/// <summary>
        /// 交易查询
        /// </summary>
        /// <param name="orderId">订单Id</param>
        /// <param name="payType">支付方式</param>
        /// <param name="studentId">下单的学生Id</param>
        /// <returns>如果订单支付成功返回true,否则返回false</returns>
        public bool OrderQuery(int orderId, CashPayTypeEnum payType, int studentId)
        {
            Yw_StudentOrder order = GetStudentOrder(orderId);
            if (order.Yod_StudentId.Equals(studentId))
            {
                bool result = false;
                //switch (payType)
                //{
                //    case CashPayTypeEnum.微信:
                //        WeChatApi weChatApi = new WeChatApi();
                //        string outTradeNo = GetOutTradeNo(order.Yod_OrderNo, order.Yod_PayBatchId);
                //        WechatQueryOrderResponse orderQueryResponse = weChatApi.OrderQuery("", orderId, outTradeNo);

                //        if ("SUCCESS".Equals(orderQueryResponse.TradeState))
                //        {
                //            //以接收微信支付通知为准,此处不再触发支付回调
                //            //OrderPayCallback(outTradeNo, payType, (decimal)(orderQueryResponse.TotalFee * 1.0 / 100));
                //            result = true;
                //        }
                //        break;
                //}
                result = order.Yod_Status.Equals((int)StudentOrderStatus.已支付);
                return result;

            }
            else
            {
                throw new AbhsException(ErrorCodeEnum.NoAuthorize, AbhsErrorMsg.ConstNoAuthorizeViewOrder);
            }
        }
        public int PreOrderPay(int orderId, int studentId, int[] voucherIds, CashPayTypeEnum payType)
        {
            string voucherStr = "";

            if (voucherIds != null && voucherIds.Length > 0)
            {
                voucherStr = String.Join(",", voucherIds);
            }

            var parems = new DynamicParameters();

            parems.Add("@OrderId", orderId);
            parems.Add("@StudentId", studentId);
            parems.Add("@VoucherIds", voucherStr);
            parems.Add("@CashPayType", (int)payType);
            parems.Add("@BatchId", 0, DbType.Int32, ParameterDirection.Output);

            int result = ExecuteProcScalar <int>("P_preorderpay", parems);

            if (result < 0)
            {
                throw new AbhsException(ErrorCodeEnum.ProcExecError, AbhsErrorMsg.ConstProcExecError, Convert.ToInt32(result));
            }

            int batchId = parems.Get <int>("@BatchId");

            return(batchId);
        }
        public void OrderPay(int orderId, int studentId, int[] voucherIds, CashPayTypeEnum payType, int originalBatchId, out decimal amount, out string orderNo)
        {
            string voucherStr = "";

            if (voucherIds != null && voucherIds.Length > 0)
            {
                voucherStr = String.Join(",", voucherIds);
            }

            var parems = new DynamicParameters();

            parems.Add("@OrderId", orderId);
            parems.Add("@StudentId", studentId);
            parems.Add("@VoucherIds", voucherStr);
            parems.Add("@CashPayType", (int)payType);
            parems.Add("@OriginalBatchId", originalBatchId);
            parems.Add("@Amount", 0, DbType.Decimal, ParameterDirection.Output);
            parems.Add("@OrderNo", "", DbType.String, ParameterDirection.Output);

            int result = ExecuteProcScalar <int>("P_orderpay", parems);

            decimal?amountValue = parems.Get <decimal?>("@Amount");

            amount  = amountValue._ToDecimal();
            orderNo = parems.Get <string>("@OrderNo");

            if (result < 0)
            {
                throw new AbhsException(ErrorCodeEnum.ProcExecError, AbhsErrorMsg.ConstProcExecError, Convert.ToInt32(result));
            }
        }
 /// <summary>
 /// 支付回调
 /// </summary>
 /// <param name="orderNo">经过编码的商户订单号</param>
 /// <param name="transactionId">交易流水号(微信支付订单号)</param>
 /// <param name="payType">付款方式</param>
 /// <param name="amount">实付金额(元)</param>
 public void OrderPayCallback(string orderNo, string transactionId, CashPayTypeEnum payType, decimal amount)
 {
     //如果是微信支付需要解析出真正的订单号
     if (CashPayTypeEnum.微信.Equals(payType))
     {
         orderNo = GetOrderNoAndBatchIdByOutTradeNo(orderNo).Item1;
     }
     Service.OrderPayCallback(orderNo, transactionId, payType, amount);
 }
Beispiel #5
0
        public JsonResult OrderQuery(int orderId, CashPayTypeEnum payType)
        {
            //当前登录用户
            LoginInfo studentInfo = GetCurrentUser();

            StudentOrderBll studentOrderBll = new StudentOrderBll();
            bool            result          = studentOrderBll.OrderQuery(orderId, payType, studentInfo.StudentId);

            return(Json(new JsonResponse <bool> {
                State = true, ErrorCode = 0, ErrorMsg = "", Data = result
            }, JsonRequestBehavior.AllowGet));
        }
        /// <summary>
        /// 支付成功回调
        /// </summary>
        /// <param name="orderNo">订单号</param>
        /// <param name="transactionId">交易流水号(微信支付订单号)</param>
        /// <param name="payType">支付方式</param>
        /// <param name="amount">实付款(元)</param>
        /// <returns>
        /// 返回处理结果
        /// 1 正常流程
        /// -1 重复通知支付结果,订单已经不是付款中的状态
        /// -2 应付款与实付款不一致
        /// </returns>
        public int OrderPayCallback(string orderNo, string transactionId, CashPayTypeEnum payType, decimal amount)
        {
            var parems = new DynamicParameters();

            parems.Add("@OrderNo", orderNo, DbType.String, ParameterDirection.Input);
            parems.Add("@TransactionId", transactionId, DbType.String, ParameterDirection.Input);
            parems.Add("@CashPayType", (int)payType, DbType.String, ParameterDirection.Input);
            parems.Add("@Amount", amount, DbType.Decimal, ParameterDirection.Input);
            int result = ExecuteScalar <int>("exec P_orderpaycallback @OrderNo,@TransactionId,@CashPayType,@Amount", parems);

            //1 正常流程
            //-1 微信重复通知支付结果,订单已经不是付款中的状态
            //-2 应付款与实付款不一致
            if (result < -1)
            {
                throw new AbhsException(ErrorCodeEnum.WechatPayNotifyError, AbhsErrorMsg.ConstWechatPayNotifyError, result);
            }

            return(result);
        }
 /// <summary>
 /// 订单支付,该方法暂时不用
 /// </summary>
 public void OrderPay(int orderId, int studentId, int[] voucherIds, CashPayTypeEnum payType, out decimal amount, out string orderNo)
 {
     int batchId = Service.PreOrderPay(orderId, studentId, voucherIds, payType);
     Service.OrderPay(orderId, studentId, voucherIds, payType, batchId, out amount, out orderNo);
     Service.OrderPayOver(orderNo);
 }