示例#1
0
        public static string MakeAliPayOrder(string companyId, AlipayTradeOrderModel model)
        {
            try
            {
                AliPayApiConfig config = AliPayApiConfigServices.QueryAliPayConfig(companyId);
                if (config == null)
                {
                    throw new MyException("获取支付宝配置失败");
                }

                string aliPayNotifyUrl           = string.Format("{0}/AliPayNotify", config.SystemDomain);
                AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();
                request.BizContent = JsonHelper.GetJsonString(model);
                request.SetNotifyUrl(aliPayNotifyUrl);
                AlipayTradeCreateResponse response = GetDefaultAopClient(companyId).Execute(request);
                if (response.IsError)
                {
                    TxtLogServices.WriteTxtLogEx("AliPayApiServices", string.Format("统一下单失败1:{0}", response.Body));
                    return("");
                }
                return(response.TradeNo);
            }
            catch (Exception ex)
            {
                TxtLogServices.WriteTxtLogEx("AliPayApiServices", string.Format("统一下单失败2:{0}", ex.Message));
            }
            return("");
        }
示例#2
0
        /// <summary>
        /// 构造支付请求数据
        /// </summary>
        /// <returns>请求数据集</returns>
        private static AlipayTradePayContentBuilder BuildPayContent(AlipayTradeOrderModel model)
        {
            //线上联调时,请输入真实的外部订单号。
            string out_trade_no = model.out_trade_no;

            //扫码枪扫描到的用户手机钱包中的付款条码
            AlipayTradePayContentBuilder builder = new AlipayTradePayContentBuilder();

            //收款账号
            builder.seller_id = model.seller_id;
            //订单编号
            builder.out_trade_no = out_trade_no;
            //支付场景,无需修改
            builder.scene = "bar_code";
            //支付授权码,付款码
            builder.auth_code = model.buyer_id;
            //订单总金额
            builder.total_amount = model.total_amount;
            //参与优惠计算的金额
            builder.discountable_amount = model.discountable_amount;
            //不参与优惠计算的金额
            builder.undiscountable_amount = model.undiscountable_amount;
            //订单名称
            builder.subject = model.subject;
            //自定义超时时间
            builder.timeout_express = "10m";
            //订单描述
            builder.body = model.body;
            //门店编号,很重要的参数,可以用作之后的营销
            builder.store_id = model.store_id;
            //操作员编号,很重要的参数,可以用作之后的营销
            builder.operator_id = "HAND";


            //传入商品信息详情
            List <GoodsInfo> gList = new List <GoodsInfo>();

            GoodsInfo goods = new GoodsInfo();

            goods.goods_id   = "";
            goods.goods_name = model.body;
            goods.price      = model.total_amount;
            goods.quantity   = "1";
            gList.Add(goods);
            builder.goods_detail = gList;

            //系统商接入可以填此参数用作返佣
            //ExtendParams exParam = new ExtendParams();
            //exParam.sysServiceProviderId = "20880000000000";
            //builder.extendParams = exParam;

            return(builder);
        }
示例#3
0
        public static bool Run(OnlineOrder order, out string sDataInfo)
        {
            sDataInfo = "";

            string parkid = order.PKID;
            AlipayTradeOrderModel model = new AlipayTradeOrderModel();

            model.out_trade_no          = order.OrderID.ToString();
            model.total_amount          = order.Amount.ToString("F2");
            model.discountable_amount   = "";
            model.undiscountable_amount = "";
            model.seller_id             = order.PayeeAccount;
            model.buyer_logon_id        = "";
            model.subject  = order.PKName + "," + order.PlateNo + "," + order.EntranceTime.ToString("yyyy-MM-dd HH:mm:ss");
            model.buyer_id = order.PayAccount;
            model.store_id = parkid;
            model.body     = string.Format("临停缴费-{0}-{1}", order.PKName, order.PlateNo);
            TxtLogServices.WriteTxtLogEx("AliPayApiServices", JsonHelper.GetJsonString(model));
            string tradeNo = AliPayApiServices.BarCodePayOrder(order.CompanyID, model);

            if (string.IsNullOrWhiteSpace(tradeNo))
            {
                return(false);
            }

            if (tradeNo.Length > 2)
            {
                sDataInfo = tradeNo;
                return(true);
            }

            int queryTimes = 10;//查询次数计数器

            while (queryTimes-- > 0)
            {
                bool isSuc = Query(order.CompanyID, order.OrderID.ToString());
                if (isSuc)
                {
                    sDataInfo = tradeNo;
                    return(true);
                }
            }

            return(false);
        }
示例#4
0
        public static string BarCodePayOrder(string companyId, AlipayTradeOrderModel model)
        {
            try
            {
                AliPayApiConfig config = AliPayApiConfigServices.QueryAliPayConfig(companyId);
                if (config == null)
                {
                    throw new MyException("获取支付宝配置失败");
                }

                IAlipayTradeService serviceClient = GetDefaultF2FClient(companyId);

                AlipayTradePayContentBuilder builder = BuildPayContent(model);
                string out_trade_no = builder.out_trade_no;

                AlipayF2FPayResult payResult = serviceClient.tradePay(builder);

                TxtLogServices.WriteTxtLogEx("AliPayApiServices", string.Format("F2F支付:{0}\r\nResult:{1}", builder.ToXml(Encoding.GetEncoding("GB2312")), payResult.response.Body));
                switch (payResult.Status)
                {
                case ResultEnum.SUCCESS:
                    return(payResult.response.TradeNo);

                case ResultEnum.FAILED:
                    return("");

                case ResultEnum.UNKNOWN:
                    return("-1");
                }
            }
            catch (Exception ex)
            {
                TxtLogServices.WriteTxtLogEx("AliPayApiServices", string.Format("统一下单失败2:{0}", ex.Message));
            }

            return("-2");
        }
示例#5
0
        private string MakeAlipayTradeOrder(OnlineOrder order)
        {
            string parkid = string.Empty;
            AlipayTradeOrderModel model = new AlipayTradeOrderModel();

            model.out_trade_no          = order.OrderID.ToString();
            model.total_amount          = order.Amount.ToString("F2");
            model.discountable_amount   = "";
            model.undiscountable_amount = "";
            model.seller_id             = order.PayeeAccount;
            model.buyer_logon_id        = "";
            model.subject  = order.PKName + "," + order.PlateNo + "," + order.EntranceTime.ToString("yyyy-MM-dd HH:mm:ss");
            model.buyer_id = order.PayAccount;
            model.store_id = parkid;
            model.body     = string.Format("临停缴费-{0}-{1}", order.PKName, order.PlateNo);
            TxtLogServices.WriteTxtLogEx("AliPayApiServices", JsonHelper.GetJsonString(model));
            string tradeNo = AliPayApiServices.MakeAliPayOrder(order.CompanyID, model);

            if (string.IsNullOrWhiteSpace(tradeNo))
            {
                throw new MyException("创建交易订单失败");
            }
            return(tradeNo);
        }