# Send Platform Coin

### 1. Request.sendCoin <a href="#id-1.-request.sendcoin" id="id-1.-request.sendcoin"></a>

**Parameters**

<table><thead><tr><th width="183">Name</th><th width="178.33333333333331">Type</th><th>Description</th></tr></thead><tbody><tr><td>chainId</td><td>number</td><td>Chain ID of the particular network</td></tr><tr><td>appName</td><td>string</td><td>Name that will appear when sending platform coin in FAVORLE app</td></tr><tr><td>transactions</td><td>object array</td><td>Information required to transfer platform coins (see below for details)</td></tr></tbody></table>

**transactions object contains**

<table><thead><tr><th width="183">Name</th><th width="178.33333333333331">Type</th><th>Description</th></tr></thead><tbody><tr><td>from</td><td>string</td><td>Address to send platform coin</td></tr><tr><td>to</td><td>string</td><td>Address to receive platform coin</td></tr><tr><td>value</td><td>string</td><td>전송할 코인의 양 Amount of coin to send</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="183">Name</th><th width="178.33333333333331">Type</th><th>Description</th></tr></thead><tbody><tr><td>requestId</td><td>string</td><td>ID to track the operation or transaction request</td></tr><tr><td>expiredAt</td><td>number</td><td>The amount of time (in seconds) that an operation or transaction request expires.</td></tr></tbody></table>

**Example**

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

const response = await Request.sendCoin({
  chainId: 8217, // 해당 체인 id
  appName: "BlockChainApp", // FAVORLET 앱에 노출
  transactions: [
    {
      from: "0x{address in hex}", // 코인을 전송할 주소
      to: "0x{address in hex}", // 코인을 받을 주소
      value: "1000000000000000000", // 전송할 코인의 양
    },
  ],
});

console.log(response);
/*
{
  requestId: "56ba790c-aceb-465b-a6f2-33d103b25596",
  expiredAt: 1667891675
}
*/
```

### 2. createDeepLink <a href="#id-2.-createdeeplink" id="id-2.-createdeeplink"></a>

**Parameters**

<table><thead><tr><th width="185">Type</th><th>Description</th></tr></thead><tbody><tr><td>string</td><td>requestId received when requesting</td></tr></tbody></table>

**Response**

<table><thead><tr><th width="185">Type</th><th>Description</th></tr></thead><tbody><tr><td>string</td><td>DeepLink to the request page in FAVORLET app</td></tr></tbody></table>

**Example**

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

const deepLink = createDeepLink(response.requestId); // Request를 통해 받은 requestId

/*
- PC: 생성된 deepLink를 qrcode 라이브러리를 이용하여 QR 생성 후 스마트폰으로 스캔
- Mobile: window.location.href 등을 사용하여 생성된 deepLink로 직접 이동
*/
console.log(deepLink);
// https://app.favorlet.link/?requestId=56ba790c-aceb-465b-a6f2-33d103b25596
```

### 3. receipt <a href="#id-3.-receipt" id="id-3.-receipt"></a>

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

const result = await receipt(response.requestId); // Request를 통해 받은 requestId

console.log(result);
/*
- status에 따라 이후 분기 처리

### requested
{
  requestId: "56ba790c-aceb-465b-a6f2-33d103b25596",
  expiredAt: 1667891675,
  action: "sendCoin",
  transactions: [
    { status: "requested" }
  ]
}

### executed
{
  requestId: "56ba790c-aceb-465b-a6f2-33d103b25596",
  expiredAt: 1667891675,
  action: "sendCoin",
  transactions: [
    { status: "executed" }
  ]
}

### canceled
{
  requestId: "56ba790c-aceb-465b-a6f2-33d103b25596",
  expiredAt: 1667891675,
  action: "sendCoin",
  transactions: [
    { 
      status: "canceled",
      txHash: null,
      errorMessage: null
    }
  ]
}

### failed
{
  requestId: "56ba790c-aceb-465b-a6f2-33d103b25596",
  expiredAt: 1667891675,
  action: "sendCoin",
  transactions: [
    { 
      status: "failed",
      txHash: "0x5a4e16cfe0c21c3cd20456340b8614f585d951d9b931b515b11575d08142a6e2",
      errorMessage: "execution reverted : invalid id"
    }
  ]
}

### succeed
{
  requestId: "56ba790c-aceb-465b-a6f2-33d103b25596",
  expiredAt: 1667891675,
  action: "sendCoin",
  transactions: [
    { 
      status: "succeed",
      txHash: "0x5a4e16cfe0c21c3cd20456340b8614f585d951d9b931b515b11575d08142a6e2",
      errorMessage: null
    }
  ]
}
*/
```
