#!/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, ref = False, None, None
  try:
    amount = payment_data["amountcent_int"]/100
    headers = {
      "Authorization":"Bearer "+payment_data["merchant_id"],
      "Content-Type":"application/json"
    }
    data = {
      "amount": amount,
      "currency": payment_data["currency_str"],
      "customer": {
        "id": payment_data["uid"],
      },
      "integration": {
        "externalOrderId": payment_data["uid"],
        "returnUrl": payment_data["url_success"]
      }
    }
    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["integration"]["link"]
    ok = True
  except:
    log("error2", str(traceback.format_exc())) # ошибка получения данных
  return ok, payment_link, ref


def payforu_create_payment_url(payment_data):
  ok, payment_link, ref = get_payment_link(payment_data)
  if not ok:
    raise Exception('Error: can not get_payment_link')
  return payment_link, ref

