Closed nixprosoft closed 10 months ago
@nixprosoft, I don't understand what you mean. You can use the itemAttributes
right now:
$result = $client->registerOrder($orderId, $orderAmount, $returnUrl, [
'orderBundle' => [
'cartItems' => [
'items' => [
// First item
[ 'itemAttributes' => [] ],
// Second item
[ 'itemAttributes' => [] ],
],
],
]
]);
Yep, but in documentation in link below there is error: array need to be formed like this:
// ...
'itemPrice' => 1000,
'itemAttributes' =>
[
'attributes' => [
[
'name' => 'paymentMethod',
'value' => 1,
],
[
'name' => 'paymentObject',
'value' => 4,
],
// ...
],
],
// ...
in another case there will be error
8:orderBundle incorrect
RU: В документации Сбербанк накосячил, и формат массива с атрибутами, необходимыми для перехода на ОФД 1.05, должен быть такой, какой я указал в примере выше. В исходных кодах Вашего решения я не нашел упоминания этих атрибутов. Т.е. конечно можно не трогать исходники и оставить всё как есть. Но мало ли...
@nixprosoft, Если у вас есть желание, можете создать пулл-реквест. Я бы предложил просто сделать несколько вспомогательных DTO-классов, сереализующихся в JSON, наподобии:
class OrderBundle implements \JsonSerialize
{
public function addItem(CartItem $item): void {}
public function setDeliveryInfo(DeliveryInfo $item): void {}
}
Тогда экземпляр OrderBundle
можно будет просто передавать в качестве параметра в метод registerOrder
:
$result = $client->registerOrder($orderId, $orderAmount, $returnUrl, [
'orderBundle' => new OrderBundle(),
]);
@voronkovich Сам хотел предложить ;) Кстати, данный протокол также используется в Альфабанке. Различия так малы, что двойное назначение возможно. В ближайшее время обновляю эквайринг при переезде на Laravel, так что займусь.
feature request
Did you planning to implement supporting v.1.05 OFD data format? https://securepayments.sberbank.ru/wiki/doku.php/integration:api:rest:requests:register_cart#itemattributes
There is
itemAttributes
added in cart items.