<p align="center">
  <img width="120" src="./images/stamp.png" alt="echoss stamp">
</p>
<h2 align="center">12cm echoss SDK</h2>

## Installation
npm install 12cm-echoss-sdk@latest

<br/>

## echoss Client SDK

### Overview

This document introduces echoss Client SDK's configuration and it's how to use based on Vue.

### Usage

#### HTML
```html
<div class="app-container"></div>
```

#### Script
```javascript
import echoss from '12cm-echoss-sdk/echoss-lite/index.js'

export default {
  components: { echoss },
  created () {
    echoss.initializeSuccess = () => {
      echoss.Stamp.init(() => {
        // Initialize Success
      }, (errorCode, errorMessage) => {
        // Initialize Failure
      })
    }

    echoss.setLanguageCode(echoss.LANGUAGE_CODE_TYPE.KOREAN)
    echoss.initialize(result.apiKey, echoss.REGION_CODE_TYPE.KOREA, 'app-container')

    echoss.Stamp.onBeforeStamp = () => {
      // When the stamp is recognized on the screen, the following function is called.
    }

    echoss.Stamp.onException = (errorCode, errorMessage) => {
      // If an exception case occurs that cannot authenticate the stamp, the following callback function is called.
    }

    echoss.Stamp.onError = (errorCode, errorMessage) => {
      // When the stamp is not available on current web page or needs to be recognized again, the following callback function is called.
    }

    echoss.Stamp.onStamp = (stampParams) => {
      // If the stamp data is encrypted after the stamp recognition function is called, the following function is automatically called.
    }
  }
}
```

#### Initialization Region
<table>
  <tbody>
    <tr>
      <th valign="middle" style="text-align: center">
        Region
      </th>
      <th valign="middle" style="text-align: center">
        Code
      </th>
    </tr>
    <tr>
      <td align="center" valign="middle">
        Korea
      </td>
      <td valign="middle">
        echoss.REGION_CODE_TYPE.KOREA
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        Japan
      </td>
      <td valign="middle">
        echoss.REGION_CODE_TYPE.JAPAN
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        China
      </td>
      <td valign="middle">
        echoss.REGION_CODE_TYPE.CHINA
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        Taiwan
      </td>
      <td valign="middle">
        echoss.REGION_CODE_TYPE.TAIWAN
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        Europe
      </td>
      <td valign="middle">
        echoss.REGION_CODE_TYPE.EUROPE
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        AP-South East1<br/>(Singapore, Malaysia)
      </td>
      <td valign="middle">
        echoss.REGION_CODE_TYPE.APSE1
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        AP-South East2<br/>(Indonesia, Vietnam)
      </td>
      <td valign="middle">
        echoss.REGION_CODE_TYPE.APSE2
      </td>
    </tr>
  </tbody>
</table>

#### Language
<table>
  <tbody>
    <tr>
      <th valign="middle" style="text-align: center">
        Language
      </th>
      <th valign="middle" style="text-align: center">
        Code
      </th>
    </tr>
    <tr>
      <td align="center" valign="middle">
        Korean
      </td>
      <td valign="middle">
        echoss.LANGUAGE_CODE_TYPE.KOREAN
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        English
      </td>
      <td valign="middle">
        echoss.LANGUAGE_CODE_TYPE.ENGLISH
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        Japanese
      </td>
      <td valign="middle">
        echoss.LANGUAGE_CODE_TYPE.JAPANESE
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        Simplified Chinese
      </td>
      <td valign="middle">
        echoss.LANGUAGE_CODE_TYPE.CHINESE
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        Traditional Chinese
      </td>
      <td valign="middle">
        echoss.LANGUAGE_CODE_TYPE.TAIWAN
      </td>
    </tr>
  </tbody>
</table>

<br/>

## echoss Service Provider

### Overview

This document explains how to use service page and stamps with the echoss Certification Kit.

### Usage

#### HTML
```html
<echoss-certification-kit
      :license="license"
      :region="region"
      :language="language"
      :usercode="usercode"
      :merchantcode="merchantcode"
      :options="options"
      :on-initialize-error="onInitializeError"
      :on-stamp-error="onStampError"
      :on-stamp-success="onStampSuccess"
      :on-before-stamp="onBeforeStamp"
      :on-close="onClose" />
```

