#!/usr/bin/python3
#encoding:utf-8


import os
import datetime
import json
import traceback
import requests


__config__ = {
  'log_dir_path':'log'
}


def log(text, data):
  index = 1
  name = os.path.join(
    __config__['log_dir_path'],
    'payment_log_' + datetime.datetime.now().strftime('%Y%m%d%H%M%S%f') + '_1')
  while os.path.exists(name+ '.txt'):
    index += 1
    name = '_'.join(name.split('_')[:-1])+ '_'+str(index)
  savefile = open(name + '.txt', 'w', encoding="utf-8")
  try:
    savefile.write(str(text))
    savefile.write('\n')
  except:
    pass
  try:
    savefile.write(str(data))
  except:
    pass
  savefile.close()


def get_payment_link(payment_data):
  ok, payment_link = False, None
  try:
    amount = str(payment_data["amountcent_int"]/100)
    headers = {
      "accept":"application/json",
      "content-type":"application/json"
    }
    data = {
      "method": "create",
      "store": payment_data["payment_store"],
      "authkey": payment_data["payment_authkey"],
      "framed": 0,
      "order": {
        "cartid": payment_data["uid"],
        "test": payment_data["test"],
        "amount": amount,
        "currency": payment_data["currency_str"],
        "description": payment_data["description"],
      },
      "return": {
        "authorised": payment_data["url_success"],
        "declined": payment_data["url_cancel"],
        "cancelled": payment_data["url_cancel"]
      }
    }
    r = requests.post(
      payment_data["payment_url"],
      json = data,
      headers = headers)
    #log("requests", str([payment_link["payment_url"], data, headers]))
    response = r.json()
    #log("requests", str(r))

    payment_link = response["order"]["url"]
    ok = True
  except:
    log("error2", str(traceback.format_exc())) # ошибка получения данных
  return ok, payment_link


def telr_create_payment_url(payment_data):
  test = True
  ok, payment_link = get_payment_link(payment_data)
  if not ok:
    raise Exception('Error: can not get_payment_link')
  return payment_link
