获得Paypal返回字符串到mysql数据库?

时间:2013-04-18 02:37:32

标签: php mysql curl

public function run()
    {
        $postFields = 'cmd=_notify-validate';

        foreach($_POST as $key => $value)
        {
            $postFields .= "&$key=".urlencode($value);
        }

        $ch = curl_init();

        curl_setopt_array($ch, array(
            CURLOPT_URL => $this->_url,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => $postFields
        ));

        $result = curl_exec($ch);
        curl_close($ch);

        $fh = fopen('result.txt', 'w');
        fwrite($fh, $result . ' -- ' . $postFields);
        fclose($fh);

        echo $result;
    }
}
?>

我在一个文本文件中得到结果:

?cmd = _notify-validate& test_ipn = 1& payment_type = instant& payment_date = 02:39:41 Oct 06,2011 PDT& payment_status =已完成& address_status =已确认& payer_status =已验证& first_name = John& last_name = Smith& ; payer_email=buyer@paypalsandbox.com& payer_id = TESTBUYERID01& address_name = John Smith& address_country = United States& address_country_code = US& address_zip = 95131& address_state = CA& address_city = San Jose& address_street = 123,任何街道和商业=卖家@ paypalsandbox.com和放大器; receiver_email=seller@paypalsandbox.com& receiver_id = TESTSELLERID1和放大器; residence_country = US&放大器; ITEM_NAME =东西和放大器; ITEM_NUMBER = AK-1234功放;数量= 1&安培;运费= 3.04安培;税务= 2.02和放大器; mc_currency = USD和放大器; mc_fee = 0.44&安培; mc_gross = 12.34&安培; mc_gross_1 = 9.34&安培; txn_type = web_accept&安培; txn_id =41106939¬ify_version= 2.1&安培;定制= XYZ123&安培;字符集=窗口1252&安培; verify_sign = AB3bSjvFd3wXL7rCt.OOGW-nSKg-Ahh5RbboVG4bn9LSAon94Wjt2Oj9

如何解码此字符串并将其放入mysql数据库?

我需要将客户的名字,姓氏,地址,电子邮件,物品编号,物品名称,数量,运输和时间戳放入数据库。请在代码中找到这个,我需要帮助解码并将其放入数据库。感谢

3 个答案:

答案 0 :(得分:2)

您无需解码字符串。

我刚检查了PayPal文档。 notify-validate返回的唯一内容是字符串VERIFIEDINVALID。您发布的所有内容都不是PayPal返回字符串的一部分。如果您想要姓氏,请在$_POST['last_name']

要将其添加到mysql INSERT语句中,请执行以下操作(我只显示4列,您可以推断到所需的所有字段):

$stmt = $con->prepare("INSERT INTO mytable (first_name, last_name, address, email) values (?, ?, ?, ?)");
$stmt->bind_param("ssss", $_POST['first_name'], $_POST['last_name'], $_POST['address'], $_POST['email']);
$stmt->execute();

答案 1 :(得分:0)

使用parse_str

parse_str($string,$array);
var_dump($array);

答案 2 :(得分:0)

你可以用&爆炸字符串获取每个参数及其值,然后你可以使用=来获取密钥和值。

$params = explode('&', $result);

$paypal_result_arr = array();

foreach($params AS $param) {
   $param_arr = explode('=', $param);

   if(count($param_arr) == 2) {
       $paypal_result_arr[$param_arr[0]] = $param_arr[1];
   }
}

$ paypal_result_arr associative array将为您提供从paypal返回的所有值。 之后你可以使用代码$ paypal_result_arr ['first_name']得到第一个名字等等......