Я пытаюсь создать скрипт обратного вызова для биткойн-платежей Coinbase. Вот функция ниже от моего контроллера платежей:
function callback($secret = NULL) {
if ($secret == 'testSECRETkey') {
//If order is "completed", please proceed.
$data = json_decode(file_get_contents('php://input'), TRUE);
$status = $data['order']['status'];
$userid = '507';
if (($status === 'completed')) {
$this->db->query( 'update users set user_money=user_money+15, user_credits=user_credits+5 WHERE users_id=' . $userid );
}
}
Как включить special parameter
поэтому, когда я запрашиваю URL: www.example.com/payments/callback
добавить специальный ключ и, если он недействителен, отказать в доступе к скрипту. Пример:
www.example.com/payments/callback?secret=testSECRETkey
К сожалению, это не работает, как я хочу. Это не вступает в силу. Что в этом плохого?
Чтобы получить доступ к key
Параметр вы будете использовать класс ввода get
метод https://ellislab.com/codeigniter/user-guide/libraries/input.html
$this->input->get('key');
function callback()
{
$key = $this->input->get('key');
if( ! $this->is_valid_key($key)) {
// do something here and return
return;
}
//If order is "completed", please proceed.
$data = json_decode(file_get_contents('php://input'), TRUE);
$status = $data['order']['status'];
$userid = '507';
if (($status === 'completed')) {
$this->db->query( 'update users set user_money=user_money+15, user_credits=user_credits+5 WHERE users_id=' . $userid );
}
}
Создать новый метод для проверки ключа
function is_valid_key($key) {
// logic to check key
$valid = true;
if($valid) {
return true;
}
else {
return false;
}
}
Других решений пока нет …