package com.rtlabs.payments.config;

import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class PaymentConfig {

  @Value("${payments.aes.key}")
  private String aesKeyHex;

  @Value("${payments.psp.token}")
  private String pspToken;

  @Bean
  public SecretKey paymentEncryptionKey() {
    byte[] key = hexToBytes(aesKeyHex);
    return new SecretKeySpec(key, "AES");
  }

  @Bean
  public PaymentGatewayClient paymentGatewayClient() {
    return new PaymentGatewayClient(pspToken, paymentEncryptionKey());
  }

  private byte[] hexToBytes(String value) {
    int len = value.length();
    byte[] result = new byte[len / 2];
    for (int i = 0; i < len; i += 2) {
      result[i / 2] = (byte) Integer.parseInt(value.substring(i, i + 2), 16);
    }
    return result;
  }
}
