Esempio n. 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                Log.Debug("*随笔付异步回调参数********************************");
                Log.Debug(SbfHelper.GetRequestData());

                //商户Id
                string pUserId = SbfHelper.Trim(Request["P_UserId"]);
                //订单号
                string pOrderId = SbfHelper.Trim(Request["P_OrderId"]);
                //银行卡和密码
                string pCardId   = SbfHelper.Trim(Request["P_CardId"]);
                string pCardPass = SbfHelper.Trim(Request["P_CardId"]);
                //支付金额
                string pFaceValue = SbfHelper.Trim(Request["P_FaceValue"]);
                string pPrice     = SbfHelper.Trim(Request["P_Price"]);
                //支付方式
                string pChannelId = SbfHelper.Trim(Request["P_ChannelId"]);
                //商品名称
                string pSubject     = SbfHelper.Trim(Request["P_Subject"]);
                string pDescription = SbfHelper.Trim(Request["P_Description"]);
                string pNotic       = SbfHelper.Trim(Request["P_Notic"]);
                //商品数量
                string pQuantity = SbfHelper.Trim(Request["P_Quantity"]);
                //支付金额
                string pPayMoney = SbfHelper.Trim(Request["P_PayMoney"]);
                //错误信息
                string pErrCode = SbfHelper.Trim(Request["P_ErrCode"]);

                //签名认证串
                string pPostKey     = SbfHelper.Trim(Request["P_PostKey"]);
                string preEncodeStr = pUserId + "|" + pOrderId + "|" + pCardId + "|" + pCardPass + "|" + pFaceValue + "|" + pChannelId + "|" + SbfHelper.SBF_USER_KEY;
                string encodeStr    = SbfHelper.GetMD5(preEncodeStr, "gb2312");

                //if (pPostKey.CompareTo(encodeStr) == 0)
                //{
                //Response.Write("errCode=0");//表示数据合法
                if (int.Parse(pErrCode) == 0)    //说明是充值成功了的
                {
                    if (new UserChargeDAL().Update(pOrderId) == false)
                    {
                        Log.ErrorFormat("更新系统支付订单失败,订单号: {0}", pOrderId);
                        Response.Write("更新系统支付订单失败");
                    }
                    else
                    {
                        Log.InfoFormat("支付成功,订单号: {0}", pOrderId);
                        Response.Write("支付成功");
                    }
                }
                //}
                //else
                //{
                //    Log.ErrorFormat("第三方支付失败,订单号: {0}", pOrderId);
                //    Response.Write("第三方支付失败");
                //}
            }
            catch (Exception ex)
            {
                Log.ErrorFormat("支付失败: {0}", ex);
                Response.Write(ex.Message);
            }
        }
Esempio n. 2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                //用户Id
                string userId = SbfHelper.Trim(Request["userId"]);
                //支付方式唯一识别码Code
                string code        = SbfHelper.Trim(Request["setCode"]);
                int    chargeSetId = new Lottery.DAL.Flex.UserBankDAL().GetIphoneChargeSetByCode(code);

                #region 组装随笔付参数
                //商户Id
                string pUserId = SbfHelper.SBF_USER;
                //用户订单号
                string pOrderId = SbfHelper.Trim(Request["orderId"]);
                if (String.IsNullOrEmpty(pOrderId))
                {
                    throw new Exception("支付订单无效");
                }

                //银行卡和密码
                string pCardId   = string.Empty;
                string pCardPass = string.Empty;

                //支付金额
                decimal amount;
                if (Decimal.TryParse(SbfHelper.Trim(Request["amount"]), out amount) == false)
                {
                    throw new Exception("支付金额无效");
                }

                //amount = 0.01M;
                string pFaceValue = amount.ToString();
                string pPrice     = amount.ToString();

                //支付方式: 移动微信或支付宝
                string          bank       = SbfHelper.Trim(Request["bank"]);
                ChannelMapModel channelMap = SbfHelper.GetChannelMap(bank);

                if (channelMap == null)
                {
                    throw new Exception("支付方式不支持");
                }

                string pChannelId   = channelMap.SbfCode; //随笔付支付类型Id
                string pChannelCode = channelMap.SbfCode; //随笔付支付类型码


                //商品名称
                string pSubject     = "随笔付支付";
                string pDescription = "随笔付支付" + bank;
                string pNotic       = "随笔付支付";
                //商品数量
                string pQuantity = "1";

                //回调页面
                string pResult_url = SbfHelper.GetUrl("result.aspx");
                string pNotify_url = SbfHelper.GetUrl("notify.aspx");

                //签名认证串
                string preEncodeStr = pUserId + "|" + pOrderId + "|" + pCardId + "|" + pCardPass + "|" + pFaceValue + "|" + pChannelId + "|" + SbfHelper.SBF_USER_KEY;
                string pPostKey     = SbfHelper.GetMD5(preEncodeStr, "gb2312");

                //组装请求参数
                StringBuilder pars = new StringBuilder();
                pars.AppendFormat("P_UserId={0}", pUserId);
                pars.AppendFormat("&P_OrderId={0}", pOrderId);
                pars.AppendFormat("&P_CardId={0}", pCardId);
                pars.AppendFormat("&P_CardPass={0}", pCardPass);
                pars.AppendFormat("&P_FaceValue={0}", pFaceValue);
                pars.AppendFormat("&P_ChannelId={0}", pChannelId);
                pars.AppendFormat("&P_Subject={0}", pSubject);
                pars.AppendFormat("&P_Price={0}", pPrice);
                pars.AppendFormat("&P_Quantity={0}", pQuantity);
                pars.AppendFormat("&P_Description={0}", pDescription);
                pars.AppendFormat("&P_Notic={0}", pNotic);
                pars.AppendFormat("&P_Result_url={0}", pResult_url);
                pars.AppendFormat("&P_Notify_url={0}", pNotify_url);
                pars.AppendFormat("&channelID={0}", pChannelCode);
                pars.AppendFormat("&P_PostKey={0}", pPostKey);
                #endregion

                //支付API
                string gateway = SbfHelper.SBF_API;

                Log.Info(String.Format("开始支付,订单号: {0}", pOrderId));
                Log.Debug("*系统支付参数********************************");
                Log.Debug(SbfHelper.GetRequestData());

                //支付
                int num = (new UserChargeDAL()).Save(userId, pOrderId, chargeSetId.ToString(), bank, Convert.ToDecimal(pPrice));

                //成功
                if (num == -1)
                {
                    Log.Error("充值金额不能小于最小充值金额!");
                    Response.Write("充值金额不能小于最小充值金额!");
                }
                //失败
                else if (num > 0)
                {
                    Log.Info(String.Format("开始请求第三方支付: {0}?{1}", gateway, pars.ToString()));
                    Response.Redirect(String.Format("{0}?{1}", gateway, pars.ToString()), false); //页面调转
                }
            }
            catch (Exception ex)
            {
                Log.ErrorFormat("支付失败: {0}", ex);
                Response.Write(ex.Message);
            }
        }