ข้ามไปยังเนื้อหา
เปิดแอป

มินต์จากหน้าเว็บของคุณ

ขายคอลเลกชัน KURV จากหน้าเว็บของคุณเองได้สองวิธี ทั้งสองวิธีใช้ได้บน Base และ Solana และค่าธรรมเนียมออนเชน ราคา และกฎการขายทุกข้อยังคงมีผลเหมือนเดิม สัญญาหรือโปรแกรมเดียวกันรับการชำระเงินเดียวกัน

สิ่งที่ต้องการสิ่งที่ใช้
วางโค้ดบรรทัดเดียวแล้วได้ปุ่มมินต์ปุ่มมินต์: ผู้ซื้อลงนามในหน้าต่าง KURV
ให้ผู้ซื้ออยู่ในหน้าเว็บของคุณพร้อมตัวเชื่อมต่อวอลเล็ตของคุณเองไคลเอนต์ KURV: ผู้ซื้อลงนามในวอลเล็ตของตนเอง

ระบุเครือข่ายด้วย 84532 (Base Sepolia) หรือ solana:devnet (Solana Devnet) ที่อยู่ของคอลเลกชันอยู่ในAPI สาธารณะ

<div id="mint" data-kurv-mint data-chain="84532" data-address="0x8354d02d8022f455db9acb235c6f6655c8adabd3"></div>
<script src="https://testnet.kurv.fun/sdk/mint-button/v1.js" async></script>
<script>
document.getElementById('mint').addEventListener('kurv:mint', (event) => {
if (event.detail.status === 'minted') console.log(event.detail.tx, event.detail.tokenIds);
});
</script>

การกดหนึ่งครั้งจะเปิดหน้าต่าง KURV ผู้ซื้อลงนามที่นั่นด้วยบัญชี KURV หรือวอลเล็ต และหน้าเว็บของคุณไม่เคยแตะต้องวอลเล็ตหรือคีย์ ตั้งค่า data-label, data-background และ data-color เพื่อใช้ถ้อยคำและสีของคุณเอง หากเว็บไซต์ของคุณส่ง Content-Security-Policy ให้อนุญาต https://testnet.kurv.fun ใน script-src

หน้าต่างจะทักทายหน้าเว็บของคุณก่อน และชื่อเว็บไซต์จะปรากฏในหน้าต่างก็ต่อเมื่อหน้าเว็บของคุณตอบกลับจากต้นทางของตัวเอง จากนั้นหน้าต่างจะตัดการเชื่อมกับหน้าเว็บของคุณ ดังนั้นไม่มีสิ่งใดบนหน้าเว็บที่แตะหน้าต่างซึ่งกำลังลงนามอยู่ได้ คำตอบมาจากต้นทางของ KURV ตรวจสอบด้วยค่าสุ่มที่การกดครั้งนั้นสร้างขึ้น และส่งไปยังต้นทางของหน้าเว็บคุณเท่านั้น แล้วสคริปต์จะส่งเหตุการณ์ kurv:mint บนองค์ประกอบ:

statusความหมาย
mintedการมินต์เสร็จสิ้น: chain, collection, tx, tokenIds, quantity อาจมาหลัง closed ได้เมื่อการเข้าสู่ระบบใช้เวลานาน
closedไม่พบสัญญาณจากหน้าต่างมาระยะหนึ่งและไม่มีการมินต์ KURV ไม่เคยบอกเหตุผล
blockedเบราว์เซอร์ปฏิเสธการเปิดหน้าต่าง ให้ขอให้ผู้ซื้ออนุญาต

หน้าเว็บของคุณไม่รู้อะไรเลยเกี่ยวกับผู้ซื้อที่ไม่มินต์ ทั้งวอลเล็ตของเขา และการอยู่ในรายชื่ออนุญาตหรือไม่ หน้าของ KURV เป็นที่เดียวที่ผู้ซื้อจะได้อ่านคำตอบเหล่านี้

เว็บไซต์ที่ส่ง Cross-Origin-Opener-Policy: same-origin ตอบคำทักทายไม่ได้ การมินต์และคำตอบยังใช้งานได้ แต่หน้าต่างจะไม่แสดงชื่อเว็บไซต์ ให้ใช้ same-origin-allow-popups แทน และให้ถือว่า tx เป็นเพียงคำอ้างจนกว่าเซิร์ฟเวอร์ของคุณเองจะอ่านบนเชนแล้ว

โมดูล ES ตัวเดียวที่ไม่มีส่วนที่ต้องพึ่งพา โดยมีชนิดข้อมูลอยู่ข้างกันใน v1.d.ts โมดูลนี้ขอใบเสนอราคาล่าสุดและคำสั่งเรียกที่ตรงสำหรับผู้ซื้อรายนี้จากAPI สาธารณะ รวมถึงหลักฐานรายชื่ออนุญาต แล้วส่งต่อให้วอลเล็ตของผู้ซื้อ

import { createKurvClient, eip1193Wallet } from 'https://testnet.kurv.fun/sdk/client/v1.js';
const kurv = createKurvClient();
const [account] = await window.ethereum.request({ method: 'eth_requestAccounts' });
const result = await kurv.mint({
chain: '84532',
address: '0x8354d02d8022f455db9acb235c6f6655c8adabd3',
wallet: eip1193Wallet(window.ethereum, account),
quantity: 1,
// Show the buyer the amounts, and answer false to sign nothing.
review: (plan) => confirm(`Pay at most ${plan.quote.max_total_base_units} base units?`),
});

