import Adyen
import json
import uuid
from main.config import get_adyen_api_key, get_adyen_merchant_account

'''
Retrieve available payment methods by calling /paymentMethods
Request only needs to include merchantAccount, but you can include more information to get a more refined response
Should have a payment state on your server from which you can fetch information like amount and shopperReference
'''


def adyen_payment_methods(locale_data):
    adyen = Adyen.Adyen()
    adyen.payment.client.xapikey = get_adyen_api_key()
    adyen.payment.client.platform = "test" # change to live for production
    adyen.payment.client.merchant_account = get_adyen_merchant_account()

    payment_methods_request = {}

    payment_methods_request['reference'] = f"Reference {uuid.uuid4()}"  # provide your unique payment reference
    payment_methods_request['countryCode'] = locale_data['countryCode'] 
    payment_methods_request['shopperReference'] = "UniqueReference"
    payment_methods_request['channel'] = "Web"
    payment_methods_request['merchantAccount'] = "CheckoutCreateDemo"



    print("/paymentMethods request:\n" + str(payment_methods_request))

    payment_methods_response = adyen.checkout.payment_methods(payment_methods_request)
    formatted_response = json.dumps((json.loads(payment_methods_response.raw_response)))

    print("/paymentMethods response:\n" + formatted_response)
    return formatted_response