我有一个网站,人们可以在这里购买数字下载。到目前为止,在结帐时,我从未从买家那里收到过电子邮件地址。我只是将他们传递给PayPal,并相信他们的PayPal帐户中设置了正确的电子邮件地址。
自然,很多人没有。他们将PayPal帐户绑定到多年未使用或检查过的电子邮件地址。
一旦他们付款,我就会通过PDT和IPN进行处理。 PDT可以让他们在PayPal将其重定向回我的站点后立即下载文件。在这种情况下,电子邮件地址无关紧要。
尽管很多人由于某种原因(例如关闭浏览器,网络中断等)而无法重定向,或者他们想重新访问该站点以便以后下载订单。
为此,我使用IPN。 PayPal与我的网站联系,告诉我有关交易的信息,然后我向他们发送订单确认电子邮件。
但是通常情况下,这会转到未经检查/旧的电子邮件地址,用户不再使用它。
总而言之,我想将当前的电子邮件地址传递到PayPal结帐流程中。
我在网站上拥有自己的自定义编码购物车,然后使用加密的“使用PayPal结帐”按钮,该按钮会将购物车中的所有数据发送到PayPal。
这种事情:
$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传回的电子邮件地址仍然是其库存的PayPal电子邮件地址。
我在做什么错了?
谢谢