# App2App 개발 가이드

## 소개

* [![](https://static.npmjs.com/da3ab40fb0861d15c83854c29f5f2962.png)npm: favorlet.js](https://www.npmjs.com/package/favorlet.js)
* **favorlet.js Web SDK** 는 FAVORLET 앱을 통해 아래 기능을 호출하고 싶을 때 쉽고 편리하게 사용하기 위한 SDK입니다.

> 사용자의 FAVORLET 지갑 주소를 가져오기 위한 요청
>
> 연결된 FAVOERLET 지갑 주소의 소유 확인을 위한 서명 요청
>
> 연결된 FAVORLET 지갑에 설정된 체인의 플랫폼 코인 전송을 위한 요청
>
> 연결된 FAVORLET 지갑을 통한 컨트랙트 실행 요청

* 지원 네트워크
  * 클레이튼 : Mainnet (8217), Testnet (1001)
  * 폴리곤 : Mainnet (137), Testnet (80001)
  * 이더리움 : Mainnet (1), Testnet (5)
  * BSC : Mainnet (56), Testnet (97)

## 설치

* `npm install favorlet.js` 또는 `yarn add favorlet.js` 을 이용해 다음과 같이 작성해주세요.

```javascript
import { Request, createDeepLink, receipt } from "favorlet.js";
```

## 개요

<figure><img src="https://1707806715-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYtOeQfD0fJSJvvVkh5lk%2Fuploads%2FlvBjXPohsQvhotCFhREF%2Fimage.png?alt=media&#x26;token=c508ca25-be4b-4bb1-8d49-8403021ee048" alt=""><figcaption></figcaption></figure>

API 요청은 `Request`, `createDeepLink`, `receipt` 의 순서로 진행합니다.

`Request`시 고유한 **Request ID**가 발급되어 다른 요청과 구분할 수 있으며 각 단계는 이 **Request ID**로 통신합니다.&#x20;

각 단계에 대한 자세한 설명은 아래를 참고하시길 바랍니다.

## Request

FAVORLET 앱을 통해 실행할 작업 또는 트랜잭션을 요청하는 단계로 네 가지의 종류가 있습니다.

{% hint style="info" %}

* `connectWallet`: 사용자의 FAVORLET 지갑 주소를 가져오기 위한 요청
* `signMessage`: 연결된 FAVORLET 지갑 주소의 소유 확인을 위한 서명 요청
* `sendCoin`: 연결된 FAVORLET 지갑에 설정된 체인의 플랫폼 코인 전송을 위한 요청
* `executeContract`: 연결된 FAVORLET 지갑을 통한 컨트랙트 실행 요청
  {% endhint %}

## createDeepLink

BApp에서 FAVORLET 앱으로 Request 요청시 전달받은 **requestId**를 전달하기 위한 통신 규격에 맞는 주소(DeepLink)를 생성합니다.

{% hint style="info" %}
개발 시 BApp 실행 환경에 따라 생성된 DeepLink를 FAVORLET 앱에 전달하는 방법을 다르게 처리해야 합니다.

* PC
  * 생성된 DeepLink를 qrcode 라이브러리를 이용하여 QR 생성 후 스마트폰으로 스캔
  * QR 생성은 아래 라이브러리 참고
    * [![](https://static.npmjs.com/da3ab40fb0861d15c83854c29f5f2962.png)npm: qrcode](https://www.npmjs.com/package/qrcode)
* Mobile
  * window\.location.href 등을 사용하여 생성된 DeepLink로 직접 이동
    {% endhint %}

{% hint style="info" %}

* DeepLink를 실행하면 FAVORLET 앱 설치 여부에 따라 자동으로 해당 분기가 수행됩니다.
  * 설치된 경우: FAVORLET 앱 실행
  * 설치되지 않은 경우: 해당 OS의 앱 스토어로 이동
    {% endhint %}

## receipt

요청시 발급받은 requestId로 FAVORLET 앱이 수행한 내용의 결과를 확인합니다.

{% hint style="info" %}
Response

* action: Request 종류
* status
  * `requested`: 요청된 상태
  * `executed`: 요청을 실행한 상태
  * `canceled`: 요청을 취소한 상태
  * `failed`: 요청을 실행했으나 실패한 상태
  * `succeed`: 요청을 실행하여 성공한 상태
    {% endhint %}

## Style Guide

서비스 로고, 표기 규정과 관련해서는 아래 페이지를 참고 바랍니다.&#x20;

{% embed url="<https://docs.favorlet.io/about/style>" %}
