# 集成 NFT Checkout 页面

## 使用权限

成为[高级合作伙伴](https://dev.fatpay.org/zh/get-started/onboarding)后，您将获得专属的 partnerId及密钥，用于签名URL。

{% hint style="danger" %}
若同时集成on-ramp法币入金与NFT Checkout，会分配两个partnerId，注意区分使用场景。
{% endhint %}

## 页面 URL

### **域名**

```html
https://ramp.fatpay.xyz/home
```

拼接参数后的 URL 实例

{% code overflow="wrap" %}

```html
https://ramp.fatpay.xyz/home?nonce=123321&partnerId=KOZiIRdpZ&timestamp=1676532904&timeout=1676619304&contractAddress=0x407c5d2c02ab0e4b0a98d14778a5de180eb1357f&nftNetwork=ethereum&tokenId=245&type=MARKET&ownerWalletAddress=0x407c5d2c02ab0e4b0a98d14778a5de180eb1367f&transferWalletAddress=0x1D894C1D34B462796c6f43A9d086C9F175CCb422&cryptoCurrency=USDC_POLYGON&amount=200&walletAddress=0x2D463C1D34B462796c6f43A9d086C9F175CCb488&signature=oM378von68VI5BNS%2FC9wGSR5S%2BDteuPv%2BFGpW%2FvgreQ%3D
```

{% endcode %}

### 公共参数

{% hint style="warning" %}
参数名称及参数值均为大小写敏感
{% endhint %}

<table><thead><tr><th width="136">参数名称</th><th width="112">类型</th><th width="100">是否必填</th><th width="126">是否参与签名</th><th width="215">说明</th><th width="227">示例</th></tr></thead><tbody><tr><td>partnerId</td><td>String</td><td>是</td><td>是</td><td>合作伙伴 id<br>1. 若使用快速启动方式，可赋值为 <em>public ，</em>即公共合作伙伴<br>2. 若作为<a href="../get-started/onboarding">基础合作伙伴或高级合作伙伴</a>接入，则填入对应的合作伙伴 id</td><td>partnerId=<em>public</em></td></tr><tr><td>timestamp</td><td>String(10)</td><td>是</td><td>是</td><td>Unixtime 时间戳，精确到秒</td><td>timestamp=1656600459</td></tr><tr><td>timeout</td><td>String(10)</td><td>是</td><td>是</td><td>收银台过期时间，Unixtime 时间戳，精确到秒，超时后该链接无法下单</td><td>timestamp=1656600459</td></tr><tr><td>nonce</td><td>String(6)</td><td>是</td><td>是</td><td>随机正整数</td><td>nonce=183214</td></tr><tr><td>signature</td><td>String</td><td>是</td><td>否</td><td>签名值的生成具体请见 <a href="integration-tutorial/widget-signature">加签</a></td><td>signature=4UoZ2gIm3bcLTw5K6WdBJIaYBiXgQF3uvOfY4Ovc6+4=</td></tr></tbody></table>

### NFT基础信息

传入的NFT合约地址及TokenId需真实有效，NFT Checkout用户端会获取NFT名称及图片信息

{% hint style="warning" %}
参数名称及参数值均为大小写敏感
{% endhint %}

<table><thead><tr><th width="177">参数名称</th><th width="88">类型</th><th width="198">是否必填</th><th width="133">是否参与签名</th><th width="200">说明</th><th width="140">示例</th></tr></thead><tbody><tr><td>contractAddress</td><td>String</td><td>是</td><td>是</td><td>NFT合约地址地址</td><td>contractAddress=0x407c5d2c02ab0e4b0a98d14778a5de180eb1357f</td></tr><tr><td>nftNetwork</td><td>String</td><td>是</td><td>是</td><td><p>NFT合约所属公链<br> - ethereum</p><p> - polygon</p><p> - bsc</p><p> - optimism<br> - arbitrum<br> - avalanche<br> - fantom<br> - celo<br> - harmony<br>其他公链可联系商务对接人</p></td><td>nftNetwork=ethereum</td></tr><tr><td>tokenId</td><td>String</td><td>type=MARKET，必填<br>type=MINT，不填</td><td>是</td><td>指定NFT的TokenID，若交易类型为Market需提交（二级转让对应TokenID的NFT），若交易类型为Mint不需要提交</td><td>tokenId=245</td></tr><tr><td>merchantUniqueId</td><td>String</td><td>否</td><td>是</td><td>若在中心化平台有NFT的唯一标识，可通过该字段提交，交易成功后订单明细内会返回，方便后续交易匹配</td><td>merchantUniqueId=8888888888</td></tr><tr><td>type</td><td>String</td><td>是</td><td>是</td><td><p>MARKET：二级市场销售</p><p>MINT：铸造</p></td><td>type=MARKET</td></tr><tr><td>mintQuantity</td><td>String</td><td>type=MARKET，不填<br>type=MINT，必填</td><td>是</td><td>≥1的整数<br>- 当type=mint的时候需填写（若不填则默认为1）<br> - 若type=MARKET则忽略该参数</td><td>mintQuantity=1</td></tr><tr><td>ownerWalletAddress</td><td>String</td><td>type=MARKET，必填<br>type=MINT，不填</td><td>是</td><td>NFT当前持有人钱包地址</td><td>ownerWalletAddress=0x407c5d2c02ab0e4b0a98d14778a5de180eb1367f</td></tr><tr><td>transferWalletAddress</td><td>String</td><td>是</td><td>是</td><td>支付后，NFT转让的钱包地址</td><td>transferWalletAddress=0x1D894C1D34B462796c6f43A9d086C9F175CCb422</td></tr></tbody></table>

### NFT定价&结算

传入加密货币类型及金额用途：

* NFT定价：NFT Checkout用户端会根据用户选择的法币类型自动计算法币金额
* 订单结算：FaTPay会根据传入加密货币类型及金额进行结算
* 示例：NFT市场实时价格为0.1ETH，可以指定0.1ETH或0.11ETH，实际定价可以自行指定

{% hint style="warning" %}
参数名称及参数值均为大小写敏感
{% endhint %}

<table><thead><tr><th width="188">参数名称</th><th width="84">类型</th><th width="180">是否必填</th><th width="131">是否参与签名</th><th width="209">说明</th><th width="139">示例</th></tr></thead><tbody><tr><td>cryptoCurrency</td><td>String</td><td>是</td><td>是</td><td><p>指定加密货币</p><p><a href="../appendix/supported-cryptocurrencies-list-1">附录：NFT可支持加密货币</a></p></td><td>cryptoCurrency=USDC_POLYGON</td></tr><tr><td>amount</td><td>String</td><td>是</td><td>是</td><td>指定加密货币金额</td><td>amount=200</td></tr><tr><td>walletAddress</td><td>String</td><td>若为实时结算需填写<br>具体请联系商务</td><td>是</td><td>加密货币结算的钱包地址</td><td>walletAddress=0x2D463C1D34B462796c6f43A9d086C9F175CCb488</td></tr><tr><td>walletAddressTag</td><td>String</td><td>否</td><td>是</td><td>加密货币结算的钱包地址的Tag/Memo（仅支持Tag/Memo的公链支持传该参数，如ATOM）</td><td>walletAddressTag=111</td></tr></tbody></table>

### 合作方外部信息

若在中心化平台有NFT的额外订单信息，可通过以下字段提交，实际使用场景可以自行决定，所有信息都会在订单支付成功后同步返回

{% hint style="warning" %}
参数名称及参数值均为大小写敏感
{% endhint %}

<table><thead><tr><th width="183">参数名称</th><th width="101">类型</th><th>是否必填</th><th width="133">是否参与签名</th><th width="209">说明</th><th width="183">示例</th></tr></thead><tbody><tr><td>merchantOrderNo</td><td>String</td><td>否</td><td>是</td><td>外部商户订单号</td><td>merchantOrderNo=88888888888888</td></tr><tr><td>externalCustomerId</td><td>String</td><td>否</td><td>是</td><td>外部商户客户ID</td><td>externalCustomerId=88888888888888</td></tr><tr><td>ext</td><td>String</td><td>否</td><td>是</td><td>扩展字段，根据合作方诉求自行定义，加签前需要对该字段进行urlencode</td><td>ext=88888</td></tr></tbody></table>

### 自定义控件

{% hint style="warning" %}
参数名称及参数值均为大小写敏感
{% endhint %}

<table><thead><tr><th width="154">参数名称</th><th>类型</th><th>是否必填</th><th>是否参与签名</th><th width="209">说明</th><th>示例</th></tr></thead><tbody><tr><td>language</td><td>String</td><td>否</td><td>否</td><td><p>默认显示语言，用户可 菜单内修改，不传根据系统规则显示默认语言 </p><p><a href="../appendix/languages">附录：语言种类</a></p></td><td>language=en</td></tr><tr><td>fiatCurrency</td><td>String</td><td>否</td><td>否</td><td><p>限制用户只能在给定的法币中选择，多个法币用"," 分隔</p><p><a href="../appendix/supported-fiat-list">附录：可支持法币</a></p></td><td><p>限制选择只能从USD、THB 中选择</p><p>fiatCurrency=USD,THB</p></td></tr><tr><td>defaultFiatCurrency</td><td>String</td><td>否</td><td>否</td><td><p>默认选择的法币</p><p><a href="../appendix/supported-fiat-list">附录：可支持法币</a></p></td><td>默认选择法币USD defaultFiatCurrency=USD</td></tr><tr><td>email</td><td>String</td><td>否</td><td>否</td><td><p>默认填充的邮箱，用户可自行修改。</p><p>邮箱格式校验错误，则邮箱留空 </p></td><td>email=fatpay@fatpay.xyz</td></tr></tbody></table>

## 集成方式

将用户重定向到 FaTPay 链接即可完成服务的嵌入，页面已适配桌面端和移动端，可以很方便的嵌入到桌面Web页或移动端APP内。

### **链接跳转**

```html
<a href="https://rmp.fatpay.xyz/?partnerId=public" target="_blank">Buy with FaTPay</a>
```

以上链接使用公共合作伙伴 partnerId=public，已包含基础的配置，用户进入可享受 FaTPay 的服务，复制粘贴即可。

### **iframe嵌入**

{% code overflow="wrap" %}

```html
<iframe
  src="https://ramp.fatpay.xyz/?partnerId=public&windowOpen=1"
  allow="accelerometer; autoplay; camera; gyroscope; payment"
  width="100%"
  height="100%"
  frameborder="0"
/>
</iframe>
```

{% endcode %}

以上链接使用公共合作伙伴 partnerId=public，已包含基础的配置，用户进入可享受 FaTPay 的服务，复制粘贴即可。

{% hint style="info" %}
少部分国家支付服务商可能不支持在iframe内完成支付，建议追加 windowOpen 参数，控制 FaTPay 后续流程新窗口打开页面完成后续流程
{% endhint %}

## 自定义

同时通过在链接中增加相应参数，即可实现丰富的自定义功能

{% content-ref url="integration-tutorial/interface-customization" %}
[interface-customization](https://dev.fatpay.org/zh/reference/integration-tutorial/interface-customization)
{% endcontent-ref %}

{% hint style="info" %}
为了更高的安全性，必须对URL 进行签名
{% endhint %}

{% content-ref url="integration-tutorial/widget-signature" %}
[widget-signature](https://dev.fatpay.org/zh/reference/integration-tutorial/widget-signature)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dev.fatpay.org/zh/reference/ji-cheng-nft-checkout-ye-mian.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
