Skip to content
This repository has been archived by the owner on Jan 5, 2024. It is now read-only.

Commit

Permalink
Fix docs issues from launch review and test jam
Browse files Browse the repository at this point in the history
  • Loading branch information
Ian Mukherjee committed Dec 15, 2023
1 parent 511d8f9 commit 47f40c7
Show file tree
Hide file tree
Showing 14 changed files with 68 additions and 50 deletions.
2 changes: 2 additions & 0 deletions docs/onboarding/0 0 Home.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import LanguageCard from "@components/landing-page/LanguageCard";
import ToolCardsSection from "@components/landing-page/ToolCardsSection";
import WalletsCardsSection from "@components/landing-page/WalletsCardsSection";
import ContractsCardsSection from "@components/landing-page/ContractsCardsSection";
import PaymentsCardsSection from "@components/landing-page/PaymentsCardsSection";
import InfrastructureCardsSection from "@components/landing-page/InfrastructureCardsSection";
import SolutionsCardsSection from "@components/landing-page/SolutionsCardsSection";
import LearnSection from "@components/landing-page/LearnSection";
Expand All @@ -25,6 +26,7 @@ import ResourcesSection from "@components/landing-page/ResourcesSection";
<WalletsCardsSection />
<ContractsCardsSection />
<InfrastructureCardsSection />
<PaymentsCardsSection />
<ToolCardsSection />

<h2>SDKs</h2>
Expand Down
4 changes: 2 additions & 2 deletions docs/onboarding/22 NFT Checkouts/0 Overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ any supported payment option. You and your buyers can expect instant payouts and
| Fiat | Credit & Debit Cards, Apple Pay, Google Pay |
| Crypto | ETH |

Card and other fiat payments are accepted from all 50 US states and most countries.
Card and other fiat payments are accepted from all 50 US states and US-sanctioned countries.

### Supported chains and currencies

Expand All @@ -42,7 +42,7 @@ Card and other fiat payments are accepted from all 50 US states and most countri
| Sepolia | ETH |
| Zora Testnet | ETH |

\* - ERC-20 tokens are available for pro or enterprise customers only.
\* - ERC-20 payments are available for pro or enterprise customers only.

### Fraud prevention & chargeback protection

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,9 @@ Make sure you've [enabled your contract for Payments](enable-contract) first.
### Dashboard

