Данные
таблица = 'email_orders'
валюты = '["USD", "EUR", "AED", "HKD", "GEL", "CHF", "ARS", "AUD", "BDT", "BHD", "BRL", "CAD", "CLP", "CNY", "CZK", "DKK", "GBP", "HUF", "IDR", "ILS", "INR", "JPY", "KRW", "KWD", "LKR", "MMK", "MXN", "MYR", "NGN", "NOK", "NZD", "PHP", "PKR", "PLN", "RUB", "SAR", "SEK", "SGD", "THB", "TRY", "TWD", "UAH", "VEF", "VND", "ZAR"]'
Статусы
Черновик = 'DRAFT'
Создан = 'CREATED'
Остальные статусы дублируют инвойс, когда уже по нему проходит процедура оплаты (PAID, TIMEOUT...)
SELECT
*
FROM
`laravel`.`settings`
WHERE (`user_id` = $user_id)
AND(`field` = 'email-order-app-id')
ORDER BY
`id`
LIMIT 1;
----
где, ($user_id = 5 к примеру)
Массив данных для создания POS
[
'ownerId' => $user_id,
'name' => 'Email Order', - имя, можно менять, но оно скрыто для пользователя
'type' => 'email-order', - тип POSa
'date' => date('Y-m-d H:i:s'), - php функция, формат даты '2020-06-10 13:05:20'
'api_key' => 'API КЛЮЧ', - генерирую через uuid4
'callback_url' => 'https://checkout.ivendpay.com/email-order-invoice-hook' - для отработки хуков
]
Массив данных для создания настроки
[
'user_id' => $user_id,
'field' => 'email-order-app-id, - имя настройки
'value' => 'полученный ID созданного POS',
'created_at' => date('Y-m-d H:i:s'), - php функция, формат даты '2020-06-10 13:05:20',
'updated_at' => date('Y-m-d H:i:s'), - php функция, формат даты '2020-06-10 13:05:20',
]
----
где, ($user_id = 5 к примеру)
created_at и updated_at - одинаковые даты при создании
$setting = в переменную вытаскиваем настройку, существующую или созданную (см. п: Перед созданием проверяем если ли уже созданное приложение под инвойсы)
Массив данных для создания инвойса
[
'user_id' => $user_id,
'app_id' => $setting->value, - сохраненный в настроку полученный ID созданного POS email-order
'hash' => 'КЛЮЧ', - генерирую hash ключ для открытия созданного инвойса (пример http://checkout.app-ivendpay.art/email-order/68b3db84-c881-4aa8-8133-6b89a9243980)
'status' => 'статус', - см. Статусы
'email' => 'email или NULL', - указываем email адрес или NULL
'total' => '', - сумма согласно Items (price*count)
'currency' => '', - указываем валюту, см. Данные -> валюты
'emails' => '', - указываем json формат доп. почт [{"email":"email1gmail.com"}, {"email":"email2gmail.com"}]
'items' => '', - указываем json формат Items [{"title":"item 1","price":"1","quantity":"10"},{"title":"item 2","price":"20.30","quantity":"6"}]
'expired' => '', - дата истекания срока действия инвойса, формат - 2023-12-27 15:01:00
'exp_date' => '', - дата, формат 2023-12-27
'exp_hour' => '', - часы, целое число (например 35)
'exp_minute' => '', - минуты, целое число (1-59)
'created_at' => date('Y-m-d H:i:s'), - php функция, формат даты '2020-06-10 13:05:20',
'updated_at' => date('Y-m-d H:i:s'), - php функция, формат даты '2020-06-10 13:05:20',
]
----
где, ($user_id = 5 к примеру)
created_at и updated_at - одинаковые даты при создании
----
как делаю расчет expired поля:
protected function expired()
{
if (! empty($this->exp_date) ||
! empty($this->exp_minute) ||
! empty($this->exp_hour)
) {
if (empty($this->exp_date)) {
$expired = new \DateTime(now()->format('Y-m-d H:i'));
} else {
$expired = new \DateTime($this->exp_date .' '. date('H:i'));
}
if (! empty($this->exp_hour)) {
$expired->modify("+{$this->exp_hour} hours");
}
if (! empty($this->exp_minute)) {
$expired->modify("+{$this->exp_minute} minutes");
}
return $expired->format('Y-m-d H:i:s');
}
return null;
}