Как мне обновить параметры доставки при оформлении заказа в BigCommerce

#javascript #rest #e-commerce #bigcommerce #shipping-method

#javascript #остальное #электронная коммерция #bigcommerce #способ доставки

Вопрос:

Я написал пользовательское приложение, которое использует PHP-сервер для серверной части и bigcommerce checkout / cart sdk с JS для интерфейса.

По сути, это то, что я хочу сделать:

  1. Получить тарифы с помощью моего php-приложения и стороннего API (это работает)
  2. Отображать указанные тарифы как выбираемые параметры (это работает)
  3. Обновите оформление заказа и отправку (это работает, но не на 100%)
  4. Обновите способ доставки в корзину и общую сумму (вот где я застрял)

После того, как я получу тарифы с PHP-сервера, я динамически создаю HTML-код списка.

Я случайным образом назначаю идентификаторы метода доставки (поскольку я понятия не имею, как это генерируется, но оно кажется довольно случайным)

Когда я нажимаю на опцию доставки, запускается этот код (обратите внимание, что ‘option’ является переменной в цикле foreach

 console.dir(checkoutObj);
 
if(checkoutObj.consignments.length < 1){

    console.log('no consign');

} else {

    var selectedShipping = checkoutObj.consignments[0].selectedShippingOption;
    selectedShipping.cost = parseFloat(option['grandtotmrkup']);
    selectedShipping.description = option['CarrierName']   '-'   option['CarrierService'];
    selectedShipping.id = this.value;
    selectedShipping.type = 'weight_based_shipping';
    checkoutObj.consignments[0].shippingCost = parseFloat(option['grandtotmrkup']);
    checkoutObj.shippingCostBeforeDiscount = parseFloat(option['grandtotmrkup']);
    checkoutObj.shippingCostTotal = parseFloat(option['grandtotmrkup']);

    console.log('updated checkout obj');
    console.dir(checkoutObj);

    var updated = service.updateCheckout(checkoutObj);
 
    console.log('updated');
    console.dir(state.data.getCheckout());
    console.log('updating consignment');
    console.dir(
service.updateConsignment({'id':consignID,'shippingOptionId':shippingMethodId})
    );
    console.dir(state.data.getConsignments());
  

Когда он запускает service.updateConsignment, я получаю следующий ответ для раздела отправлений объекта:

 "consignments": [
  {
    "id": "5f732875d039f",
    "shippingCost": 0,
    "handlingCost": 0,
    "couponDiscounts": [],
    "discounts": [],
    "lineItemIds": [
      "4f557702-4f9d-45ec-943a-c72ea963ccc7"
    ],
    "selectedShippingOption": {
      "id": "4dcbf24f457dd67d5f89bcf374e0bc9b",
      "type": "freeshipping",
      "description": "Free Shipping",
      "imageUrl": "",
      "cost": 0,
      "transitTime": "",
      "additionalDescription": ""
    },
    "shippingAddress": {
      "firstName": "1",
      "lastName": "1",
      "email": "",
      "company": "",
      "address1": "1 street",
      "address2": "",
      "city": "MITCHAM",
      "stateOrProvince": "Victoria",
      "stateOrProvinceCode": "VIC",
      "country": "Australia",
      "countryCode": "AU",
      "postalCode": "3132",
      "phone": "",
      "customFields": [],
      "shouldSaveAddress": true
    },
    "availableShippingOptions": [
      {
        "id": "9ba45e71fe66e1cd757f022dcae331b0",
        "type": "shipping_pickupinstore",
        "description": "Pickup In Store",
        "imageUrl": "",
        "cost": 0,
        "transitTime": "",
        "isRecommended": false,
        "additionalDescription": ""
      },
      {
        "id": "4dcbf24f457dd67d5f89bcf374e0bc9b",
        "type": "freeshipping",
        "description": "Free Shipping",
        "imageUrl": "",
        "cost": 0,
        "transitTime": "",
        "isRecommended": true,
        "additionalDescription": ""
      }
    ]
  }
],
  

Я не уверен, связано ли это с тем, что мои параметры доставки отсутствуют в разделе Доступные параметры доставки объекта?

Кто-нибудь знает, как я могу указать там свои методы доставки? Или это вызвано тем, что я добавляю методы динамически через HTML?

Я новичок в BC, поэтому, пожалуйста, извините за невежество.

Ответ №1:

Я не думаю, что вы сможете ввести опцию доставки в оформление заказа таким образом, я думаю, вам нужно будет посмотреть на использование API методов доставки в вашем PHP-приложении, а затем параметры должны быть доступны как обычно.