PHP: Как интегрировать идентификатор пользователя в систему PayPal IPN?

Когда пользователи входят в систему, идентификатор пользователя сохраняется в User::Data('id').

Как я могу использовать идентификатор пользователя в html-форме и как получить доступ к переменной в прослушивателе IPN, чтобы я обновил правильную учетную запись, когда платеж прошел успешно?

Это мой текущий код кнопки.

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="..">
<table>
<tr><td><input type="hidden" name="on0" value="Amount">Amount</td></tr><tr><td><select name="os0">
    <option value="100">100$100,00 USD</option>
    <option value="150">150$140,00 USD</option>
</select> </td></tr>
</table>
<input type="hidden" name="currency_code" value="USD">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynow_SM.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/no_NO/i/scr/pixel.gif" width="1" height="1">
</form>

Это прослушиватель, который я сейчас использую: https://github.com/Quixotix/PHP-PayPal-IPN/tree/58e029c235133b041006a45a9ce614739d8eb550


person medusa1414    schedule 26.07.2012    source источник


Ответы (1)


Вы пытались использовать «скрытый» элемент формы в HTML? Как это:

<input type="hidden" name="user_id" value="medusa1414" />

Вы можете добавить его с помощью PHP с идентификатором пользователя User::Data('id')? как ты сказал.

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="..">
<table>
<tr><td><input type="hidden" name="on0" value="Amount">Amount</td></tr><tr><td><select name="os0">
    <option value="100">100$100,00 USD</option>
    <option value="150">150$140,00 USD</option>
</select> </td></tr>
</table>
<?php echo '<input type="hidden" name="user_id" value="' . $user_id . '" />'; ?>
<input type="hidden" name="currency_code" value="USD">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynow_SM.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/no_NO/i/scr/pixel.gif" width="1" height="1">
</form>

Вы сможете получить это значение в PHP, используя

$user_id = $_POST['user_id'];
person sarkolata    schedule 26.07.2012
comment
В качестве альтернативы также можно использовать поле custom. - person David; 27.07.2012
comment
Есть ли способ сделать это поле обязательным? В Opera вы можете отредактировать скрытое поле и отправить форму. Тогда с пользователя будет взиматься плата, и он ничего не просматривает. - person medusa1414; 27.07.2012
comment
Вы можете редактировать его почти во всех браузерах, это HTML. Если пользователь хочет, чтобы его деньги были потрачены впустую, позвольте ему. Почему пользователь все равно должен менять HTML-код? Пользователь должен делать это через графический интерфейс. - person sarkolata; 27.07.2012