#### Script
```javascript
import EchossCertificationKit from '12cm-echoss-sdk/echoss-provider/index.vue'

export default {
  components: { EchossCertificationKit },
  data() {
    return {
      license: 'ENTER_LICENSE_CODE',
      region: 'KOREA',
      language: 'KOREAN',
      usercode: 'ENTER_USER_CODE',
      merchantcode: 'ENTER_MERCHANT_CODE',
      options: {
        backgroundcolor: '#000000',
        opacity: 0.4,
        description: 'Please take a stamp',
        loading: true,
        animation: true,
        echossicon: true
      }
    }
  },
  methods: {
    onInitializeSuccess() {
      // Initialize Success
    },
    onInitializeError(errorCode, errorMessage) {
      // Initialize Failure
    },
    onBeforeStamp() {
      // When the stamp is recognized, the following callback function would be called.
    },
    onStampError(errorCode, errorMessage) {
      // Following callback function would be called if the users cannot use the service in Service Page or close it.
    },
    onStampSuccess(response) {
      // Following callback function would be called if stamp is verified successfully. Result consists of license ID, user code and token information.
    },
    onClose() {
      // When users closer the provider page.
    }
  }
}
```

#### Parameter Specification
<table>
  <tbody>
    <tr>
      <th valign="middle" style="text-align: center">
        Parameter
      </th>
      <th valign="middle" style="text-align: center">
        Description
      </th>
    </tr>
    <tr>
      <td align="center" valign="middle">
        license
      </td>
      <td valign="middle">
        License ID provided by 12cm
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        region
      </td>
      <td valign="middle">
        Set the region for API server access.
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        language
      </td>
      <td valign="middle">
        Set the language for API messages.
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        usercode
      </td>
      <td valign="middle">
        User unique code of clients' membership system. When all users using same number attempt simultaneous authentication at one service, it can cause error because the system can misunderstand that one user is causing improper authentication.
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        merchantcode
      </td>
      <td valign="middle">
        Merchant Unique Code. Available to input merchant code, brand code, merchant unique code provided by 12CM. Or can deliver in blank incase the merchant cannot manage unique merchant number.
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        options
      </td>
      <td valign="middle">
        etc options.
      </td>
    </tr>
  </tbody>
</table>

#### options
<table>
  <tbody>
    <tr>
      <th valign="middle" style="text-align: center">
        Parameter
      </th>
      <th valign="middle" style="text-align: center">
        Description
      </th>
    </tr>
    <tr>
      <td align="center" valign="middle">
        backgroundcolor
      </td>
      <td valign="middle">
        Change the background color in the service page.
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        opacity
      </td>
      <td valign="middle">
        Change the background opacity in the service page.
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        description
      </td>
      <td valign="middle">
        Change the exposed text in the service page.
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        loading
      </td>
      <td valign="middle">
        On the Services page, set whether to show or not the loading effect for stamp recognition. Enter 'true' to allow loading effects in the request parameter, or 'false' if not. The
        <br/>
        default value is true.
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        animation
      </td>
      <td valign="middle">
        On the Services page, set whether to show or not the background animation. Enter 'true' to expose animation on background, or 'false' if not.
        <br/>
        The default value is true.
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        echossicon
      </td>
      <td valign="middle">
        On the Services page, set whether to use or not the echoss Icon. Enter 'true' to use echoss Icon in the request parameter, or 'false' if not.
        <br/>
        The default value is true.
      </td>
    </tr>
  </tbody>
</table>

#### Initialization Region
<table>
  <tbody>
    <tr>
      <th valign="middle" style="text-align: center">
        Region
      </th>
      <th valign="middle" style="text-align: center">
        Code
      </th>
    </tr>
    <tr>
      <td align="center" valign="middle">
        Korea
      </td>
      <td valign="middle">
        KOREA
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        Japan
      </td>
      <td valign="middle">
        JAPAN
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        China
      </td>
      <td valign="middle">
        CHINA
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        Taiwan
      </td>
      <td valign="middle">
        TAIWAN
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        Europe
      </td>
      <td valign="middle">
        EUROPE
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        AP-South East1<br/>(Singapore, Malaysia)
      </td>
      <td valign="middle">
        APSE1
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        AP-South East2<br/>(Indonesia, Vietnam)
      </td>
      <td valign="middle">
        APSE2
      </td>
    </tr>
  </tbody>
</table>

#### Language
<table>
  <tbody>
    <tr>
      <th valign="middle" style="text-align: center">
        Language
      </th>
      <th valign="middle" style="text-align: center">
        Code
      </th>
    </tr>
    <tr>
      <td align="center" valign="middle">
        Korean
      </td>
      <td valign="middle">
        KOREAN
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        English
      </td>
      <td valign="middle">
        ENGLISH
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        Japanese
      </td>
      <td valign="middle">
        JAPANESE
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        Simplified Chinese
      </td>
      <td valign="middle">
        SIMPLIFIED_CHINESE
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
        Traditional Chinese
      </td>
      <td valign="middle">
        TRADITIONAL_CHINESE
      </td>
    </tr>
  </tbody>
</table>
