Как я могу указать другой адрес электронной почты для адреса электронной почты пользователя PayPal через систему проверки PayPal - PullRequest
0 голосов
/ 30 октября 2018

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

Что я делаю не так?

Спасибо

...