ebay PHP SDK(非官方)设置发货跟踪时间过长

ebay PHP SDK (unoffical) SetShipmentTracking Taking Sooo Long

所以我正在使用非官方的 ebay PHP SDK 并且更新发货信息工作正常。然而,页面最终响应需要很长时间,实际上大约需要一分半钟。经过一些调试后,进度跟踪器似乎是问题所在。每 5 / 6 秒检查一次状态,即 'InProcess'。这被检查了大约 11 次,总计超过一分钟。我的问题是,更新一个订单的跟踪快递名称和跟踪号码是否需要那么长时间?

这是获取状态的代码部分

     $getJobStatusRequest = new BulkDataExchange\Types\GetJobStatusRequest();
     $getJobStatusRequest->jobId = $createUploadJobResponse->jobId;
     $done = false;
     while (!$done) {
         $getJobStatusResponse = $exchangeService->getJobStatus($getJobStatusRequest);
         if (isset($getJobStatusResponse->errorMessage)) {
             foreach ($getJobStatusResponse->errorMessage->error as $error) {
                 printf(
                     "%s: %s\n\n",
                     $error->severity === BulkDataExchange\Enums\ErrorSeverity::C_ERROR ? 'Error' : 'Warning',
                     $error->message
                 );
             }
         }
         if ($getJobStatusResponse->ack !== 'Failure') {
             printf("Status is %s\n".' ** TIME: '.date('H:i:s').'. **', $getJobStatusResponse->jobProfile[0]->jobStatus);
             switch ($getJobStatusResponse->jobProfile[0]->jobStatus) {
                 case BulkDataExchange\Enums\JobStatus::C_COMPLETED:
                     $downloadFileReferenceId = $getJobStatusResponse->jobProfile[0]->fileReferenceId;
                     $done = true;
                     break;
                 case BulkDataExchange\Enums\JobStatus::C_ABORTED:
                 case BulkDataExchange\Enums\JobStatus::C_FAILED:
                     $done = true;
                     break;
                 default:
                     sleep(5);
                     break;
             }
         } else {
             $done = true;
         }
     }

如果发布整个脚本可能有用,请告诉我。

谢谢

有些事情我不明白。如果您只更新一个订单,为什么要使用 BulkDataExchange?为什么不直接使用 Trading\Types\CompleteSaleRequestType? 在那里你可以使用

...
$request->Shipment = new Trading\Types\ShipmentType();
$data = new Trading\Types\ShipmentTrackingDetailsType();
$data->ShipmentTrackingNumber = $track;
$data->ShippingCarrierUsed = $carrier;
$request->Shipment->ShipmentTrackingDetails = [$data];
$response = $service->CompleteSale($request);

然后你可以检查确认是否更新了。

if($response->Ack != 'Failure'){
    // Failed
} else {
    // Updated. There might be warnings (The Ack would be Warning)
}

这就是我用来更新订单跟踪的方法,它需要 1 秒,也许 2 秒。 有一点很清楚。更新一个订单应该不会花那么长时间...

这是我使用的整个调用:

$service = new TradingServices\TradingService([
        'credentials' => [
                'appId'     => 'MY_APP_ID',
                'devId'     => 'MY_DEV_ID',
                'certId'    => 'MY_CERT_ID',
        ],
        'sandbox'   => false,
        'siteId'    => $siteId,
    ]);
    $request = new TradingTypes\CompleteSaleRequestType();
    $request->RequesterCredentials = new TradingTypes\CustomSecurityHeaderType();
    $request->RequesterCredentials->eBayAuthToken = $token;

    $request->ItemID = $itemid;
    $request->Shipped = true;
    $request->TransactionID = $transid;

    if( (!empty( $track ) ) && !empty( $shipper ) ){
        $request->Shipment = new TradingTypes\ShipmentType();
        $data = new TradingTypes\ShipmentTrackingDetailsType();
        $data->ShipmentTrackingNumber = $track;
        $data->ShippingCarrierUsed = $shipper;
        $request->Shipment->ShipmentTrackingDetails = [$data];
    }
    $response = $service->CompleteSale($request);