IamportUrl constructor

IamportUrl(
  1. String incomeUrl
)

Implementation

IamportUrl(String incomeUrl) {
  this.url = incomeUrl;

  List<String> splittedUrl =
      this.url.replaceFirst(RegExp(r'://'), ' ').split(' ');
  this.appScheme = splittedUrl[0];

  if (Platform.isAndroid) {
    /*
      Android scheme은 크게 3가지 형태
      1. intent://
      2. [app]://
      3. intent:[app]://
      이 세가지를 정상적으로 launch가 가능한 2번 형태로 변환한다
    */
    if (this.isAppLink()) {
      if (this.appScheme!.contains('intent')) {
        List<String> intentUrl = splittedUrl[1].split('#Intent;');
        String host = intentUrl[0];
        // 농협카드 일반결제 예외처리
        if (host.contains(':')) {
          host = host.replaceAll(RegExp(r':'), '%3A');
        }
        List<String> arguments = intentUrl[1].split(';');

        // scheme이 intent로 시작하면 뒷쪽의 정보를 통해 appscheme과 package 정보 추출
        if (this.appScheme! != 'intent') {
          // 현대카드 예외처리
          this.appScheme = this.appScheme!.split(':')[1];
          this.appUrl = this.appScheme! + '://' + host;
        }
        arguments.forEach((s) {
          if (s.startsWith('scheme')) {
            String scheme = s.split('=')[1];
            this.appUrl = scheme + '://' + host;
            this.appScheme = scheme;
          } else if (s.startsWith('package')) {
            String package = s.split('=')[1];
            this.package = package;
          }
        });
      } else {
        this.appUrl = this.url;
      }
    } else {
      this.appUrl = this.url;
    }
  } else {
    this.appUrl = this.url;
  }
}