1. Navigate into your contract from the [Contracts > Deploy dashboard page](https://thirdweb.com/dashboard/contracts/deploy).
2. Navigate to the "Payments" page from the sidebar.
2. Navigate to the "Payments" page from the sidebar.
3. Click the "Create New Checkout" button
![Create a new checkout link from the dashboard](./assets/checkout-link/create-new-checkout-link.jpg)
4. Customize the look and feel of your checkout experience, and hit "Create"
![Create a new checkout link from the dashboard](./assets/checkout-link/create-new-checkout-link.jpg)

### API

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ Do not provide a `localhost` URL to test your local server. We recommend testing

To ensure the request came from thirdweb, each webhook request signs the payload and provides this signature in the `x-thirdweb-signature` header.

To verify this signature, create a **SHA-256 HMAC hash** with your **thirdweb payments secret key** that can be found in the thirdweb dashboard [payments settings](https://thirdweb.com/dashboard/payments/settings) and the **body payload as the message** (as a JSON-encoded string).
To verify this signature, create a **SHA-256 HMAC hash** with your **thirdweb payments secret key** that can be found on [your Payments Settings page](https://thirdweb.com/dashboard/payments/settings) and the **body payload as the message** (as a JSON-encoded string).

### Example implementation

Expand All @@ -148,7 +148,7 @@ Here's a simplified HTTP handler in Next.js:
import { createHmac, timingSafeEqual } from "crypto";

const thirdwebCheckoutsWebhookHandler = (req, res) => {
const apiKey = "<YOUR_API_KEY>"; // Your thirdweb payments secret key
const webhookSecret = "<YOUR_API_SECRET_KEY>"; // Your webhook secret key

// Get the provided signature.
const signature = req.headers["x-thirdweb-signature"];
Expand Down
Original file line number Diff line number Diff line change
@@ -1,38 +1,12 @@
---
slug: /checkouts/thirdweb-contracts
title: thirdweb Contracts
title: Pre-Built Contracts
---

## Integration

For some thirdweb contracts, set `contractArgs` when creating [Shareable Checkout Links](/checkouts/checkout-link), [One-Time Checkout Links](/checkouts/one-time-checkout-link), or [Checkout Elements](/checkouts/elements).

### Signature Drop

This is an ERC-721A contract where the NFT metadata is unique but the claim configuration can be modified for each buyer by creating a _signature_ on your backend. If you don't plan to use signatures, you should consider using the [NFT Drop](https://portal.thirdweb.com/pre-built-contracts/nft-drop) contract.

To customize the NFT metadata, allow dynamic pricing, or enforce an off-chain allowlist, generate a signature on your backend and set `contractArgs`:

```typescript
const signatureDrop = thirdwebSdk.getContract('signature-drop');

// Generate a signature from a payload that provides some configuration override.
const payload = {
to: buyerWalletAddress,
price: "0.01",
mintStartTime: new Date(0),
};
const signature = await signatureDrop.signature.generate(payload);

// Set contractArgs with the payload and signature.
contractArgs = {
payload,
signature,
}
```

See guide: [Create an ERC721A NFT Drop with Signature-Based Minting](https://blog.thirdweb.com/guides/signature-drop/)

### NFT Drop

This is an ERC-721A contract where the NFT metadata is unique but the claim configuration is identical for all buyers. No `contractArgs` should be set.
Expand All @@ -42,7 +16,7 @@ This is an ERC-721A contract where the NFT metadata is unique but the claim conf
This is an ERC-1155 contract where the NFT metadata and claim configuration is identical for all buyers. Set `contractArgs` with the token ID to mint:

```typescript
contractArgs = { tokenId: "0" }
contractArgs = { tokenId: "0" };
```

### Marketplace
Expand All @@ -67,24 +41,24 @@ Your thirdweb contract must have at least one active claim condition, meaning th

Helpful tips for each field:

| Field | Notes |
|-------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **When will this phase start?** | thirdweb can only mint NFTs after this date. |
| **How many NFTs will you drop in this phase?** | Remember to create NFTs on the **NFTs** tab for NFT Drop contracts. |
| Field | Notes |
| ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **When will this phase start?** | thirdweb can only mint NFTs after this date. |
| **How many NFTs will you drop in this phase?** | Remember to create NFTs on the **NFTs** tab for NFT Drop contracts. |
| **How much do you want to charge to claim each NFT?** | For Mumbai, this price must be ≤ 0.0001 MATIC. <br />For Goerli, this price must be ≤ 0.0001 ETH. <br /><br />On production, there is a $2,000 price limit. Please fill out [this Typeform](https://fw3786mcxwl.typeform.com/to/B0xIFoiu) to request an increase. |
| **What currency do you want to use?** | Supported currencies on thirdweb: <br />- Mumbai: MATIC <br />- Polygon: MATIC, USDC, WETH <br />- Goerli: ETH <br />- Ethereum: ETH, USDC |
| **Who can claim NFTs during this phase?** | If you have an allowlist, please add thirdweb's minter wallets. <br />Otherwise leave this blank. |
| **How many NFTs can be claimed per transaction?** | This value must be Unlimited. Otherwise thirdweb's minter wallets will not be able to mint more than this amount. |
| **How many seconds do wallets have to wait in-between claiming?** | This value must be 0. Otherwise thirdweb's minter wallets will fail when many mints occur at once. |
| **What currency do you want to use?** | Supported currencies on thirdweb: <br />- Mumbai: MATIC <br />- Polygon: MATIC, USDC, WETH <br />- Goerli: ETH <br />- Ethereum: ETH, USDC |
| **Who can claim NFTs during this phase?** | If you have an allowlist, please add thirdweb's minter wallets. <br />Otherwise leave this blank. |
| **How many NFTs can be claimed per transaction?** | This value must be Unlimited. Otherwise thirdweb's minter wallets will not be able to mint more than this amount. |
| **How many seconds do wallets have to wait in-between claiming?** | This value must be 0. Otherwise thirdweb's minter wallets will fail when many mints occur at once. |

## Debug common blockchain error responses

| Error Message | Description | Solution |
|-------------------|----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `!Qty` | The buyer is attempting to purchase more than allowed per wallet. | **:warning: Your Claim Condition must allow thirdweb Wallets to mint an unlimited amount.** <br /><br />The **How many NFTs can be claimed per transaction?** setting must be set to Unlimited. Alternatively, allow thirdweb's minter wallets to mint the full supply in a snapshot. |
| `!MaxSupply` | The buyer is attempting to purchase more than the available supply, or the drop is sold out. | Allow more NFTs to be sold, or prevent buyers from navigating to the checkout page if sold out. |
| `cant claim yet` | There is no claim phase, or the claim phase has not started. | Wait until the claim phase has started, or set one claim phase's start date to a past date. |
| `!PriceOrCurrency`| thirdweb sent the incorrect amount or currency to the contract. | thirdweb may be auto-detecting the price incorrectly. Please reach out on [Discord](https://discord.gg/thirdweb). |
| Error Message | Description | Solution |
| ------------------ | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `!Qty` | The buyer is attempting to purchase more than allowed per wallet. | **:warning: Your Claim Condition must allow thirdweb Wallets to mint an unlimited amount.** <br /><br />The **How many NFTs can be claimed per transaction?** setting must be set to Unlimited. Alternatively, allow thirdweb's minter wallets to mint the full supply in a snapshot. |
| `!MaxSupply` | The buyer is attempting to purchase more than the available supply, or the drop is sold out. | Allow more NFTs to be sold, or prevent buyers from navigating to the checkout page if sold out. |
| `cant claim yet` | There is no claim phase, or the claim phase has not started. | Wait until the claim phase has started, or set one claim phase's start date to a past date. |
| `!PriceOrCurrency` | thirdweb sent the incorrect amount or currency to the contract. | thirdweb may be auto-detecting the price incorrectly. Please reach out on [Discord](https://discord.gg/thirdweb). |

_Source: Drop.sol from thirdweb contracts_

Expand Down
2 changes: 1 addition & 1 deletion docs/onboarding/22 NFT Checkouts/2 API Reference.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ The Payments API enables all the functionalities needed to create checkouts.
You must use an API Secret Key to make authenticated calls. These calls should be
made from your backend. [Create an API Key from your thirdweb dashboard.](https://thirdweb.com/dashboard/settings/api-keys)

Provide your secret key as a header: `x-secret-key: your_api_secret_key`
Provide your secret key as a header: `thirdweb_secret_key: your_api_secret_key`

---

Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/onboarding/22 NFT Checkouts/assets/checkouts-overview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
41 changes: 41 additions & 0 deletions src/components/landing-page/PaymentsCardsSection.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import React from "react";
import ProductCard from "./ProductCard";

type Product = {
image: string;
name: string;
description: string;
link: string;
};

const products: Product[] = [
{
image: "/assets/product/checkout.png",
name: "NFT Checkout",
description:
"Secure payments flows that enable your users to purchase NFTs with their credit card",
link: "/checkouts",
},
];

export default function PaymentsSection() {
return (
<div className="explore-products-container">
<h2 className="explore-products-heading" style={{ marginBottom: 12 }}>
Payments
</h2>
<div className="row" style={{ marginBottom: 64 }}>
{products.map((p, i) => (
<div className="col col--4" key={i} style={{ padding: 8 }}>
<ProductCard
image={p.image}
name={p.name}
description={p.description}
link={p.link}
/>
</div>
))}
</div>
</div>
);
}
2 changes: 2 additions & 0 deletions src/theme/DocSidebarItem/Link/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ export const iconMapping = {
Engine: "/assets/product/sdk.png",
"Bundler & Paymaster": "/assets/wallets/smart-wallet.svg",
"RPC Edge": "/assets/product/sdk.png",
Guides: "/assets/resources/guides.svg",
"NFT Checkouts": "/assets/product/checkout.png",
};

export default function DocSidebarItemLink({
Expand Down
Binary file added static/assets/product/checkout.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 47f40c7

Please sign in to comment.