PHPでの決済APIの多次元配列の問題

クリス:

私の支払いプロバイダは、彼らのAPIについては、以下の例のコードを発行しました。

$order = $mollie->orders->create([
       "amount" => [
          "value" => "1027.99",
          "currency" => "EUR"
        ],
        "billingAddress" => [
          "streetAndNumber" => "Keizersgracht 313",
          "postalCode" => "1016 EE",
          "city" => "Amsterdam",
          "country" => "nl",
          "givenName" => "Luke",
          "familyName" => "Skywalker",
          "email" => "[email protected]",
        ],
        "shippingAddress" => [
          "streetAndNumber" => "Keizersgracht 313",
          "postalCode" => "1016 EE",
          "city" => "Amsterdam",
          "country" => "nl",
          "givenName" => "Luke",
          "familyName" => "Skywalker",
          "email" => "[email protected]",
        ],
        "metadata" => [
          "order_id" => $orderId
        ],
        "consumerDateOfBirth" => "1958-01-31",
        "locale" => "en_US",
        "orderNumber" => strval($orderId),
        "redirectUrl" => "{$protocol}://{$hostname}{$path}/orders/return.php?order_id={$orderId}",
        "webhookUrl" => "{$protocol}://{$hostname}{$path}/orders/webhook.php",
        "method" => "ideal",
        "lines" => [
            [
                "sku" => "5702016116977",
                "name" => "LEGO 42083 Bugatti Chiron",
                "productUrl" => "https://shop.lego.com/nl-NL/Bugatti-Chiron-42083",
                "imageUrl" => 'https://sh-s7-live-s.legocdn.com/is/image//LEGO/42083_alt1?$main$',
                "quantity" => 2,
                "vatRate" => "21.00",
                "unitPrice" => [
                    "currency" => "EUR",
                    "value" => "399.00"
                ],
                "totalAmount" => [
                    "currency" => "EUR",
                    "value" => "698.00"
                ],
                "discountAmount" => [
                    "currency" => "EUR",
                    "value" => "100.00"
                ],
                "vatAmount" => [
                    "currency" => "EUR",
                    "value" => "121.14"
                ]
            ],
            [
                "type" => "digital",
                "sku" => "5702015594028",
                "name" => "LEGO 42056 Porsche 911 GT3 RS",
                "productUrl" => "https://shop.lego.com/nl-NL/Porsche-911-GT3-RS-42056",
                "imageUrl" => 'https://sh-s7-live-s.legocdn.com/is/image/LEGO/42056?$PDPDefault$',
                "quantity" => 1,
                "vatRate" => "21.00",
                "unitPrice" => [
                    "currency" => "EUR",
                    "value" => "329.99"
                ],
                "totalAmount" => [
                    "currency" => "EUR",
                    "value" => "329.99"
                ],
                "vatAmount" => [
                    "currency" => "EUR",
                    "value" => "57.27"
                ]
            ]
        ]
    ]);

私は何をしたいのは、これらのセッションからのデータを持つハードコード二次元「行」をvarsの交換することです。

foreach ($_SESSION['cart_products'] as $cart_itm) {
    $name = $cart_itm['cat_item_titel_' . $lang . ''];
    $unitPrice = $cart_itm['cat_item_prijs'];
    $sku = $cart_itm['cat_item_code'];
}

そして、これは私が思いついた解決策であるが、これだけでは動作しません。その理由は、私が想定し、私はあるべきな$受注配列内のデータは、機能コードを文字列としてエコーとされていないということです。しかし、私はこの問題をaproachする方法の手掛かりを持っていません。

$i = 0;
        $lngth = count($_SESSION['cart_products']);

        foreach ($_SESSION['cart_products'] as $cart_itm) {

            $orders[] = '[';
            $orders[] .= '"sku" => ' . $cart_itm['cat_item_code'] . ',';
            $orders[] .= '"name" => ' . $cart_itm['cat_item_titel_en'] . ',';
            $orders[] .= '"quantity" => 1,';
            $orders[] .= '"vatRate" => "0.00",';
            $orders[] .= '"unitPrice" => [
                            "currency" => "EUR",
                            "value" => "15.50"],';
            $orders[] .= '"totalAmount" => [
                            "currency" => "EUR",
                            "value" => "15.50"],';
            $orders[] .= '"vatAmount" => [
                    "currency" => "EUR",
                    "value" => "0.00"]';

            if ($i == $lngth - 1) {
                $orders[] .= ']';
            }

            else {
                $orders[] .= '],';
            }

            $i++;

        }

        $echoOrders = implode($orders);


        $order = $mollie->orders->create([
            "amount" => [
                "value" => "15.50",
                "currency" => "EUR"
            ],
            "billingAddress" => [
                "streetAndNumber" => $address,
                "postalCode" => $postalcode,
                "city" => $city,
                "country" => $country,
                "givenName" => $firstname,
                "familyName" => $name,
                "email" => $email,
            ],
            "shippingAddress" => [
                "streetAndNumber" => $addressa,
                "postalCode" => $postalcodea,
                "city" => $citya,
                "country" => $countrya,
                "givenName" => $firstnamea,
                "familyName" => $namea,
                "email" => $email,
            ],
            "metadata" => [
                "order_id" => $orderId
            ],
            "locale" => "nl_BE",
            "orderNumber" => strval($orderId),
            "redirectUrl" => "{$protocol}://{$hostname}{$path}/thankyou.php?order_id={$orderId}",
            "webhookUrl" => "https://www.cluster-park.com/dev/includes/webhook.php",
            "lines" => [ $echoOrders ]
        ]);

すべての提案は歓迎以上です。ありがとう!

ナイジェルレン:

あなたは、文字列を構築している現時点では、連想配列を構築する必要があります。これはあなたの出発点を与える必要があります...

    $lines = [];
    foreach ($_SESSION['cart_products'] as $cart_itm) {

        $lines[] = [ "sku" => $cart_itm['cat_item_code'],
                   "name" => $cart_itm['cat_item_titel_en'],
                   "quantity" => 1,
                   "vatRate" => "0.00",
                   "unitPrice" => [
                        "currency" => "EUR",
                        "value" => "15.50"]
                   ],
             // Add all of the other data you have
        ];

    }

その後、後続のコードで、あなたが使用してそれらを追加します...

"lines" => $lines

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=281206&siteId=1