2017-11-13 5 views
0

私は非公式のeBay PHP SDKを使用しており、出荷情報の更新はうまくいきます。しかし、最終的に応答するには、文字通り約1時間半かかることになります。いくつかのデバッグの後、進捗トラッカーが問題であるようです。 5/6秒ごとにステータスをチェックします。ステータスは「InProcess」です。これは1分以上におよぶ11回ぐらいチェックされます。私の質問は、それは1つの注文のために宅配便の名前と追跡番号を更新するために長い時間がかかりますか?eBay PHP SDK(unoffical)SetShipmentTracking Sooo Longを利用する

これは、ステータス

 $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; 
     } 
    } 

は、スクリプト全体を掲示することは有用である可能性があるなら、私に知らせて取得するコードの一部です。

ありがとうございました

答えて

-1

私には分かりません。 1つの注文だけを更新する場合、なぜ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); 

を使用することができ、その後、あなたはそれが更新されたかどうか確認するためにACKを確認することができます。

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

これは私の注文にトラッキングを更新するために使用しているもので、1秒、おそらく2秒かかります。 1つのことは非常に明確です。 1件のオーダーを更新する長いものを取るべきではありません...

これは私が使用する全体の呼び出しです:私はそれを理解していないので、あなたはそれを理解していない理由がある

$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); 
+0

!!笑。それは言うまでもなく、これは正しい方法のように見えるので、できるだけ早くそれを試してみてください。ありがとう – Kobi

+0

可能であれば、残りのページを表示できますか? – Kobi

+0

私は、私が使用している電話全体で自分の答えを編集しました。もしあなたが助けを必要とするなら、私は喜んであなた、または何かをスカイプするでしょう...それを実装するのに数分かかるでしょう。 – Jocker

関連する問題