[英]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.