0

由于不太了解如何处理和处理包含多个项目的购物车的数组,我的 PHP 自定义 Paypal IPN 脚本遇到了一些问题。

我想要实现的是,对于每个产品,都会使用其唯一 ID 向服务器发出 POST 调用以减少该产品的库存数量。

Paypal IPN 将项目编号返回为item_number_1item_number_2item_number_3等,我可以通过以下方式获取数据:

$id_exp = $_POST['/^item_number(\d*)$/'];
$qty_exp = $_POST['/^quantity(\d*)$/'];

我需要做的是制作$id_exp一个数组,并file_get_contents为每个产品运行一个 POST 到带有 ID 和 QTY 的 URL,这可以实现吗?

简而言之,最终结果将是 IPN 脚本访问我的股票监听器(并在此处使用 GET 仅用于演示):http://www.site.com/listener?prod_id=12345&decrement=3

更新:我现在已经正确打印了项目 ID 数组123,456,789,存储在一个名为的 var 中$id_string,现在我尝试为数组中的每个 ID 运行以下命令:

foreach ($id_string as $value){
        $url = 'http://myserver.com';
        $data = array('product_id' => $value, 're_stock' => 'true');
        $get = array();

            foreach($data as $k => $v){
            $post[] = $k . '=' . urlencode($v);
            }

            $post = implode('&', $post);

            $opts = array('http' =>
            array(
            'method'  => 'POST',
            'header'  => 'Content-type: application/x-www-form-urlencoded',
            'content' => $post
            )
            );

        $context = stream_context_create($opts);

        file_get_contents($url, false, $context);

    }

然而,什么都没有发生。任何反馈在此阶段表示赞赏。

4

1 回答 1

0

像这样的东西?

$id_exp = array();

foreach (preg_grep('~^item_number[0-9]+$~', array_keys($_POST)) as $key)
{
    $id_exp[preg_replace('~^item_number([0-9]+)$~', '$1', $key)] = $_POST[$key];
}

print_r($id_exp);
于 2013-06-29T04:50:06.043 回答