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);
所以我正在使用非官方的 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);