簡體   English   中英

如何使用PHP將具有多個值的對象作為參數傳遞給url

[英]How can I pass an object with multiple values as parameters in an url with PHP

我正在使用API​​進行付款。

他們要我在訂單頁面上傳遞產品編號和數量。 我正在使用file_get_contents從中獲取結果,然后可以使用它們。

但這就是我遇到的問題:我需要能夠傳遞多個產品,而且我不知道如何將它們作為參數傳遞給URL。

這是API的布局:

saleData數組具有產品信息的數組

  • orderData數組包含訂購產品的數組

    -productId產品的整數ID

    -數量為id以上的訂購產品的數量整數

這就是我將信息傳遞給我的php腳本的方式:

productobject:[{"productId":"10","quantity":"1"},{"productId":"11","quantity":"1"},{"productId":"2","quantity":"1"}]

然后在我的PHP腳本中執行以下操作:

$productobj = $_POST['productobject'];
$productobject = json_decode($productobj);

foreach($productobject as $product){
  $producturl .= 'saleData[orderData]productId='.$product->productId.'&saleData[orderData]quantity='.$product->quantity.'';
}

然后,我像這樣創建api網址:

$paynltransaction = file_get_contents("https://rest-api.pay.nl/v7/Transaction/start/json/?token=myapitoken&serviceId=SL-9697-8091&amount=".$bedrag."&ipAddress=".get_ip($ip)."&finishUrl=http://www.website.nl/_extern/web/status&paymentOptionId=".$betaalid."".$idealbank."&transaction[description]=BadenInclusief&enduser[initials]=".$voornaam."&enduser[lastName]=".$achternaamnospace."&enduser[emailAddress]=".$mail."&".$producturl."");

它沒有給我一個錯誤,但是當我稍后檢查結果時,這是包含產品信息的響應中存儲的內容:

[saleData] => stdClass Object
        (
            [orderData] => Array
                (
                    [0] => 1
                )

            [invoiceDate] => 
            [deliveryDate] => 
        )

它僅添加最后一個數量並丟失密鑰,它只說[0]而不是[quantity]。

我究竟做錯了什么?

這是我從弗朗西斯科獲得的答案:

 [saleData] => stdClass Object
        (
            [orderData] => Array
                (
                    [0] => stdClass Object
                        (
                            [productId] => 000000
                            [productType] => ROUNDING
                            [description] => Afronding
                            [price] => 330000
                            [quantity] => 1
                            [vatCode] => N
                            [vatPercentage] => 0
                            [discount] => 0
                        )

                )

            [invoiceDate] => 
            [deliveryDate] => 
        )

更新的代碼:

foreach($productobject as $product){
  $producturl .= 'saleData[orderData][productId]='.$product->productId.'&saleData[orderData][quantity]='.$product->quantity.'';
}

每個[sub]數組的每個鍵都必須位於方括號之間:

saleData[orderData][quantity]

附帶說明一下,構建URL的怪獸不是最好的方法,您對可以通過GET請求傳遞的數據量有限制...請參閱以下說明: 在不同瀏覽器中URL的最大長度是多少? ?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM