У меня есть сайт, где люди покупают цифровые загрузки. До сих пор я никогда не получал адрес электронной почты от покупателя в момент оформления заказа. Я просто передаю их в 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.
Что я делаю не так?
Спасибо