使用 PHP curl 调用 API,如何传递如下格式的 POSTFIELD?

2017-07-01 17:39:30 +08:00
 s609926202

想要传输数据的格式:

param = { 'xx' : 'ss', 'xx' : 'ss', 'xx' : 'ss', } 我自己写的:

$params = array( 'param' => array( 'orderSn' => $info['ordersn'], 'returnUrl' => self::RETURN_URL, 'notifyUrl' => self::NOTIFY_URL, 'cancelUrl' => self::CANCEL_URL, 'productInfo' => $info['productname'], 'productCount' => 1, 'productPrice' => $info['total_fee'], 'productDiscountPrice' => '0', 'productPriceCurrency' => 'CNY' ) );

// 获取 Paypal 支付跳转地址 $timout = 300; $ch = curl_init(); curl_setopt( $ch, CURLOPT_URL, self::REQUIRE_URL ); curl_setopt( $ch, CURLOPT_POST, TRUE ); curl_setopt( $ch, CURLOPT_POSTFIELDS, $params ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, TRUE ); curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timout ); 求解!

1639 次点击
所在节点    问与答
2 条回复
explon
2017-07-01 17:45:31 +08:00
param 是 string, 你理解错误
lsido
2017-07-01 22:23:59 +08:00
对不起,这个排版让我涌出一股鬼火

你的意思是 PHP 用 curl post 一个数组

直接提交是不行的,毕竟 POST 是 Key-Value

解决办法是有的:

用 http_build_query 处理你的$params 提交即可

接收:

array(1) {
["param"]=>
array(1) {
["returnUrl"]=>
string(9) "returnUrl"
}
}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/372364

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX