我在Github的这个销售合作伙伴API库中做错了什么?

发布于 2025-02-09 16:18:06 字数 3360 浏览 2 评论 0原文

我正在使用Amazon销售合作伙伴API的商人履行部分,该部分在

​但是我正在使用相同的技术,而商人履行API不起作用。我回来的响应表明它没有收到我发送的数据。

我在做什么错?

// North America Live
$NA = [
    'url' => 'https://sellingpartnerapi-na.amazon.com',
    'region' => 'us-east-1',
];

// North America Sandbox
// $NA = [
//  'url' => 'https://sandbox.sellingpartnerapi-na.amazon.com',
//  'region' => 'us-east-1',
// ];
    
$config = new SellingPartnerApi\Configuration([
    "lwaClientId" => $lwaClientId,
    "lwaClientSecret" => $lwaClientSecret,
    "lwaRefreshToken" => $lwaRefreshToken,
    "awsAccessKeyId" => $awsAccessKeyId,
    "awsSecretAccessKey" => $awsSecretAccessKey,
    "endpoint" => $NA  // or another endpoint from lib/Endpoint.php
]); 

$apiInstance = new SellingPartnerApi\Api\MerchantFulfillmentApi($config);

$body = new \SellingPartnerApi\Model\MerchantFulfillment\GetEligibleShipmentServicesRequest(
[
    "shipment_request_details"  =>  
        [
        "amazon_order_id" => "XXX-XXXXXXXX-XXXXXXXX",
        "item_list" => 
            [
            "order_item_id" => "XXXXXXXXXXXXXXX",
            "quantity" => 1,
            ],
        "ship_from_address" => 
            [
            "name" => "XXXXXXX",
            "address_line1" => "XXXXXXXXXX",    
            "email" => "[email protected]",
            "city" => "XXXXXXXXX",
            "postal_code" => "XXXXXX",
            "country_code" => "US",
            "phone" => "XXXXXXXXXXXX",  
            ],
        "weight" => 
            [
            "value" => 7,
            "unit" => "oz",  
            ],
        "shipping_service_options" => 
            [
            "delivery_experience" => "DeliveryConfirmationWithSignature",  
            "carrier_will_pick_up" => true,  
            ]
        ]   
]
);
try {
    $result = $apiInstance->getEligibleShipmentServices($body);
    d($result);
} catch (Exception $e) {
    echo "<PRE>";
    echo 'Exception when calling MerchantFulfillmentV0Api->getEligibleShipmentServices: <BR>', wordwrap($e->getMessage(),80,"<br>\n",TRUE), PHP_EOL;
    echo "</PRE>";
}

我回来的$响应是:

Exception when calling MerchantFulfillmentV0Api->getEligibleShipmentServices: 
[400] {
  "errors": [
    {
      "code": "InvalidInput",
      "message": "5

validation errors detected: Value \u0027\u0027 at

\u0027shipmentRequestDetails.shipFromAddress.email\u0027 failed to satisfy

constraint: Member must satisfy regular expression pattern: .+@.+; Value

\u0027\u0027 at \u0027shipmentRequestDetails.amazonOrderId\u0027 failed to

satisfy constraint: Member must satisfy regular expression pattern:

[0-9A-Z]{3}-[0-9]{7}-[0-9]{7}; Value \u0027\u0027 at

\u0027shipmentRequestDetails.weight.unit\u0027 failed to satisfy constraint:

Member must satisfy enum value set: [g, ounces, oz, grams]; Value null at

\u0027shipmentRequestDetails.weight.value\u0027 failed to satisfy constraint:

Member must not be null; Value \u0027[]\u0027 at

\u0027shipmentRequestDetails.itemList\u0027 failed to satisfy constraint: Member

must have length greater than or equal to 1",
      "details": ""
    }
  ]
}

I'm using the Merchant Fulfillment portion of the Amazon Selling Partner API found at https://github.com/jlevers/selling-partner-api/

