#javascript #rest #e-commerce #bigcommerce #shipping-method
#javascript #остальное #электронная коммерция #bigcommerce #способ доставки
Вопрос:
Я написал пользовательское приложение, которое использует PHP-сервер для серверной части и bigcommerce checkout / cart sdk с JS для интерфейса.
По сути, это то, что я хочу сделать:
- Получить тарифы с помощью моего php-приложения и стороннего API (это работает)
- Отображать указанные тарифы как выбираемые параметры (это работает)
- Обновите оформление заказа и отправку (это работает, но не на 100%)
- Обновите способ доставки в корзину и общую сумму (вот где я застрял)
После того, как я получу тарифы с 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-приложении, а затем параметры должны быть доступны как обычно.