Я создаю метод оплаты на месте и, помимо прочего, мне необходимо сохранить данные в пользовательскую таблицу БД после получения обратного вызова из внешней службы API.
Это функция:
// callback from external service acting as client
function _api_callback() {
global $user;
$data = json_decode(file_get_contents("php://input"), $assoc = true);
$date = $date['year'] . '-' . $date['month'] . '-' . $date['day'];
$timestamp = strtotime($date);
db_insert('postback')
->fields(array(
'user_id' => $user->uid,
'data' => $data,
'created_date' => $timestamp,
))
->execute(); // save data from external service
}
В журнале доступа сайта я вижу, что мой сайт отвечает кодом 500 при поступлении внешнего обратного вызова.
Однако, если я закомментирую все в этой функции, внешний обратный вызов получит код ответа 200.
Таким образом, при получении этого обратного вызова происходит что-то не так.Трудно отлаживать, так как обратный вызов из внешней службы API запускает совершенно новый сеанс.
Пользовательская таблица "postback
" была успешно создана в файле .install моего пользовательского модуля, и я зарегистрировался в phpMyAdminчто таблица присутствует и хорошо.Это функция schema()
в файле .install:
function module_payments_schema() {
$schema['postback'] = array(
'description' => 'Data saved from API postback URL.',
'fields' => array(
'id' => array(
'description' => 'Auto incremental id.',
'type' => 'serial',
'unsigned' => TRUE,
'not null' => TRUE),
'user_id' => array(
'description' => 'User id for the order.',
'type' => 'int',
'unsigned' => TRUE,
'not null' => FALSE),
'order_id' => array(
'description' => 'Current order number.',
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0),
'data' => array(
'description' => 'Postback data from external API.',
'type' => 'varchar',
'length' => 1020,
'not null' => TRUE,
'default' => ''),
'created_date' => array(
'description' => 'Created date and time (yyyy-mm-dd H:i:s).',
'type' => 'varchar',
'mysql_type' => 'DATETIME',
'not null' => TRUE,
),
),
'primary key' => array('id'),
);
return $schema;
}
Кто-нибудь, кто может понять, в чем дело?