【问题标题】:Requesting many tracking numbers with Fedex SOAP API with PHP使用 Fedex SOAP API 和 PHP 请求多个跟踪号
【发布时间】:2013-10-29 17:47:36
【问题描述】:

我希望将所有 Fedex 追踪信息缓存在我自己的数据库中,我的公司每天有大约 150 多个追踪号码。根据这个链接...

   http://www.fedex.com/us/developer/product/WebServices/MyWebHelp_August2010/Content/Proprietary_Developer_Guide/tTracking_and_Visibility_Services_condtionalized.htm

Fedex 服务不支持批处理..?这是否意味着我需要为每个跟踪号打一次电话?我花了大约 80 秒的时间来完成一天的销售……

目前没有更好的选择吗?或者有没有更好的方法或流程来做到这一点?

【问题讨论】:

    标签: php soap fedex


    【解决方案1】:

    使用此代码希望对您有所帮助

    TrackRequest request = CreateFedexMultipleTrackRequest(TrackingCode);
     TrackService service = new TrackService();
     TrackReply reply = service.track(request);
     if (reply.HighestSeverity == NotificationSeverityType.SUCCESS || reply.HighestSeverity == NotificationSeverityType.NOTE || reply.HighestSeverity == NotificationSeverityType.WARNING)
     {
       reply.CompletedTrackDetails//now manage All tracking As Your Need
     }
     //go to How to create single request for multiple tracking numbers at a time
     private static TrackRequest CreateFedexMultipleTrackRequest(string TrackingNumber)
        {
            //string[] str = new string[] {TrackingNumber};
            string[] staticIntArray = TrackingNumber.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
            //int arraycount = staticIntArray.Count();
            TrackRequest request = new TrackRequest();
            request.WebAuthenticationDetail = new WebAuthenticationDetail();
            request.WebAuthenticationDetail.UserCredential = new WebAuthenticationCredential();
            request.WebAuthenticationDetail.UserCredential.Key = Application.FedexKey;
            request.WebAuthenticationDetail.UserCredential.Password = Application.FedexPassword;
            request.WebAuthenticationDetail.ParentCredential = new WebAuthenticationCredential();
            request.WebAuthenticationDetail.ParentCredential.Key = Application.FedexKey;
            request.WebAuthenticationDetail.ParentCredential.Password = Application.FedexPassword;
            request.ClientDetail = new ClientDetail();
            request.ClientDetail.AccountNumber = Application.FedexAccountNumber;
            request.ClientDetail.MeterNumber = Application.FedexMeterNumber;
            request.TransactionDetail = new TransactionDetail();
            request.TransactionDetail.CustomerTransactionId = "NA";  //This is a reference field for the customer.  Any value can be used and will be provided in the response.
            request.Version = new VersionId();
            // Tracking information
            request.SelectionDetails = new TrackSelectionDetail[staticIntArray.Length];
            for (int j = 0; j <= staticIntArray.Length - 1; j++) { request.SelectionDetails[j] = new TrackSelectionDetail(); }
            for (int i = 0; i <= staticIntArray.Length - 1; i++)
            {
                request.SelectionDetails[i].PackageIdentifier = new TrackPackageIdentifier();
                request.SelectionDetails[i].PackageIdentifier.Value = staticIntArray[i]; //tracking number or door tag
                request.SelectionDetails[i].PackageIdentifier.Type = TrackIdentifierType.DOCUMENT_AIRWAY_BILL;
                request.SelectionDetails[i].ShipmentAccountNumber = "XXX";
                // Date range is optional.
                // If omitted, set to false
                request.SelectionDetails[i].ShipDateRangeBegin = DateTime.Parse("05/09/2016"); //MM/DD/YYYY
                request.SelectionDetails[i].ShipDateRangeEnd = request.SelectionDetails[0].ShipDateRangeBegin.AddDays(0);
                request.SelectionDetails[i].ShipDateRangeBeginSpecified = true;
                request.SelectionDetails[i].ShipDateRangeEndSpecified = true;
            }
            // Include detailed scans is optional.
            // If omitted, set to false
            request.ProcessingOptions = new TrackRequestProcessingOptionType[1];
            request.ProcessingOptions[0] = TrackRequestProcessingOptionType.INCLUDE_DETAILED_SCANS;
            return request;
        }
    

    //你可以在fedex中一次追踪30个号码

    【讨论】:

    • 我正在 API 中寻找一个方法调用,用于在不指定跟踪号的情况下按修改日期跟踪我们帐户的所有包裹。我们希望将他们的包裹跟踪与我们这边的数据整合起来。
    【解决方案2】:

    是的,您需要将每个曲目作为单独的请求发送。通过计划将其作为服务器端进程运行,谁在乎需要多长时间!?

    【讨论】:

    • 这是我做这个的时候得出的结论……我会把它标记为anwser。
    • 如果需要即时使用,您可以使用他们的网站,其网址为 fedex.com/apps/fedextrack/…,其中 X、Y、Z 是跟踪号码数字
    猜你喜欢
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    相关资源
    最近更新 更多