Example #1
0
        /// <summary>
        /// 获取单笔交易的详细信息
        /// </summary>
        /// <param name="sessionKey"></param>
        /// <param name="tid"></param>
        /// <param name="ErrorMsg"></param>
        /// <returns></returns>
        internal tbOrdersInfo GetTradeFullinfo(string sessionKey, string tid, int ShopId, out string ErrorMsg)
        {
            //show_ext 这个字段导致接口报错
            tbOrdersInfo newtrade = null;

            try
            {
                ErrorMsg = null;
                ITopClient client           = new DefaultTopClient(StaticSystemConfig.soft.ApiURL, StaticSystemConfig.soft.AppKey, StaticSystemConfig.soft.AppSecret, "json");
                TradeFullinfoGetRequest req = new TradeFullinfoGetRequest();
                req.Fields += "seller_nick, buyer_nick, title, type, created, tid, seller_rate, buyer_rate,";
                req.Fields += " status, payment, adjust_fee, post_fee, total_fee, pay_time, end_time, modified, ";
                req.Fields += "consign_time, buyer_obtain_point_fee, point_fee, real_point_fee, received_payment, commission_fee,";
                req.Fields += "seller_memo, alipay_no,alipay_id,buyer_message, pic_path, num_iid, num, price, ";
                req.Fields += "receiver_name, receiver_state, receiver_city, receiver_district, receiver_address,";
                req.Fields += "receiver_zip, receiver_mobile, receiver_phone,seller_flag, seller_alipay_no, seller_mobile, ";
                req.Fields += "seller_phone, seller_name, seller_email, available_confirm_fee, has_post_fee, timeout_action_time,";
                req.Fields += "snapshot_url, cod_fee, cod_status, shipping_type, trade_memo, buyer_email,buyer_area,";
                req.Fields += "trade_from,is_lgtype,is_force_wlb,is_brand_sale,buyer_cod_fee,discount_fee,seller_cod_fee,";
                req.Fields += "express_agency_fee,invoice_name,service_orders,credit_cardfee,step_trade_status,step_paid_fee,";
                req.Fields += "mark_desc,has_yfx,yfx_fee,yfx_id,yfx_type,trade_source,eticket_ext,send_time, is_daixiao,";
                req.Fields += "is_part_consign, arrive_interval, arrive_cut_time, consign_interval,zero_purchase,alipay_point,pcc_af,";
                req.Fields += "orders,promotion_details,invoice_name,orders.is_www,orders.store_code,service_tags";
                if (!string.IsNullOrEmpty(tid))
                {
                    req.Tid = long.Parse(tid);
                }
                else
                {
                    ErrorMsg = "订单编号不能为空";
                    return(null);
                }
                TradeFullinfoGetResponse response = client.Execute(req, sessionKey);
                if (response.IsError)
                {
                    ErrorMsg = response.SubErrMsg;
                    return(null);
                }
                else
                {
                    Top.Api.Domain.Trade trade = new Top.Api.Domain.Trade();
                    newtrade = new tbOrdersInfo();
                    //订单信息转化
                    newtrade = ChangeLocationType(response.Trade, ShopId);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(newtrade);
        }
Example #2
0
        /// <summary>
        /// 将淘宝的交易信息转化为本地类型
        /// </summary>
        /// <param name="trade"></param>
        /// <returns></returns>
        private tbOrdersInfo ChangeLocationType(Top.Api.Domain.Trade trade, int ShopId)
        {
            try
            {
                tbOrdersInfo          newtrade  = new tbOrdersInfo();
                tbConsigneeInfo       Consignee = new tbConsigneeInfo();
                tbBuyerInfo           Buyer     = new tbBuyerInfo();
                List <tbOrdersDetail> Details   = new List <tbOrdersDetail>();

                if (!String.IsNullOrEmpty(trade.PayTime))
                {
                    newtrade.PayDate = Convert.ToDateTime(Comm.DataChange(trade.PayTime, TypeChange.DATETIME));//付款时间
                }
                else
                {
                    newtrade.PayDate = DateTime.Now;
                }

                newtrade.CustomerServiceId = 1;
                newtrade.CashOndelivery    = false;
                newtrade.Invoice           = false;
                newtrade.NickName          = trade.BuyerNick.Trim();      //会员名
                Buyer.NickName             = trade.BuyerNick.Trim();      //会员名
                newtrade.Commission        = Convert.ToDecimal(Comm.DataChange(trade.CommissionFee, TypeChange.DECIMAL));
                newtrade.OrdersOutNumber   = trade.Tid.ToString().Trim(); //淘宝订单号
                newtrade.Logistics         = new Logistic();

                newtrade.LogisticsStr  = trade.ShippingType;//暂存物流
                newtrade.OrdersFreight = Convert.ToInt32(Comm.DataChange(trade.PostFee, TypeChange.DECIMAL));

                newtrade.OrdersProductTotal = Convert.ToDecimal(Comm.DataChange(trade.TotalFee, TypeChange.DECIMAL));  //商品总金额
                newtrade.OrdersDate         = Convert.ToDateTime(Comm.DataChange(trade.Created, TypeChange.DATETIME)); //交易创建时间
                Consignee.Name             = Comm.DataChange(trade.ReceiverName, TypeChange.STRING).ToString();        //收件人姓名
                Buyer.BuyerName            = Consignee.Name;
                Consignee.OrdersNumber     = trade.Tid == null ? "" : trade.Tid.ToString();
                Consignee.Provice          = Comm.DataChange(trade.ReceiverState, TypeChange.STRING).ToString();    //收件人所在省
                Consignee.City             = Comm.DataChange(trade.ReceiverCity, TypeChange.STRING).ToString();     //收件人所在市
                Consignee.District         = Comm.DataChange(trade.ReceiverDistrict, TypeChange.STRING).ToString(); //收件人所在区
                Consignee.ConsigneeAddress = Comm.DataChange(trade.ReceiverAddress, TypeChange.STRING).ToString();  //收件人地址
                Consignee.PostCode         = Comm.DataChange(trade.ReceiverZip, TypeChange.STRING).ToString();      //收件人邮编
                Consignee.Mobile           = Comm.DataChange(trade.ReceiverMobile, TypeChange.STRING).ToString();   //收件人手机
                Buyer.Mobile    = Consignee.Mobile;
                Consignee.Phone = Comm.DataChange(trade.ReceiverPhone, TypeChange.STRING).ToString();               //收件人电话
                Buyer.Phone     = Consignee.Phone;
                newtrade.Status = new tbOrdersStatus()
                {
                    OrdersStatusId = 3
                };                                                                                       //订单状态(默认买家已付款,等待卖家发货状态)
                decimal Payment = Convert.ToDecimal(Comm.DataChange(trade.Payment, TypeChange.DECIMAL)); //订单实收金额
                newtrade.OrdersAccounts  = Payment;
                newtrade.OrdersPaid      = Payment;
                newtrade.IsOrdersReFund  = false;                                                                      //是否有退款
                newtrade.OrdersDiscount  = newtrade.OrdersPaid - newtrade.OrdersProductTotal - newtrade.OrdersFreight; //订单折扣
                newtrade.OrdersWeight    = 0;
                newtrade.OrdersNotes     = "";
                newtrade.OrdersFlag      = "0";
                newtrade.OrdersInputDate = DateTime.Now;
                Consignee.InputDate      = newtrade.OrdersInputDate;
                //买家留言&卖家备注&备注旗帜&邮件地址
                newtrade.ServiceNotes = trade.SellerMemo;                                                     //客服备注
                newtrade.ServiceFlag  = trade.SellerFlag.ToString();                                          //客服备注旗帜样式
                newtrade.BuyerMsg     = string.IsNullOrEmpty(trade.BuyerMessage) ? "" : trade.BuyerMessage;   //买家留言
                Buyer.BuyerEmail      = trade.BuyerEmail;
                newtrade.CodFee       = Convert.ToDecimal(Comm.DataChange(trade.CodFee, TypeChange.DECIMAL)); //货到付款服务费
                newtrade.BuyerRemark  = "";
                newtrade.DeliveryDate = "";
                newtrade.RemarkFlag   = "";
                newtrade.Shop         = new tbShopInfo()
                {
                    ShopId = ShopId
                };
                if (trade.Orders != null)
                {
                    foreach (Top.Api.Domain.Order order in trade.Orders)
                    {
                        if (Convert.ToInt32(order.Num) <= 0)
                        {
                            continue;
                        }

                        tbOrdersDetail Detail = new tbOrdersDetail();
                        Detail.OrdersNumber      = trade.Tid.ToString();
                        Detail.ProductEncoding   = !String.IsNullOrEmpty(order.OuterSkuId) ? order.OuterSkuId.Trim() : "";
                        Detail.ProductName       = !String.IsNullOrEmpty(order.Title) ? order.Title.Trim() : "";
                        Detail.ProductSku        = !String.IsNullOrEmpty(order.SkuPropertiesName) ? order.SkuPropertiesName.Trim() : "";
                        Detail.ProductId         = Convert.ToInt32(order.NumIid);
                        Detail.ProductProId      = 0;
                        Detail.SalesCommissionId = 1;
                        Detail.ProductImg        = String.IsNullOrEmpty(order.PicPath) ? "" : order.PicPath.Trim();        //商品图片
                        Detail.ProductPrice      = Convert.ToDecimal(Comm.DataChange(order.Price, TypeChange.DECIMAL));    //商品价格
                        Detail.ProductNumber     = (int)order.Num;                                                         //商品数量
                        Detail.PackageName       = String.IsNullOrEmpty(order.ItemMealName) ? "" : order.ItemMealName;     //商品套餐值
                        Detail.OutNumberIId      = order.NumIid == null ? "" : order.NumIid.ToString();                    //商品外部编号
                        Detail.SubOrderNumber    = order.Oid.ToString() == null ? "" : order.Oid.ToString();               //子订单编号
                        Detail.InputDate         = newtrade.OrdersInputDate;
                        Detail.ProductTotal      = Convert.ToDecimal(Comm.DataChange(order.TotalFee, TypeChange.DECIMAL)); //商品总价
                        Detail.Details           = "";
                        Detail.ProductCost       = 0;
                        Detail.OrdersDiscount    = Convert.ToDecimal(Comm.DataChange(order.DiscountFee, TypeChange.DECIMAL)); //优惠金额;
                        Detail.OrdersAdjust      = Convert.ToDecimal(Comm.DataChange(order.AdjustFee, TypeChange.DECIMAL));   //手动调整金额;
                        Detail.OrdersAccounts    = Detail.ProductTotal;

                        //订单被取消
                        if (order.Status == "TRADE_CLOSED_BY_TAOBAO")
                        {
                            Detail.IsCanceled = true;
                        }

                        //商品退款
                        if (order.RefundId == 0)
                        {
                            Detail.ReFundNumber     = "";
                            Detail.IsProductReFund  = false;
                            Detail.ReFundStatusId   = 0;
                            Detail.ReFundStatusName = order.RefundStatus;
                        }
                        else
                        {
                            Detail.ReFundNumber     = order.RefundId.ToString();
                            Detail.IsProductReFund  = true;
                            newtrade.IsOrdersReFund = true;
                            Detail.ReFundStatusId   = 0;
                            Detail.ReFundStatusName = "";
                        }

                        Details.Add(Detail);
                    }
                }

                newtrade.Consignee = Consignee;
                newtrade.Details   = Details;
                newtrade.Buyer     = Buyer;
                return(newtrade);
            }
            catch (Exception ex)
            {
                throw;
            }
        }