บน Solana ให้ใช้วอลเล็ตแบบ Wallet Standard KURV ลงนามเฉพาะบัญชีของชิ้นงานใหม่เอง ส่วนวอลเล็ตลงนามและจ่ายในฐานะผู้ซื้อ ค่าธรรมเนียมเครือข่ายและค่าเช่าบัญชีเป็น SOL

import { createKurvClient, walletStandardWallet } from 'https://testnet.kurv.fun/sdk/client/v1.js';
const kurv = createKurvClient();
const result = await kurv.mint({
chain: 'solana:devnet',
address: collectionAddress,
wallet: walletStandardWallet(wallet, account, 'solana:devnet'),
});

ตัวเชื่อมต่อใดก็ใช้ได้ evmWallet และ solanaWallet ห่อของคุณได้ในไม่กี่บรรทัด ไคลเอนต์ไม่เคยเห็นคีย์

kurv.prepareMint({ chain, address, wallet, quantity }) ตอบกลับเป็นแผนและไม่ลงนามอะไรเลย และแผนนั้นคือใบเสนอราคา: quote.total_base_units ในตอนนี้ และ quote.max_total_base_units ซึ่งเป็นจำนวนสูงสุดที่ผู้ซื้อรายนี้อาจถูกเรียกเก็บเป็นเหรียญของคอลเลกชัน โดยสัญญาหรือโปรแกรมเป็นผู้บังคับใช้ ช่วงการขายที่มีเหรียญที่สองจะเรียกเก็บ quote.additional_total_base_units เป็นเหรียญนั้นเพิ่มด้วย และค่าธรรมเนียมเครือข่ายคิดเพิ่มจากนี้ คอลเลกชันที่ขายด้วยราคาที่สูงขึ้นเรื่อย ๆ จะลงนามสูงกว่าใบเสนอราคาเล็กน้อย เพื่อไม่ให้การมินต์ที่เข้ามาก่อนทำให้การมินต์ของผู้ซื้อล้มเหลว

แผนเดียวกันนี้ผ่าน HTTP โดยไม่ต้องมีบัญชีและไม่ต้องมีคีย์:

Terminal window
curl -X POST https://testnet.kurv.fun/api/v1/collections/84532/0x8354d02d8022f455db9acb235c6f6655c8adabd3/mint-call \
-H 'content-type: application/json' \
-d '{"wallet":"0xYourBuyer","quantity":1}'
error.codeความหมายสิ่งที่ควรทำ
not_on_allowlistช่วงการขายนี้สำหรับรายชื่ออนุญาตของตนแจ้งผู้ซื้อ
not_openคอลเลกชันไม่ได้เปิดขายอยู่ในขณะนี้แสดงช่วงถัดไปจากบันทึกของคอลเลกชัน
use_windowการประมูล หรือช่วงถัดไปที่ใช้เหรียญที่สองเปิด error.window_url
rate_limitedมีคำขอจากเครือข่ายนี้มากเกินไปลองใหม่อีกสักครู่

บันทึกโค้ดนี้เป็นไฟล์บนเว็บไซต์ https ใดก็ได้ หรือรันจากเครื่องของคุณเอง แล้วกดปุ่ม ต้องมีวอลเล็ตบนเบราว์เซอร์ที่ใช้ Base Sepolia

<!doctype html>
<meta charset="utf-8">
<title>Mint</title>
<button id="mint">Mint</button>
<p id="said" role="status"></p>
<script type="module">
import { createKurvClient, eip1193Wallet } from 'https://testnet.kurv.fun/sdk/client/v1.js';
const kurv = createKurvClient();
const said = document.getElementById('said');
document.getElementById('mint').addEventListener('click', async () => {
try {
const [account] = await window.ethereum.request({ method: 'eth_requestAccounts' });
const result = await kurv.mint({
chain: '84532',
address: '0x8354d02d8022f455db9acb235c6f6655c8adabd3',
wallet: eip1193Wallet(window.ethereum, account),
review: (plan) => confirm(`Pay at most ${plan.quote.max_total_base_units} base units?`),
});
said.textContent = result.status === 'minted' ? `Minted: ${result.tx}` : 'Nothing was signed.';
} catch (error) {
said.textContent = error.message;
}
});
</script>

ผลงานที่ยังไม่เผยยังคงถูกปิดผนึกในทุกขั้นตอนนี้ API ตอบเฉพาะคำสั่งเรียกและจำนวนเงิน ไม่เคยตอบไฟล์ของคอลเลกชันที่ปิดผนึก ดูความเสี่ยงและข้อจำกัดความรับผิดชอบ

เนื้อหาในที่นี้ไม่ใช่คำแนะนำทางการเงิน โปรดอ่านความเสี่ยงและข้อจำกัดความรับผิดชอบก่อนมินต์ ซื้อ หรือขายคืน กลับไปที่ kurv.fun นโยบายความเป็นส่วนตัว ข้อกำหนดการใช้งาน