从PayPal IPN正确解析返回的数组

时间:2013-06-29 04:43:15

标签: php paypal-ipn

由于我不太清楚如何处理和处理包含多个项目的购物车的数组,因此我的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是否可以实现?

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

更新:我现在已正确打印项目ID数组,如123,456,789,存储在名为$id_string的var中,现在我正在尝试为数组中的每个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);

    }
但是,没有任何事情发生。任何反馈都在此阶段受到赞赏。

1 个答案:

答案 0 :(得分: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);