如何将数据从mysite.com传递到anothersite.com?

时间:2020-04-07 22:29:16

标签: php api request

我的客户有一个网站(mysite.com),我需要将产品的数据(名称,价格,数量)传递到另一个网站(anothersite.com),以便处理付款。 不使用woo-commerce API是否可以安全地做到这一点?

例如:

我使用了以下代码,但无法在另一个站点$ _POST上获取该值。

foreach( WC()->cart->get_cart() as $cart_item ){

    $product = wc_get_product( $cart_item['data'] );        
    $asAttributes = $product->get_attributes();     

    $data = array(
    'price' => $product->get_price(),
    'desc' => $product->get_description(),
    'qtty' => $cart_item['quantity']
    );
}   

$url = "anothersite.com";

$ch = curl_init();  
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));


curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
return $url;
curl_close($ch);

请注意:我可以使用URL参数获取数据,但是由于它在URL中可见,因此并不安全。我需要有关如何安全完成此请求的建议吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

我个人无法从此代码中看到很多问题。您对于大多数应用程序使用CURL的想法基本上是正确的。

我已经在本地服务器上测试了您的代码,并且可以毫无问题地获得POST参数。我会给你我使用的代码:

<?php
// The page that initiates the CURL request
$data = array(
    'price' => 'A',
    'desc' => 'B',
    'qtty' => 'C'
);   

$url = "https://api.zbx1425.tk:8953/testing/showsuper.php";
$ch = curl_init();  
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
var_dump($response);
return $url;
curl_close($ch);
?>
<?php
// The showsuper.php page that receives that
var_dump($_POST);
?>

这是我得到的结果:

string(101) "array(3) { ["price"]=> string(1) "A" ["desc"]=> string(1) "B" ["qtty"]=> string(1) "C" } "

所以我认为问题可能出在其他地方。例如,您将for-each用于购物车项目,但是您覆盖了$ data。我不知道您的应用程序,因此无法提供解决方案,但也许您的页面未以正确的格式发送数据。