I have other portions working... namely orders coming down and reports going up. But I am using the same techniques and the Merchant Fulfillment API is not working. The response I get back indicates that it's not received the data I am sending it.

What am I doing wrong?

// North America Live
$NA = [
    'url' => 'https://sellingpartnerapi-na.amazon.com',
    'region' => 'us-east-1',
];

// North America Sandbox
// $NA = [
//  'url' => 'https://sandbox.sellingpartnerapi-na.amazon.com',
//  'region' => 'us-east-1',
// ];
    
$config = new SellingPartnerApi\Configuration([
    "lwaClientId" => $lwaClientId,
    "lwaClientSecret" => $lwaClientSecret,
    "lwaRefreshToken" => $lwaRefreshToken,
    "awsAccessKeyId" => $awsAccessKeyId,
    "awsSecretAccessKey" => $awsSecretAccessKey,
    "endpoint" => $NA  // or another endpoint from lib/Endpoint.php
]); 

$apiInstance = new SellingPartnerApi\Api\MerchantFulfillmentApi($config);

$body = new \SellingPartnerApi\Model\MerchantFulfillment\GetEligibleShipmentServicesRequest(
[
    "shipment_request_details"  =>  
        [
        "amazon_order_id" => "XXX-XXXXXXXX-XXXXXXXX",
        "item_list" => 
            [
            "order_item_id" => "XXXXXXXXXXXXXXX",
            "quantity" => 1,
            ],
        "ship_from_address" => 
            [
            "name" => "XXXXXXX",
            "address_line1" => "XXXXXXXXXX",    
            "email" => "[email protected]",
            "city" => "XXXXXXXXX",
            "postal_code" => "XXXXXX",
            "country_code" => "US",
            "phone" => "XXXXXXXXXXXX",  
            ],
        "weight" => 
            [
            "value" => 7,
            "unit" => "oz",  
            ],
        "shipping_service_options" => 
            [
            "delivery_experience" => "DeliveryConfirmationWithSignature",  
            "carrier_will_pick_up" => true,  
            ]
        ]   
]
);
try {
    $result = $apiInstance->getEligibleShipmentServices($body);
    d($result);
} catch (Exception $e) {
    echo "<PRE>";
    echo 'Exception when calling MerchantFulfillmentV0Api->getEligibleShipmentServices: <BR>', wordwrap($e->getMessage(),80,"<br>\n",TRUE), PHP_EOL;
    echo "</PRE>";
}

The $response I get back is:

Exception when calling MerchantFulfillmentV0Api->getEligibleShipmentServices: 
[400] {
  "errors": [
    {
      "code": "InvalidInput",
      "message": "5

validation errors detected: Value \u0027\u0027 at

\u0027shipmentRequestDetails.shipFromAddress.email\u0027 failed to satisfy

constraint: Member must satisfy regular expression pattern: .+@.+; Value

\u0027\u0027 at \u0027shipmentRequestDetails.amazonOrderId\u0027 failed to

satisfy constraint: Member must satisfy regular expression pattern:

[0-9A-Z]{3}-[0-9]{7}-[0-9]{7}; Value \u0027\u0027 at

\u0027shipmentRequestDetails.weight.unit\u0027 failed to satisfy constraint:

Member must satisfy enum value set: [g, ounces, oz, grams]; Value null at

\u0027shipmentRequestDetails.weight.value\u0027 failed to satisfy constraint:

Member must not be null; Value \u0027[]\u0027 at

\u0027shipmentRequestDetails.itemList\u0027 failed to satisfy constraint: Member

must have length greater than or equal to 1",
      "details": ""
    }
  ]
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

惟欲睡 2025-02-16 16:18:06

在运输服务选项中。
“ carrier_will_pick_up” =&gt;是的,

如果将其设置为真,那么它将行不通。我认为这与向承运人发送提货请求有关。

In the Shipping Service options.... this needs to be set false.
"carrier_will_pick_up" => true,

If its set to true then it will not work. I think it has something to do with sending a request for pickup to the carrier.... and it seems counter-intuitive to set it to false... but thats what made it work!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文