我正在使用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 url:
$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]而不是[数量]。
我做错了什么?
这是我从Fransesco得到的答案:
[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.'';
}
答案 0 :(得分:0)
每个[sub]数组的每个键都需要在方括号之间:
saleData[orderData][quantity]
作为旁注,构建网址怪物并不是最佳方式,您可以通过GET请求限制您可以传递的数据量...请参阅以下说明:What is the maximum length of a URL in different browsers? < / p>