2017-11-13 4 views
0

그래서 비공식 eBay PHP SDK를 사용하고 배송 정보를 업데이트하면 문제가 없습니다. 그러나 페이지가 마침내 반응하기까지 문자 그대로 약 1 ~ 2 시간이 걸립니다. 일부 디버깅 후 진행 추적기가 문제인 것으로 보입니다. 5/6 초마다 'InProcess'상태를 확인합니다. 이것은 약 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

이해가되지 않는 부분이 있습니다. 하나의 주문 만 업데이트하는 경우 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 초 정도 걸립니다. 한 가지는 분명합니다.

$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

사용하고있는 전체 전화로 내 대답을 편집했습니다. 도움이 필요하면 기꺼이 Skype 나 뭔가 ... 구현하는데 몇 분 밖에 걸리지 않습니다. – Jocker

관련 문제