我有一个网站,人们在那里购买数字下载。到目前为止,我从未在结账时收到买家的电子邮件地址。我只是将它们传递给PayPal,并相信他们的PayPal帐户中设置了正确的电子邮件地址。
当然,很多人不这么认为。他们的PayPal账户与多年未使用或检查的电子邮件地址绑定。
一旦他们付款,我就通过PDT和IPN进行处理。PDT是这样的,一旦PayPal将他们的文件重定向回我的网站,他们就可以立即下载他们的文件。在这种情况下,电子邮件地址是不相关的。
但是,很多人由于某种原因(关闭浏览器、网络中断等)没有被重定向,或者他们希望稍后重新访问该网站下载订单。
为此,我使用IPN。贝宝联系我的网站,告诉我交易的情况,然后我向他们发送订单确认电子邮件。
但这通常会转到用户不再使用的未经检查/旧电子邮件地址。
我在我的网站上有自己的自定义编码购物车,然后使用加密的“与贝宝结帐”按钮,将购物车中的所有数据发送给贝宝。
这类事情:
$cart['cmd'] = '_cart';
$cart['upload'] = 1;
$cart['custom'] = $_SESSION['cartGUID'];
$cart['business'] = WEBSITE_PAYPAL_EMAIL_ADDRESS;
$cart['currency_code'] = $currencyCode;
$cart['return'] = 'https://www.example.com/pdt';
$n = 0;
while ($a = $rs->fetch()) {
$n++;
$cart['amount_'.$n] = $a['amount'];
$cart['quantity_'.$n] = $a['quantity'];
$cart['shipping_'.$n] = $a['postage'];
$cart['item_number_'.$n] = $a['id'];
$cart['item_name_'.$n] = $a['description'];
}
$encrypted = str_replace("\n", "", paypal_encrypt_via_exec($cart));
echo '<form action="https://www.paypal.com/cgi-bin/webscr" method="post">';
echo '<input type="hidden" name="cmd" value="_s-xclick">';
echo '<input type="hidden" name="encrypted" value="'.$encrypted.'">';
echo '<p id="paypal-button">';
echo '<input type="image" src="https://www.paypalobjects.com/webstatic/en_US/i/buttons/checkout-logo-large.png" name="submit" alt="Make payments with PayPal - it\'s fast, free and secure">
echo '</p>';
echo '</form>';
要传递电子邮件,我可以将其附加到“自定义”字段。
$cart['custom'] = $_SESSION['cartGUID'] . '|' . $email;
'custom'
通过IPN发送回站点。但这似乎很有意思?
$cart['email'] = $userEmail;
$cart['address_override'] = 1;
但它似乎不起作用,通过IPN传回的电子邮件地址仍然是他们的股票贝宝电子邮件地址。
我做错了什么?