сумма брутто оплаты не соответствует цене товара

У меня есть оплата (код ниже)

public function orderspayonline(Request $request, $id){
error_log('masuk ke snap token dri ajax');
$midtrans = new Midtrans;

$item = Order::findOrFail($id);
$buyer = $item->buyer_name;
$address = $item->address;
$city = $item->city;
$postalcode = $item->postalcode;
$province = $item->province;
$email = $item->buyer_email;
$phone = $item->phone;
$carttotal = $item->price;
$shipping = $item->shipping_cost;

$transaction_details = array(
'order_id'      => uniqid(),
'gross_amount'  => $carttotal,
// gross amount (total price buyer has to pay) is saved in order raw included shipping method like: (total price + weight * shipping cost).

);// getting orders items detail
$item_details = array();
if(!empty($item->product_data)){ //product_data is my json column
foreach($item->product_data as $item)
{
//calculate items price
foreach($item['attributes'] as $itemsss)
{
$proweight = $itemsss['value'];
}
$pp = $item['quantity'] * $proweight * $shipping + $item['price'];
//end calculation
$item_details[] = array(
'id'        => $item['id'],
'price'     => $pp,
'quantity'  => $item['quantity'],
'name'      => $item['name'],
);
}
}else{
$item_details[] = array(
'id'        => $item->id,
'price'     => $item->price,
'quantity'  => $item->quantity,
'name'      => $item->product,
);
}

// to be continued....

теперь, как вы видите в моем //getting orders items detail у меня есть 2 типа петли, first one будет зацикливать заказы с деталями на основе json second one будет зацикливать заказы, созданные вручную для пользователей администраторами, данные которых не являются json.

Ранее я добавил //calculate items price Что касается веса заказа и стоимости доставки, рассчитанных с ценой товара, то в этом случае моя сумма брутто будет такой же, как и цена товара, и все будет работать без ошибок.

Проблема возникает, когда у меня более одного элемента в моих заказах на основе JSON, тогда мой настроенный цикл больше не будет работать, и я получаю ошибку gross_amount не такой как items_price,

Любая идея, где я должен изменить?

мой код заказа JSON с несколькими элементами

{"4":{"id":4,"name":"product four","price":1500000,"quantity":2,"attributes":{"attr":{"name":"weight","value":"45"}},"conditions":[],"_conditions":[{"name":"Black","value":"10000"},{"name":"12 inch","value":"25000"}]},"1":{"id":1,"name":"product one","price":10000000,"quantity":"1","attributes":{"attr":{"name":"weight","value":"1"}},"conditions":[{}],"_conditions":[{"name":"Black","value":"10000"}]}}

мой код заказа JSON с одним элементом

{"4":{"id":4,"name":"product four","price":1535000,"quantity":"1","attributes":{"attr":{"name":"weight","value":"45"}},"conditions":[{},{}],"_conditions":[{"name":"Black","value":"10000"},{"name":"12 inch","value":"25000"}]}}

screen1

gross amount

мой gross_amount приходят из колонки с именем price значение этого является суммой:

shipping cost * cart total weight + cart total amount

В общую сумму корзины могут быть включены дополнительные опции, добавленные к товарам, или купоны, уменьшенные с цены товаров.

уловка, которую я использовал:

Получение этой полной цены (вверх), как мой gross amount чтобы получить стоимость доставки от клиента, но проблема заключается в том, что моя компания-шлюз настаивает на том, чтобы мой gross_amount а также items_price быть точно таким же, что не делает мне сеанс, потому что я должен также получить стоимость доставки.

Таким образом, трюк заключался в манипулировании ценой предметов, чтобы поднять их до суммы, богатой моей gross_amount что я сделал, добавив:

$pp = $item['quantity'] * $proweight * $shipping + $item['price'];

теперь я понял, что я не включил эти дополнительные опции / коды купонов
ценности

you can find them in _conditions in my sample codes above в моем $pp и именно поэтому сумма цен на товары никогда не увеличивается gross_amount,

есть идеи как их добавить?

0

Решение

Ваши транспортные расходы основаны на весе продуктов и количестве, поэтому вам нужно изменить свой код следующим образом,

// getting orders items detail
$item_details = array();
if(!empty($item->product_data)){ //product_data is my json column
$pp = 0;
foreach($item->product_data as $item)
{
//calculate items price
foreach($item['attributes'] as $itemsss)
{
$proweight = $itemsss['value'];
}
$pp = $pp + $item['quantity'] * $proweight * $shipping + $item['price'];
//end calculation
$item_details[] = array(
'id'        => $item['id'],
'price'     => $pp,
'quantity'  => $item['quantity'],
'name'      => $item['name'],
);
}
}
0

Другие решения

Я изменил свою функцию на код ниже:

if(!empty($item->product_data)){
foreach($item->product_data as $item)
{
//calculate items price
foreach($item['attributes'] as $itemsss)
{
$proweight = $itemsss['value'];
}$convals = 0;
foreach($item['_conditions'] as $conditionf)
{
$convals += $conditionf['value'];
}

$pp = $item['price'];
$pp1 = $proweight * $shipping;
$pp2 = $pp + $pp1;
//end calculation
$item_details[] = array(
'id'        => $item['id'],
'price'     => $pp2,
'quantity'  => $item['quantity'],
'name'      => $item['name'],
);
}

И спас мой $item['price'] из внешнего интерфейса как полная цена со всеми условиями / купонами, добавленными в нее, в этом случае мне не нужно рассчитывать цену условий в моей функции оплаты, уже сохраненной как цена моего товара. 🙂

спасибо за все помогает.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector