如何使用PHP

时间:2018-03-23 14:03:26

标签: php arrays object url

我正在使用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.'';
}

1 个答案:

答案 0 :(得分:0)

每个[sub]数组的每个键都需要在方括号之间:

saleData[orderData][quantity]

作为旁注,构建网址怪物并不是最佳方式,您可以通过GET请求限制您可以传递的数据量...请参阅以下说明:What is the maximum length of a URL in different browsers? < / p>