Перейти к основному содержимому

Подготовка бэкенда

  1. Получить объект Order.
    • Если Order уже создан, запросить его через метод GetOrderByID или GetOrders с параметром external_id. Крайне рекомендуется выполнить этот шаг для того, чтобы избежать дублирования заказов и возможного дублирования оплат.
    • Если для текущего заказа еще не создан Order, создать его через метод CreateOrder.
  2. Вернуть access_token полученного объекта Order.

Пример:

API_URL = "https://stage-api.ioka.kz"
API_KEY = 'YOUR_API_KEY'

app = Flask()

@app.route('/startPayment', methods=['POST'])
def start_payment():
# Получаем тело запроса с необходимыми свойствами (`external_id` заказа, `amount`, `currency` и т.д.)
payload = json.loads(request.data)

# Запрашиваем `Order` с помощью `external_id`
response = requests.get(
url=f"{API_URL}/v2/orders",
headers={
'API-KEY': API_KEY
},
params={
'external_id': payload['order_external_id']
}
)
if response.status_code == 200:
# `Order` найден. Достаём `access_token` и возвращаем его в ответе.
order = response.json()[0]
return jsonify({
"order_access_token": order['access_token']
})
elif response.status_code == 404:
# `Order` не найден. Создаём новый объект путём передачи `external_id`, `amount` и (опционально) `currency`
response = requests.post(
url=f"{API_URL}/v2/orders",
headers={
'Content-Type': 'application/json',
'API-KEY': API_KEY
},
json={
"external_id": payload['order_external_id'],
"amount": payload['amount']
}
)
if response.status_code == 200:
# `Order` создан. Достаём `access_token` и возвращаем его в ответе.
order = response.json()
return jsonify({
"order_access_token": order['access_token']
})

# Что-то пошло не так. Обрабатываем и возвращаем ошибку.
return jsonify({
'status': 'error'
})

При необходимости создайте вебхуки, чтобы обрабатывать изменения состояния заказа. Скорее всего, вам понадобится обрабатывать события оплаты или авторизации платежа.