@mysten/docs 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/dist/bcs/index.md +358 -0
- package/dist/bcs/llms-index.md +4 -0
- package/dist/codegen/index.md +441 -0
- package/dist/codegen/llms-index.md +4 -0
- package/dist/dapp-kit/actions/connect-wallet.md +69 -0
- package/dist/dapp-kit/actions/disconnect-wallet.md +38 -0
- package/dist/dapp-kit/actions/sign-and-execute-transaction.md +96 -0
- package/dist/dapp-kit/actions/sign-personal-message.md +58 -0
- package/dist/dapp-kit/actions/sign-transaction.md +65 -0
- package/dist/dapp-kit/actions/switch-account.md +37 -0
- package/dist/dapp-kit/actions/switch-network.md +37 -0
- package/dist/dapp-kit/dapp-kit-instance.md +162 -0
- package/dist/dapp-kit/getting-started/create-dapp.md +151 -0
- package/dist/dapp-kit/getting-started/next-js.md +162 -0
- package/dist/dapp-kit/getting-started/react.md +172 -0
- package/dist/dapp-kit/getting-started/vue.md +193 -0
- package/dist/dapp-kit/index.md +70 -0
- package/dist/dapp-kit/llms-index.md +26 -0
- package/dist/dapp-kit/react/components/connect-button.md +42 -0
- package/dist/dapp-kit/react/components/connect-modal.md +51 -0
- package/dist/dapp-kit/react/components/index.md +13 -0
- package/dist/dapp-kit/react/dapp-kit-provider.md +86 -0
- package/dist/dapp-kit/react/hooks/index.md +25 -0
- package/dist/dapp-kit/react/hooks/use-current-account.md +33 -0
- package/dist/dapp-kit/react/hooks/use-current-client.md +36 -0
- package/dist/dapp-kit/react/hooks/use-current-network.md +28 -0
- package/dist/dapp-kit/react/hooks/use-current-wallet.md +36 -0
- package/dist/dapp-kit/react/hooks/use-dapp-kit.md +100 -0
- package/dist/dapp-kit/react/hooks/use-wallet-connection.md +48 -0
- package/dist/dapp-kit/react/hooks/use-wallets.md +33 -0
- package/dist/dapp-kit/state.md +169 -0
- package/dist/dapp-kit/theming.md +196 -0
- package/dist/dapp-kit/web-components/connect-button.md +89 -0
- package/dist/dapp-kit/web-components/connect-modal.md +177 -0
- package/dist/kiosk/advanced-examples.md +101 -0
- package/dist/kiosk/from-v1.md +320 -0
- package/dist/kiosk/index.md +22 -0
- package/dist/kiosk/kiosk-client/introduction.md +52 -0
- package/dist/kiosk/kiosk-client/kiosk-transaction/examples.md +119 -0
- package/dist/kiosk/kiosk-client/kiosk-transaction/kiosk-transaction.md +103 -0
- package/dist/kiosk/kiosk-client/kiosk-transaction/managing.md +235 -0
- package/dist/kiosk/kiosk-client/kiosk-transaction/purchasing.md +110 -0
- package/dist/kiosk/kiosk-client/querying.md +237 -0
- package/dist/kiosk/kiosk-client/transfer-policy-transaction/introduction.md +79 -0
- package/dist/kiosk/kiosk-client/transfer-policy-transaction/using-the-manager.md +115 -0
- package/dist/kiosk/llms-index.md +8 -0
- package/dist/llms-index.md +125 -0
- package/dist/payment-kit/getting-started.md +256 -0
- package/dist/payment-kit/index.md +132 -0
- package/dist/payment-kit/llms-index.md +8 -0
- package/dist/payment-kit/payment-kit-sdk.md +747 -0
- package/dist/payment-kit/payment-processing.md +372 -0
- package/dist/payment-kit/registry-management.md +529 -0
- package/dist/seal/index.md +85 -0
- package/dist/seal/llms-index.md +4 -0
- package/dist/slush-wallet/dapp.md +95 -0
- package/dist/slush-wallet/deep-linking.md +465 -0
- package/dist/slush-wallet/index.md +7 -0
- package/dist/slush-wallet/llms-index.md +6 -0
- package/dist/sui/bcs.md +134 -0
- package/dist/sui/clients/core.md +606 -0
- package/dist/sui/clients/graphql.md +101 -0
- package/dist/sui/clients/grpc.md +155 -0
- package/dist/sui/clients/index.md +95 -0
- package/dist/sui/clients/json-rpc.md +239 -0
- package/dist/sui/cryptography/keypairs.md +267 -0
- package/dist/sui/cryptography/multisig.md +194 -0
- package/dist/sui/cryptography/passkey.md +111 -0
- package/dist/sui/cryptography/webcrypto-signer.md +81 -0
- package/dist/sui/executors.md +148 -0
- package/dist/sui/faucet.md +26 -0
- package/dist/sui/hello-sui.md +115 -0
- package/dist/sui/index.md +53 -0
- package/dist/sui/install.md +61 -0
- package/dist/sui/llm-docs.md +32 -0
- package/dist/sui/llms-index.md +44 -0
- package/dist/sui/migrations/0.38.md +58 -0
- package/dist/sui/migrations/sui-1.0.md +455 -0
- package/dist/sui/migrations/sui-2.0/agent-prompt.md +42 -0
- package/dist/sui/migrations/sui-2.0/dapp-kit.md +350 -0
- package/dist/sui/migrations/sui-2.0/deepbook-v3.md +33 -0
- package/dist/sui/migrations/sui-2.0/index.md +158 -0
- package/dist/sui/migrations/sui-2.0/json-rpc-migration.md +386 -0
- package/dist/sui/migrations/sui-2.0/kiosk.md +120 -0
- package/dist/sui/migrations/sui-2.0/sdk-maintainers.md +90 -0
- package/dist/sui/migrations/sui-2.0/seal.md +14 -0
- package/dist/sui/migrations/sui-2.0/sui.md +341 -0
- package/dist/sui/migrations/sui-2.0/suins.md +43 -0
- package/dist/sui/migrations/sui-2.0/wallet-builders.md +66 -0
- package/dist/sui/migrations/sui-2.0/walrus.md +41 -0
- package/dist/sui/migrations/sui-2.0/zksend.md +95 -0
- package/dist/sui/plugins.md +258 -0
- package/dist/sui/sdk-building.md +344 -0
- package/dist/sui/transaction-building/basics.md +299 -0
- package/dist/sui/transaction-building/gas.md +62 -0
- package/dist/sui/transaction-building/intents.md +62 -0
- package/dist/sui/transaction-building/offline.md +73 -0
- package/dist/sui/transaction-building/sponsored-transactions.md +22 -0
- package/dist/sui/utils/derived_objects.md +59 -0
- package/dist/sui/utils/index.md +52 -0
- package/dist/sui/zklogin.md +83 -0
- package/dist/walrus/index.md +527 -0
- package/dist/walrus/llms-index.md +4 -0
- package/dist/zksend/index.md +27 -0
- package/dist/zksend/link-builder.md +192 -0
- package/dist/zksend/llms-index.md +5 -0
- package/package.json +66 -0
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# Getting Started
|
|
2
|
+
|
|
3
|
+
> Install and set up Payment Kit for your Sui dApp
|
|
4
|
+
|
|
5
|
+
> **Note:** This package is in active development and should be used with caution. APIs are experimental and
|
|
6
|
+
> subject to breaking changes without notice. We recommend thoroughly testing any implementation
|
|
7
|
+
> before using in production environments.
|
|
8
|
+
|
|
9
|
+
This guide will help you set up and start using the Payment Kit SDK in your Sui application.
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
Before you begin, ensure you have:
|
|
14
|
+
|
|
15
|
+
- A Sui wallet with testnet/mainnet SUI tokens
|
|
16
|
+
- Basic understanding of TypeScript and the Sui blockchain
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
Install the Payment Kit SDK and the Sui TypeScript SDK:
|
|
21
|
+
|
|
22
|
+
```bash npm2yarn
|
|
23
|
+
npm install --save @mysten/payment-kit @mysten/sui
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Setting Up the Client
|
|
27
|
+
|
|
28
|
+
The Payment Kit SDK extends the standard `SuiGrpcClient` to provide payment functionality. Here's
|
|
29
|
+
how to set it up:
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
|
|
33
|
+
// Create a Sui client with Payment Kit extension
|
|
34
|
+
const client = new SuiGrpcClient({
|
|
35
|
+
network: 'testnet',
|
|
36
|
+
baseUrl: 'https://fullnode.testnet.sui.io:443',
|
|
37
|
+
}).$extend(paymentKit());
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
The client will automatically configure the correct package IDs for the network you're using
|
|
41
|
+
(testnet or mainnet).
|
|
42
|
+
|
|
43
|
+
## Your First Payment
|
|
44
|
+
|
|
45
|
+
Let's process a simple registry-based payment using the default payment registry:
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
|
|
49
|
+
// Create or load your keypair
|
|
50
|
+
const keypair = Ed25519Keypair.generate();
|
|
51
|
+
const sender = keypair.getPublicKey().toSuiAddress();
|
|
52
|
+
|
|
53
|
+
// Create the payment transaction
|
|
54
|
+
const tx = client.paymentKit.tx.processRegistryPayment({
|
|
55
|
+
nonce: crypto.randomUUID(), // Unique identifier for this payment
|
|
56
|
+
coinType: '0x2::sui::SUI', // Coin type (SUI in this case)
|
|
57
|
+
amount: 1n * MIST_PER_SUI, // 1 SUI (in MIST)
|
|
58
|
+
receiver,
|
|
59
|
+
sender: sender,
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
// Sign and execute
|
|
63
|
+
const result = await client.signAndExecuteTransaction({
|
|
64
|
+
transaction: tx,
|
|
65
|
+
signer: keypair,
|
|
66
|
+
options: {
|
|
67
|
+
showEffects: true,
|
|
68
|
+
showEvents: true,
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
// Check transaction status
|
|
73
|
+
if (result.$kind === 'FailedTransaction') {
|
|
74
|
+
throw new Error(`Payment failed: ${result.FailedTransaction.status.error?.message}`);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
console.log('Payment processed:', result.Transaction.digest);
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Understanding the Payment
|
|
81
|
+
|
|
82
|
+
In this example:
|
|
83
|
+
|
|
84
|
+
1. **Nonce**: A unique identifier (UUIDv4) that prevents duplicate payments when using a registry
|
|
85
|
+
2. **Coin Type**: The type of coin being transferred (SUI token)
|
|
86
|
+
3. **Amount**: The payment amount in the smallest unit (MIST for SUI)
|
|
87
|
+
4. **Receiver**: The address receiving the payment
|
|
88
|
+
5. **Sender**: The address sending the payment (must match the transaction signer)
|
|
89
|
+
6. **Registry Name**: The payment registry to use (defaults to `DEFAULT_REGISTRY_NAME`)
|
|
90
|
+
|
|
91
|
+
## Verifying the Payment
|
|
92
|
+
|
|
93
|
+
After processing a payment, you can query the payment record to verify it exists:
|
|
94
|
+
|
|
95
|
+
```ts
|
|
96
|
+
// Query the payment record
|
|
97
|
+
const paymentRecord = await client.paymentKit.getPaymentRecord({
|
|
98
|
+
nonce: crypto.randomUUID(),
|
|
99
|
+
coinType: '0x2::sui::SUI',
|
|
100
|
+
amount: 1n * MIST_PER_SUI,
|
|
101
|
+
receiver,
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
if (paymentRecord) {
|
|
105
|
+
console.log('Payment verified!');
|
|
106
|
+
console.log('Transaction:', paymentRecord.paymentTransactionDigest);
|
|
107
|
+
console.log('Epoch:', paymentRecord.epochAtTimeOfRecord);
|
|
108
|
+
} else {
|
|
109
|
+
console.log('Payment not found');
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Processing an Ephemeral Payment
|
|
114
|
+
|
|
115
|
+
If you don't need duplicate prevention or persistent storage, use ephemeral payments:
|
|
116
|
+
|
|
117
|
+
```ts
|
|
118
|
+
const tx = client.paymentKit.tx.processEphemeralPayment({
|
|
119
|
+
nonce: crypto.randomUUID(),
|
|
120
|
+
coinType: '0x2::sui::SUI',
|
|
121
|
+
amount: 1n * MIST_PER_SUI,
|
|
122
|
+
receiver,
|
|
123
|
+
sender: sender,
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
const result = await client.signAndExecuteTransaction({
|
|
127
|
+
transaction: tx,
|
|
128
|
+
signer: keypair,
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
// Check transaction status
|
|
132
|
+
if (result.$kind === 'FailedTransaction') {
|
|
133
|
+
throw new Error(`Ephemeral payment failed: ${result.FailedTransaction.status.error?.message}`);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
console.log('Ephemeral payment processed:', result.Transaction.digest);
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Ephemeral payments:
|
|
140
|
+
|
|
141
|
+
- Don't create a `PaymentRecord`
|
|
142
|
+
- Don't prevent duplicates
|
|
143
|
+
- Still emit a `PaymentReceipt` event
|
|
144
|
+
- Have lower gas costs
|
|
145
|
+
|
|
146
|
+
## Working with Different Coin Types
|
|
147
|
+
|
|
148
|
+
Payment Kit supports any Sui coin type. Here's how to process payments with custom coins:
|
|
149
|
+
|
|
150
|
+
```ts
|
|
151
|
+
// Example with a custom coin type
|
|
152
|
+
const customCoinType = '0xabcd...::my_coin::MY_COIN';
|
|
153
|
+
|
|
154
|
+
const tx = client.paymentKit.tx.processRegistryPayment({
|
|
155
|
+
nonce: crypto.randomUUID(),
|
|
156
|
+
coinType: customCoinType,
|
|
157
|
+
amount: 5000,
|
|
158
|
+
receiver,
|
|
159
|
+
sender: sender,
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
// Execute the transaction
|
|
163
|
+
const result = await client.signAndExecuteTransaction({
|
|
164
|
+
transaction: tx,
|
|
165
|
+
signer: keypair,
|
|
166
|
+
});
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Error Handling
|
|
170
|
+
|
|
171
|
+
Always wrap payment operations in try-catch blocks:
|
|
172
|
+
|
|
173
|
+
```ts
|
|
174
|
+
try {
|
|
175
|
+
const tx = client.paymentKit.tx.processRegistryPayment({...});
|
|
176
|
+
const result = await client.signAndExecuteTransaction({
|
|
177
|
+
transaction: tx,
|
|
178
|
+
signer: keypair,
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
if (result.$kind === 'FailedTransaction') {
|
|
182
|
+
throw new Error(`Payment failed: ${result.FailedTransaction.status.error?.message}`);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
console.log('Success:', result.Transaction.digest);
|
|
186
|
+
} catch (error) {
|
|
187
|
+
if (error.message.includes('Duplicate')) {
|
|
188
|
+
console.error('Payment already processed');
|
|
189
|
+
} else if (error.message.includes('insufficient')) {
|
|
190
|
+
console.error('Insufficient balance');
|
|
191
|
+
} else {
|
|
192
|
+
console.error('Payment failed:', error.message);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## Creating Payment URIs
|
|
198
|
+
|
|
199
|
+
Payment Kit provides helper functions to create and parse Payment Kit transaction URIs. These URIs
|
|
200
|
+
are useful for generating payment links, QR codes, or deep links in your application:
|
|
201
|
+
|
|
202
|
+
```ts
|
|
203
|
+
|
|
204
|
+
// Create a payment URI
|
|
205
|
+
const paymentUri = createPaymentTransactionUri({
|
|
206
|
+
receiverAddress: '0x123...abc',
|
|
207
|
+
amount: 1000000000n, // 1 SUI in MIST
|
|
208
|
+
coinType: '0x2::sui::SUI',
|
|
209
|
+
nonce: crypto.randomUUID(),
|
|
210
|
+
label: 'Coffee Payment',
|
|
211
|
+
message: 'Payment for espresso',
|
|
212
|
+
registryName: 'my-registry', // Optional: specify a registry name
|
|
213
|
+
// Or use registryId: '0x...' for a specific registry object ID
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
console.log(paymentUri);
|
|
217
|
+
// Output: sui:pay?receiver=0x123...abc&amount=1000000000&coinType=0x2%3A%3Asui%3A%3ASUI&nonce=...&label=Coffee%20Payment&message=Payment%20for%20espresso®istry=my-registry
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
The URI parameters include:
|
|
221
|
+
|
|
222
|
+
- **receiver**: The Sui address receiving the payment (required)
|
|
223
|
+
- **amount**: The payment amount as a positive bigint (required)
|
|
224
|
+
- **coinType**: The coin type being transferred (required)
|
|
225
|
+
- **nonce**: A unique identifier up to 36 characters (required)
|
|
226
|
+
- **registry**: Either a registry name or object ID (optional)
|
|
227
|
+
- **label**: A short label for the payment (optional)
|
|
228
|
+
- **message**: A longer description message (optional)
|
|
229
|
+
- **iconUrl**: URL to an icon for display purposes (optional)
|
|
230
|
+
|
|
231
|
+
You can then parse URIs back into payment parameters:
|
|
232
|
+
|
|
233
|
+
```ts
|
|
234
|
+
|
|
235
|
+
// Parse a payment URI
|
|
236
|
+
const params = parsePaymentTransactionUri(paymentUri);
|
|
237
|
+
// Returns: { receiverAddress, amount, coinType, nonce, label?, message?, iconUrl?, registryName? | registryId? }
|
|
238
|
+
|
|
239
|
+
// Use the parsed parameters to create a transaction
|
|
240
|
+
const tx = client.paymentKit.tx.processRegistryPayment({
|
|
241
|
+
receiver: params.receiverAddress,
|
|
242
|
+
amount: params.amount,
|
|
243
|
+
coinType: params.coinType,
|
|
244
|
+
nonce: params.nonce,
|
|
245
|
+
registryName: params.registryName,
|
|
246
|
+
sender: sender,
|
|
247
|
+
});
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
## Next Steps
|
|
251
|
+
|
|
252
|
+
Now that you understand the basics, explore more advanced features:
|
|
253
|
+
|
|
254
|
+
- [Payment Processing](./payment-processing) - Deep dive into payment models
|
|
255
|
+
- [Registry Management](./registry-management) - Create and configure custom registries
|
|
256
|
+
- [SDK API Reference](./payment-kit-sdk) - Complete SDK API documentation
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# Payment Kit
|
|
2
|
+
|
|
3
|
+
> Accept payments in any coin type on Sui
|
|
4
|
+
|
|
5
|
+
> **Note:** This package is in active development and should be used with caution. APIs are experimental and
|
|
6
|
+
> subject to breaking changes without notice. We recommend thoroughly testing any implementation
|
|
7
|
+
> before using in production environments.
|
|
8
|
+
|
|
9
|
+
The Sui Payment Kit SDK is a TypeScript library that provides a simple and secure way to process
|
|
10
|
+
blockchain payments on the Sui network. It offers flexible payment processing with built-in
|
|
11
|
+
duplicate prevention, configurable payment registries, and comprehensive receipt management.
|
|
12
|
+
|
|
13
|
+
## Overview
|
|
14
|
+
|
|
15
|
+
Payment Kit enables developers to integrate secure payment processing into their Sui applications
|
|
16
|
+
with minimal setup. The SDK provides two payment models:
|
|
17
|
+
|
|
18
|
+
- **Registry-based payments**: Persistent payment records with duplicate prevention and configurable
|
|
19
|
+
expiration
|
|
20
|
+
- **Ephemeral payments**: Lightweight payment processing without persistent storage
|
|
21
|
+
|
|
22
|
+
All payments emit a `PaymentReceipt` that can be stored off-chain for verification and
|
|
23
|
+
record-keeping.
|
|
24
|
+
|
|
25
|
+
## Key Features
|
|
26
|
+
|
|
27
|
+
- **Duplicate Prevention**: Registry-based payments automatically prevent duplicate transactions
|
|
28
|
+
- **Flexible Payment Models**: Choose between registry-based or ephemeral payment processing
|
|
29
|
+
- **Payment Registries**: Create and manage custom payment registries with configurable policies
|
|
30
|
+
- **Receipt Management**: Automatic receipt generation for all payments
|
|
31
|
+
- **Multi-coin Support**: Process payments with any Sui coin type
|
|
32
|
+
- **Configurable Expiration**: Set custom expiration policies for payment records
|
|
33
|
+
- **Fund Management**: Optional registry-managed funds for simplified coin handling
|
|
34
|
+
|
|
35
|
+
## Installation
|
|
36
|
+
|
|
37
|
+
```bash npm2yarn
|
|
38
|
+
npm install --save @mysten/payment-kit @mysten/sui
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Quick Start
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
|
|
45
|
+
// Create a Sui client with a Payment Kit extension
|
|
46
|
+
const client = new SuiGrpcClient({
|
|
47
|
+
network: 'testnet',
|
|
48
|
+
baseUrl: 'https://fullnode.testnet.sui.io:443',
|
|
49
|
+
}).$extend(paymentKit());
|
|
50
|
+
|
|
51
|
+
// Process a registry-based payment
|
|
52
|
+
const tx = client.paymentKit.tx.processRegistryPayment({
|
|
53
|
+
nonce: crypto.randomUUID(),
|
|
54
|
+
coinType: '0x2::sui::SUI',
|
|
55
|
+
amount: 1n * MIST_PER_SUI, // 1 SUI in MIST
|
|
56
|
+
receiver: '0x123...abc',
|
|
57
|
+
sender: '0x456...def',
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// Sign and execute the transaction
|
|
61
|
+
const result = await client.signAndExecuteTransaction({
|
|
62
|
+
transaction: tx,
|
|
63
|
+
signer: keypair,
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
// Check transaction status
|
|
67
|
+
if (result.$kind === 'FailedTransaction') {
|
|
68
|
+
throw new Error(`Payment failed: ${result.FailedTransaction.status.error?.message}`);
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Network Support
|
|
73
|
+
|
|
74
|
+
Payment Kit supports the following Sui networks:
|
|
75
|
+
|
|
76
|
+
- **Mainnet**: Production environment
|
|
77
|
+
- **Testnet**: Testing environment
|
|
78
|
+
|
|
79
|
+
The SDK automatically configures the correct package and object IDs based on the network specified
|
|
80
|
+
in your `SuiGrpcClient` configuration.
|
|
81
|
+
|
|
82
|
+
## Core Concepts
|
|
83
|
+
|
|
84
|
+
### Payment Processing
|
|
85
|
+
|
|
86
|
+
Payment Kit offers two distinct payment processing models to suit different application needs:
|
|
87
|
+
|
|
88
|
+
1. **Registry-based Payments**: Creates a persistent `PaymentRecord` that prevents duplicate
|
|
89
|
+
payments and provides verifiable proof of payment
|
|
90
|
+
2. **Ephemeral Payments**: Processes payments without persistent storage, suitable for scenarios
|
|
91
|
+
where duplicate prevention is handled externally
|
|
92
|
+
|
|
93
|
+
### Payment Registries
|
|
94
|
+
|
|
95
|
+
A `PaymentRegistry` manages payment records and configurations. Benefits include:
|
|
96
|
+
|
|
97
|
+
- Centralized payment tracking
|
|
98
|
+
- Configurable expiration policies
|
|
99
|
+
- Optional fund management
|
|
100
|
+
- Custom naming for easy identification and indexing
|
|
101
|
+
|
|
102
|
+
### Payment Records
|
|
103
|
+
|
|
104
|
+
When using registry-based payments, a `PaymentRecord` is created as a Dynamic Field on the registry.
|
|
105
|
+
Records are identified by a composite key derived from:
|
|
106
|
+
|
|
107
|
+
- Payment nonce (unique identifier)
|
|
108
|
+
- Payment amount
|
|
109
|
+
- Coin type
|
|
110
|
+
- Receiver address
|
|
111
|
+
|
|
112
|
+
### Payment Receipts
|
|
113
|
+
|
|
114
|
+
Every payment (registry-based or ephemeral) emits a `PaymentReceipt` event containing:
|
|
115
|
+
|
|
116
|
+
```ts
|
|
117
|
+
type PaymentReceipt = {
|
|
118
|
+
paymentType: 'Registry' | 'Ephemeral';
|
|
119
|
+
nonce: string;
|
|
120
|
+
amount: number;
|
|
121
|
+
receiver: string;
|
|
122
|
+
coinType: string;
|
|
123
|
+
timestampMs: number;
|
|
124
|
+
};
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Next Steps
|
|
128
|
+
|
|
129
|
+
- [Getting Started Guide](/payment-kit/getting-started) - Detailed setup and usage instructions
|
|
130
|
+
- [Payment Processing](/payment-kit/payment-processing) - Learn about different payment models
|
|
131
|
+
- [Registry Management](/payment-kit/registry-management) - Create and configure payment registries
|
|
132
|
+
- [SDK API Reference](/payment-kit/payment-kit-sdk) - Complete SDK API documentation
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Payment Kit
|
|
2
|
+
> Accept payments in any coin type on Sui
|
|
3
|
+
|
|
4
|
+
- [Payment Kit](./index.md): Accept payments in any coin type on Sui
|
|
5
|
+
- [Getting Started](./getting-started.md): Install and set up Payment Kit for your Sui dApp
|
|
6
|
+
- [Payment Kit SDK](./payment-kit-sdk.md): Payment Kit SDK API reference and configuration
|
|
7
|
+
- [Payment Processing](./payment-processing.md): Process payments and handle transaction results
|
|
8
|
+
- [Registry Management](./registry-management.md): Manage payment registries and accepted coin types
|