moltspay 0.1.2 → 0.1.3
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/dist/guide/index.d.mts +39 -0
- package/dist/guide/index.d.ts +39 -0
- package/dist/guide/index.js +181 -0
- package/dist/guide/index.js.map +1 -0
- package/dist/guide/index.mjs +152 -0
- package/dist/guide/index.mjs.map +1 -0
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +155 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +150 -0
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 支付引导消息生成
|
|
3
|
+
* 用于引导没有支付能力的Agent安装和使用moltspay
|
|
4
|
+
*/
|
|
5
|
+
interface PaymentGuideParams {
|
|
6
|
+
orderId: string;
|
|
7
|
+
prompt: string;
|
|
8
|
+
price: number;
|
|
9
|
+
recipientAddress: string;
|
|
10
|
+
chain?: 'base' | 'base_sepolia';
|
|
11
|
+
serviceName?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 生成完整的支付引导消息
|
|
15
|
+
*/
|
|
16
|
+
declare function generatePaymentGuide(params: PaymentGuideParams): string;
|
|
17
|
+
/**
|
|
18
|
+
* 生成简短的支付提醒
|
|
19
|
+
*/
|
|
20
|
+
declare function generatePaymentReminder(params: {
|
|
21
|
+
orderId: string;
|
|
22
|
+
price: number;
|
|
23
|
+
recipientAddress: string;
|
|
24
|
+
chain?: 'base' | 'base_sepolia';
|
|
25
|
+
}): string;
|
|
26
|
+
/**
|
|
27
|
+
* 生成钱包创建指南
|
|
28
|
+
*/
|
|
29
|
+
declare function generateWalletGuide(): string;
|
|
30
|
+
/**
|
|
31
|
+
* 解析用户消息中的交易hash
|
|
32
|
+
*/
|
|
33
|
+
declare function extractTransactionHash(message: string): string | null;
|
|
34
|
+
/**
|
|
35
|
+
* 判断消息是否包含交易hash
|
|
36
|
+
*/
|
|
37
|
+
declare function hasTransactionHash(message: string): boolean;
|
|
38
|
+
|
|
39
|
+
export { type PaymentGuideParams, extractTransactionHash, generatePaymentGuide, generatePaymentReminder, generateWalletGuide, hasTransactionHash };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 支付引导消息生成
|
|
3
|
+
* 用于引导没有支付能力的Agent安装和使用moltspay
|
|
4
|
+
*/
|
|
5
|
+
interface PaymentGuideParams {
|
|
6
|
+
orderId: string;
|
|
7
|
+
prompt: string;
|
|
8
|
+
price: number;
|
|
9
|
+
recipientAddress: string;
|
|
10
|
+
chain?: 'base' | 'base_sepolia';
|
|
11
|
+
serviceName?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 生成完整的支付引导消息
|
|
15
|
+
*/
|
|
16
|
+
declare function generatePaymentGuide(params: PaymentGuideParams): string;
|
|
17
|
+
/**
|
|
18
|
+
* 生成简短的支付提醒
|
|
19
|
+
*/
|
|
20
|
+
declare function generatePaymentReminder(params: {
|
|
21
|
+
orderId: string;
|
|
22
|
+
price: number;
|
|
23
|
+
recipientAddress: string;
|
|
24
|
+
chain?: 'base' | 'base_sepolia';
|
|
25
|
+
}): string;
|
|
26
|
+
/**
|
|
27
|
+
* 生成钱包创建指南
|
|
28
|
+
*/
|
|
29
|
+
declare function generateWalletGuide(): string;
|
|
30
|
+
/**
|
|
31
|
+
* 解析用户消息中的交易hash
|
|
32
|
+
*/
|
|
33
|
+
declare function extractTransactionHash(message: string): string | null;
|
|
34
|
+
/**
|
|
35
|
+
* 判断消息是否包含交易hash
|
|
36
|
+
*/
|
|
37
|
+
declare function hasTransactionHash(message: string): boolean;
|
|
38
|
+
|
|
39
|
+
export { type PaymentGuideParams, extractTransactionHash, generatePaymentGuide, generatePaymentReminder, generateWalletGuide, hasTransactionHash };
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/guide/index.ts
|
|
21
|
+
var guide_exports = {};
|
|
22
|
+
__export(guide_exports, {
|
|
23
|
+
extractTransactionHash: () => extractTransactionHash,
|
|
24
|
+
generatePaymentGuide: () => generatePaymentGuide,
|
|
25
|
+
generatePaymentReminder: () => generatePaymentReminder,
|
|
26
|
+
generateWalletGuide: () => generateWalletGuide,
|
|
27
|
+
hasTransactionHash: () => hasTransactionHash
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(guide_exports);
|
|
30
|
+
function generatePaymentGuide(params) {
|
|
31
|
+
const {
|
|
32
|
+
orderId,
|
|
33
|
+
prompt,
|
|
34
|
+
price,
|
|
35
|
+
recipientAddress,
|
|
36
|
+
chain = "base",
|
|
37
|
+
serviceName = "\u89C6\u9891\u751F\u6210\u670D\u52A1"
|
|
38
|
+
} = params;
|
|
39
|
+
const chainId = chain === "base" ? 8453 : 84532;
|
|
40
|
+
const chainName = chain === "base" ? "Base \u4E3B\u7F51" : "Base Sepolia \u6D4B\u8BD5\u7F51";
|
|
41
|
+
const explorer = chain === "base" ? "https://basescan.org/tx/" : "https://sepolia.basescan.org/tx/";
|
|
42
|
+
return `\u{1F3AC} **${serviceName}**
|
|
43
|
+
|
|
44
|
+
\u{1F4CB} **\u8BA2\u5355\u4FE1\u606F:**
|
|
45
|
+
- \u8BA2\u5355\u53F7: \`${orderId}\`
|
|
46
|
+
- \u5185\u5BB9: ${prompt.length > 50 ? prompt.slice(0, 50) + "..." : prompt}
|
|
47
|
+
- \u4EF7\u683C: **${price} USDC**
|
|
48
|
+
- \u94FE: ${chainName}
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## \u{1F4B3} \u5982\u4F55\u652F\u4ED8
|
|
53
|
+
|
|
54
|
+
### \u65B9\u5F0F\u4E00\uFF1A\u5B89\u88C5 moltspay SDK\uFF08\u63A8\u8350\uFF09
|
|
55
|
+
|
|
56
|
+
\`\`\`bash
|
|
57
|
+
npm install moltspay ethers
|
|
58
|
+
\`\`\`
|
|
59
|
+
|
|
60
|
+
**\u521B\u5EFA\u94B1\u5305\u5E76\u652F\u4ED8\uFF1A**
|
|
61
|
+
|
|
62
|
+
\`\`\`javascript
|
|
63
|
+
const { SecureWallet, getChain } = require('moltspay');
|
|
64
|
+
const { Wallet } = require('ethers');
|
|
65
|
+
|
|
66
|
+
// 1. \u521B\u5EFA\u65B0\u94B1\u5305\uFF08\u9996\u6B21\u4F7F\u7528\uFF09
|
|
67
|
+
const newWallet = Wallet.createRandom();
|
|
68
|
+
console.log('\u94B1\u5305\u5730\u5740:', newWallet.address);
|
|
69
|
+
console.log('\u79C1\u94A5\uFF08\u8BF7\u5B89\u5168\u4FDD\u5B58\uFF09:', newWallet.privateKey);
|
|
70
|
+
|
|
71
|
+
// 2. \u6216\u4F7F\u7528\u5DF2\u6709\u94B1\u5305
|
|
72
|
+
const wallet = new SecureWallet({
|
|
73
|
+
chainId: ${chainId},
|
|
74
|
+
privateKey: process.env.WALLET_KEY, // \u4F60\u7684\u79C1\u94A5
|
|
75
|
+
limits: { requireWhitelist: false } // \u5141\u8BB8\u5411\u4EFB\u610F\u5730\u5740\u8F6C\u8D26
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// 3. \u67E5\u770B\u4F59\u989D
|
|
79
|
+
const balance = await wallet.getBalance();
|
|
80
|
+
console.log('USDC\u4F59\u989D:', balance.usdc);
|
|
81
|
+
|
|
82
|
+
// 4. \u652F\u4ED8
|
|
83
|
+
const result = await wallet.transfer('${recipientAddress}', '${price}');
|
|
84
|
+
if (result.success) {
|
|
85
|
+
console.log('\u2705 \u652F\u4ED8\u6210\u529F\uFF01');
|
|
86
|
+
console.log('\u4EA4\u6613hash:', result.hash);
|
|
87
|
+
// \u628A\u4EA4\u6613hash\u53D1\u7ED9\u6211
|
|
88
|
+
}
|
|
89
|
+
\`\`\`
|
|
90
|
+
|
|
91
|
+
### \u65B9\u5F0F\u4E8C\uFF1A\u76F4\u63A5\u8F6C\u8D26
|
|
92
|
+
|
|
93
|
+
\u4ECE\u4EFB\u610F\u94B1\u5305\u8F6C\u8D26 USDC\uFF1A
|
|
94
|
+
- **\u94FE:** ${chainName} (Chain ID: ${chainId})
|
|
95
|
+
- **Token:** USDC
|
|
96
|
+
- **\u6536\u6B3E\u5730\u5740:** \`${recipientAddress}\`
|
|
97
|
+
- **\u91D1\u989D:** ${price} USDC
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## \u2705 \u652F\u4ED8\u5B8C\u6210\u540E
|
|
102
|
+
|
|
103
|
+
\u8BF7\u53D1\u9001**\u4EA4\u6613hash**\u7ED9\u6211\uFF0C\u683C\u5F0F\uFF1A
|
|
104
|
+
\`\`\`
|
|
105
|
+
tx: 0x1234...
|
|
106
|
+
\`\`\`
|
|
107
|
+
|
|
108
|
+
\u6216\u76F4\u63A5\u53D1\u9001hash\uFF1A
|
|
109
|
+
\`\`\`
|
|
110
|
+
0x1234abcd...
|
|
111
|
+
\`\`\`
|
|
112
|
+
|
|
113
|
+
\u6211\u4F1A\u9A8C\u8BC1\u94FE\u4E0A\u4EA4\u6613\u540E\u5F00\u59CB\u5904\u7406\u4F60\u7684\u8BF7\u6C42\u3002
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
\u{1F4E6} **moltspay:** https://www.npmjs.com/package/moltspay
|
|
118
|
+
\u{1F517} **\u533A\u5757\u6D4F\u89C8\u5668:** ${explorer}`;
|
|
119
|
+
}
|
|
120
|
+
function generatePaymentReminder(params) {
|
|
121
|
+
const { orderId, price, recipientAddress, chain = "base" } = params;
|
|
122
|
+
const chainName = chain === "base" ? "Base" : "Base Sepolia";
|
|
123
|
+
return `\u23F3 **\u5F85\u652F\u4ED8\u8BA2\u5355: ${orderId}**
|
|
124
|
+
|
|
125
|
+
\u8BF7\u652F\u4ED8 **${price} USDC** \u5230:
|
|
126
|
+
- \u94FE: ${chainName}
|
|
127
|
+
- \u5730\u5740: \`${recipientAddress}\`
|
|
128
|
+
|
|
129
|
+
\u652F\u4ED8\u540E\u53D1\u9001\u4EA4\u6613hash\u7ED9\u6211\u3002
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
\u{1F4A1} \u6CA1\u6709\u652F\u4ED8\u80FD\u529B\uFF1F\u8FD0\u884C \`npm install moltspay\` \u83B7\u53D6\u652F\u4ED8SDK`;
|
|
133
|
+
}
|
|
134
|
+
function generateWalletGuide() {
|
|
135
|
+
return `## \u{1F510} \u521B\u5EFA\u652F\u4ED8\u94B1\u5305
|
|
136
|
+
|
|
137
|
+
**1. \u5B89\u88C5 moltspay:**
|
|
138
|
+
\`\`\`bash
|
|
139
|
+
npm install moltspay ethers
|
|
140
|
+
\`\`\`
|
|
141
|
+
|
|
142
|
+
**2. \u521B\u5EFA\u65B0\u94B1\u5305:**
|
|
143
|
+
\`\`\`javascript
|
|
144
|
+
const { Wallet } = require('ethers');
|
|
145
|
+
|
|
146
|
+
const wallet = Wallet.createRandom();
|
|
147
|
+
console.log('\u5730\u5740:', wallet.address);
|
|
148
|
+
console.log('\u79C1\u94A5:', wallet.privateKey);
|
|
149
|
+
// \u26A0\uFE0F \u8BF7\u5B89\u5168\u4FDD\u5B58\u79C1\u94A5\uFF01
|
|
150
|
+
\`\`\`
|
|
151
|
+
|
|
152
|
+
**3. \u83B7\u53D6 USDC:**
|
|
153
|
+
- \u4E3B\u7F51: \u4ECE\u4EA4\u6613\u6240\u63D0\u5E01\u5230\u4F60\u7684\u94B1\u5305\u5730\u5740
|
|
154
|
+
- \u6D4B\u8BD5\u7F51: \u4F7F\u7528 Base Sepolia faucet
|
|
155
|
+
|
|
156
|
+
**4. \u8BBE\u7F6E\u73AF\u5883\u53D8\u91CF:**
|
|
157
|
+
\`\`\`bash
|
|
158
|
+
export WALLET_KEY="\u4F60\u7684\u79C1\u94A5"
|
|
159
|
+
\`\`\`
|
|
160
|
+
|
|
161
|
+
\u5B8C\u6210\u540E\u5373\u53EF\u4F7F\u7528 moltspay \u8FDB\u884C\u94FE\u4E0A\u652F\u4ED8\uFF01`;
|
|
162
|
+
}
|
|
163
|
+
function extractTransactionHash(message) {
|
|
164
|
+
const match = message.match(/0x[a-fA-F0-9]{64}/);
|
|
165
|
+
if (match) return match[0];
|
|
166
|
+
const txMatch = message.match(/tx:\s*([a-fA-F0-9]{64})/i);
|
|
167
|
+
if (txMatch) return "0x" + txMatch[1];
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
function hasTransactionHash(message) {
|
|
171
|
+
return extractTransactionHash(message) !== null;
|
|
172
|
+
}
|
|
173
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
174
|
+
0 && (module.exports = {
|
|
175
|
+
extractTransactionHash,
|
|
176
|
+
generatePaymentGuide,
|
|
177
|
+
generatePaymentReminder,
|
|
178
|
+
generateWalletGuide,
|
|
179
|
+
hasTransactionHash
|
|
180
|
+
});
|
|
181
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/guide/index.ts"],"sourcesContent":["/**\n * 支付引导消息生成\n * 用于引导没有支付能力的Agent安装和使用moltspay\n */\n\nexport interface PaymentGuideParams {\n orderId: string;\n prompt: string;\n price: number;\n recipientAddress: string;\n chain?: 'base' | 'base_sepolia';\n serviceName?: string;\n}\n\n/**\n * 生成完整的支付引导消息\n */\nexport function generatePaymentGuide(params: PaymentGuideParams): string {\n const {\n orderId,\n prompt,\n price,\n recipientAddress,\n chain = 'base',\n serviceName = '视频生成服务'\n } = params;\n\n const chainId = chain === 'base' ? 8453 : 84532;\n const chainName = chain === 'base' ? 'Base 主网' : 'Base Sepolia 测试网';\n const explorer = chain === 'base' \n ? 'https://basescan.org/tx/' \n : 'https://sepolia.basescan.org/tx/';\n\n return `🎬 **${serviceName}**\n\n📋 **订单信息:**\n- 订单号: \\`${orderId}\\`\n- 内容: ${prompt.length > 50 ? prompt.slice(0, 50) + '...' : prompt}\n- 价格: **${price} USDC**\n- 链: ${chainName}\n\n---\n\n## 💳 如何支付\n\n### 方式一:安装 moltspay SDK(推荐)\n\n\\`\\`\\`bash\nnpm install moltspay ethers\n\\`\\`\\`\n\n**创建钱包并支付:**\n\n\\`\\`\\`javascript\nconst { SecureWallet, getChain } = require('moltspay');\nconst { Wallet } = require('ethers');\n\n// 1. 创建新钱包(首次使用)\nconst newWallet = Wallet.createRandom();\nconsole.log('钱包地址:', newWallet.address);\nconsole.log('私钥(请安全保存):', newWallet.privateKey);\n\n// 2. 或使用已有钱包\nconst wallet = new SecureWallet({\n chainId: ${chainId},\n privateKey: process.env.WALLET_KEY, // 你的私钥\n limits: { requireWhitelist: false } // 允许向任意地址转账\n});\n\n// 3. 查看余额\nconst balance = await wallet.getBalance();\nconsole.log('USDC余额:', balance.usdc);\n\n// 4. 支付\nconst result = await wallet.transfer('${recipientAddress}', '${price}');\nif (result.success) {\n console.log('✅ 支付成功!');\n console.log('交易hash:', result.hash);\n // 把交易hash发给我\n}\n\\`\\`\\`\n\n### 方式二:直接转账\n\n从任意钱包转账 USDC:\n- **链:** ${chainName} (Chain ID: ${chainId})\n- **Token:** USDC\n- **收款地址:** \\`${recipientAddress}\\`\n- **金额:** ${price} USDC\n\n---\n\n## ✅ 支付完成后\n\n请发送**交易hash**给我,格式:\n\\`\\`\\`\ntx: 0x1234...\n\\`\\`\\`\n\n或直接发送hash:\n\\`\\`\\`\n0x1234abcd...\n\\`\\`\\`\n\n我会验证链上交易后开始处理你的请求。\n\n---\n\n📦 **moltspay:** https://www.npmjs.com/package/moltspay\n🔗 **区块浏览器:** ${explorer}`;\n}\n\n/**\n * 生成简短的支付提醒\n */\nexport function generatePaymentReminder(params: {\n orderId: string;\n price: number;\n recipientAddress: string;\n chain?: 'base' | 'base_sepolia';\n}): string {\n const { orderId, price, recipientAddress, chain = 'base' } = params;\n const chainName = chain === 'base' ? 'Base' : 'Base Sepolia';\n\n return `⏳ **待支付订单: ${orderId}**\n\n请支付 **${price} USDC** 到:\n- 链: ${chainName}\n- 地址: \\`${recipientAddress}\\`\n\n支付后发送交易hash给我。\n\n---\n💡 没有支付能力?运行 \\`npm install moltspay\\` 获取支付SDK`;\n}\n\n/**\n * 生成钱包创建指南\n */\nexport function generateWalletGuide(): string {\n return `## 🔐 创建支付钱包\n\n**1. 安装 moltspay:**\n\\`\\`\\`bash\nnpm install moltspay ethers\n\\`\\`\\`\n\n**2. 创建新钱包:**\n\\`\\`\\`javascript\nconst { Wallet } = require('ethers');\n\nconst wallet = Wallet.createRandom();\nconsole.log('地址:', wallet.address);\nconsole.log('私钥:', wallet.privateKey);\n// ⚠️ 请安全保存私钥!\n\\`\\`\\`\n\n**3. 获取 USDC:**\n- 主网: 从交易所提币到你的钱包地址\n- 测试网: 使用 Base Sepolia faucet\n\n**4. 设置环境变量:**\n\\`\\`\\`bash\nexport WALLET_KEY=\"你的私钥\"\n\\`\\`\\`\n\n完成后即可使用 moltspay 进行链上支付!`;\n}\n\n/**\n * 解析用户消息中的交易hash\n */\nexport function extractTransactionHash(message: string): string | null {\n // 匹配 0x 开头的64位hex\n const match = message.match(/0x[a-fA-F0-9]{64}/);\n if (match) return match[0];\n\n // 匹配 tx: 后面的内容\n const txMatch = message.match(/tx:\\s*([a-fA-F0-9]{64})/i);\n if (txMatch) return '0x' + txMatch[1];\n\n return null;\n}\n\n/**\n * 判断消息是否包含交易hash\n */\nexport function hasTransactionHash(message: string): boolean {\n return extractTransactionHash(message) !== null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBO,SAAS,qBAAqB,QAAoC;AACvE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,cAAc;AAAA,EAChB,IAAI;AAEJ,QAAM,UAAU,UAAU,SAAS,OAAO;AAC1C,QAAM,YAAY,UAAU,SAAS,sBAAY;AACjD,QAAM,WAAW,UAAU,SACvB,6BACA;AAEJ,SAAO,eAAQ,WAAW;AAAA;AAAA;AAAA,0BAGjB,OAAO;AAAA,kBACV,OAAO,SAAS,KAAK,OAAO,MAAM,GAAG,EAAE,IAAI,QAAQ,MAAM;AAAA,oBACvD,KAAK;AAAA,YACR,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAyBH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wCAUoB,gBAAgB,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAWzD,SAAS,eAAe,OAAO;AAAA;AAAA,oCAE1B,gBAAgB;AAAA,sBACpB,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gDAqBD,QAAQ;AACxB;AAKO,SAAS,wBAAwB,QAK7B;AACT,QAAM,EAAE,SAAS,OAAO,kBAAkB,QAAQ,OAAO,IAAI;AAC7D,QAAM,YAAY,UAAU,SAAS,SAAS;AAE9C,SAAO,4CAAc,OAAO;AAAA;AAAA,uBAEtB,KAAK;AAAA,YACN,SAAS;AAAA,oBACN,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAM1B;AAKO,SAAS,sBAA8B;AAC5C,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2BT;AAKO,SAAS,uBAAuB,SAAgC;AAErE,QAAM,QAAQ,QAAQ,MAAM,mBAAmB;AAC/C,MAAI,MAAO,QAAO,MAAM,CAAC;AAGzB,QAAM,UAAU,QAAQ,MAAM,0BAA0B;AACxD,MAAI,QAAS,QAAO,OAAO,QAAQ,CAAC;AAEpC,SAAO;AACT;AAKO,SAAS,mBAAmB,SAA0B;AAC3D,SAAO,uBAAuB,OAAO,MAAM;AAC7C;","names":[]}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
// src/guide/index.ts
|
|
2
|
+
function generatePaymentGuide(params) {
|
|
3
|
+
const {
|
|
4
|
+
orderId,
|
|
5
|
+
prompt,
|
|
6
|
+
price,
|
|
7
|
+
recipientAddress,
|
|
8
|
+
chain = "base",
|
|
9
|
+
serviceName = "\u89C6\u9891\u751F\u6210\u670D\u52A1"
|
|
10
|
+
} = params;
|
|
11
|
+
const chainId = chain === "base" ? 8453 : 84532;
|
|
12
|
+
const chainName = chain === "base" ? "Base \u4E3B\u7F51" : "Base Sepolia \u6D4B\u8BD5\u7F51";
|
|
13
|
+
const explorer = chain === "base" ? "https://basescan.org/tx/" : "https://sepolia.basescan.org/tx/";
|
|
14
|
+
return `\u{1F3AC} **${serviceName}**
|
|
15
|
+
|
|
16
|
+
\u{1F4CB} **\u8BA2\u5355\u4FE1\u606F:**
|
|
17
|
+
- \u8BA2\u5355\u53F7: \`${orderId}\`
|
|
18
|
+
- \u5185\u5BB9: ${prompt.length > 50 ? prompt.slice(0, 50) + "..." : prompt}
|
|
19
|
+
- \u4EF7\u683C: **${price} USDC**
|
|
20
|
+
- \u94FE: ${chainName}
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## \u{1F4B3} \u5982\u4F55\u652F\u4ED8
|
|
25
|
+
|
|
26
|
+
### \u65B9\u5F0F\u4E00\uFF1A\u5B89\u88C5 moltspay SDK\uFF08\u63A8\u8350\uFF09
|
|
27
|
+
|
|
28
|
+
\`\`\`bash
|
|
29
|
+
npm install moltspay ethers
|
|
30
|
+
\`\`\`
|
|
31
|
+
|
|
32
|
+
**\u521B\u5EFA\u94B1\u5305\u5E76\u652F\u4ED8\uFF1A**
|
|
33
|
+
|
|
34
|
+
\`\`\`javascript
|
|
35
|
+
const { SecureWallet, getChain } = require('moltspay');
|
|
36
|
+
const { Wallet } = require('ethers');
|
|
37
|
+
|
|
38
|
+
// 1. \u521B\u5EFA\u65B0\u94B1\u5305\uFF08\u9996\u6B21\u4F7F\u7528\uFF09
|
|
39
|
+
const newWallet = Wallet.createRandom();
|
|
40
|
+
console.log('\u94B1\u5305\u5730\u5740:', newWallet.address);
|
|
41
|
+
console.log('\u79C1\u94A5\uFF08\u8BF7\u5B89\u5168\u4FDD\u5B58\uFF09:', newWallet.privateKey);
|
|
42
|
+
|
|
43
|
+
// 2. \u6216\u4F7F\u7528\u5DF2\u6709\u94B1\u5305
|
|
44
|
+
const wallet = new SecureWallet({
|
|
45
|
+
chainId: ${chainId},
|
|
46
|
+
privateKey: process.env.WALLET_KEY, // \u4F60\u7684\u79C1\u94A5
|
|
47
|
+
limits: { requireWhitelist: false } // \u5141\u8BB8\u5411\u4EFB\u610F\u5730\u5740\u8F6C\u8D26
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
// 3. \u67E5\u770B\u4F59\u989D
|
|
51
|
+
const balance = await wallet.getBalance();
|
|
52
|
+
console.log('USDC\u4F59\u989D:', balance.usdc);
|
|
53
|
+
|
|
54
|
+
// 4. \u652F\u4ED8
|
|
55
|
+
const result = await wallet.transfer('${recipientAddress}', '${price}');
|
|
56
|
+
if (result.success) {
|
|
57
|
+
console.log('\u2705 \u652F\u4ED8\u6210\u529F\uFF01');
|
|
58
|
+
console.log('\u4EA4\u6613hash:', result.hash);
|
|
59
|
+
// \u628A\u4EA4\u6613hash\u53D1\u7ED9\u6211
|
|
60
|
+
}
|
|
61
|
+
\`\`\`
|
|
62
|
+
|
|
63
|
+
### \u65B9\u5F0F\u4E8C\uFF1A\u76F4\u63A5\u8F6C\u8D26
|
|
64
|
+
|
|
65
|
+
\u4ECE\u4EFB\u610F\u94B1\u5305\u8F6C\u8D26 USDC\uFF1A
|
|
66
|
+
- **\u94FE:** ${chainName} (Chain ID: ${chainId})
|
|
67
|
+
- **Token:** USDC
|
|
68
|
+
- **\u6536\u6B3E\u5730\u5740:** \`${recipientAddress}\`
|
|
69
|
+
- **\u91D1\u989D:** ${price} USDC
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## \u2705 \u652F\u4ED8\u5B8C\u6210\u540E
|
|
74
|
+
|
|
75
|
+
\u8BF7\u53D1\u9001**\u4EA4\u6613hash**\u7ED9\u6211\uFF0C\u683C\u5F0F\uFF1A
|
|
76
|
+
\`\`\`
|
|
77
|
+
tx: 0x1234...
|
|
78
|
+
\`\`\`
|
|
79
|
+
|
|
80
|
+
\u6216\u76F4\u63A5\u53D1\u9001hash\uFF1A
|
|
81
|
+
\`\`\`
|
|
82
|
+
0x1234abcd...
|
|
83
|
+
\`\`\`
|
|
84
|
+
|
|
85
|
+
\u6211\u4F1A\u9A8C\u8BC1\u94FE\u4E0A\u4EA4\u6613\u540E\u5F00\u59CB\u5904\u7406\u4F60\u7684\u8BF7\u6C42\u3002
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
\u{1F4E6} **moltspay:** https://www.npmjs.com/package/moltspay
|
|
90
|
+
\u{1F517} **\u533A\u5757\u6D4F\u89C8\u5668:** ${explorer}`;
|
|
91
|
+
}
|
|
92
|
+
function generatePaymentReminder(params) {
|
|
93
|
+
const { orderId, price, recipientAddress, chain = "base" } = params;
|
|
94
|
+
const chainName = chain === "base" ? "Base" : "Base Sepolia";
|
|
95
|
+
return `\u23F3 **\u5F85\u652F\u4ED8\u8BA2\u5355: ${orderId}**
|
|
96
|
+
|
|
97
|
+
\u8BF7\u652F\u4ED8 **${price} USDC** \u5230:
|
|
98
|
+
- \u94FE: ${chainName}
|
|
99
|
+
- \u5730\u5740: \`${recipientAddress}\`
|
|
100
|
+
|
|
101
|
+
\u652F\u4ED8\u540E\u53D1\u9001\u4EA4\u6613hash\u7ED9\u6211\u3002
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
\u{1F4A1} \u6CA1\u6709\u652F\u4ED8\u80FD\u529B\uFF1F\u8FD0\u884C \`npm install moltspay\` \u83B7\u53D6\u652F\u4ED8SDK`;
|
|
105
|
+
}
|
|
106
|
+
function generateWalletGuide() {
|
|
107
|
+
return `## \u{1F510} \u521B\u5EFA\u652F\u4ED8\u94B1\u5305
|
|
108
|
+
|
|
109
|
+
**1. \u5B89\u88C5 moltspay:**
|
|
110
|
+
\`\`\`bash
|
|
111
|
+
npm install moltspay ethers
|
|
112
|
+
\`\`\`
|
|
113
|
+
|
|
114
|
+
**2. \u521B\u5EFA\u65B0\u94B1\u5305:**
|
|
115
|
+
\`\`\`javascript
|
|
116
|
+
const { Wallet } = require('ethers');
|
|
117
|
+
|
|
118
|
+
const wallet = Wallet.createRandom();
|
|
119
|
+
console.log('\u5730\u5740:', wallet.address);
|
|
120
|
+
console.log('\u79C1\u94A5:', wallet.privateKey);
|
|
121
|
+
// \u26A0\uFE0F \u8BF7\u5B89\u5168\u4FDD\u5B58\u79C1\u94A5\uFF01
|
|
122
|
+
\`\`\`
|
|
123
|
+
|
|
124
|
+
**3. \u83B7\u53D6 USDC:**
|
|
125
|
+
- \u4E3B\u7F51: \u4ECE\u4EA4\u6613\u6240\u63D0\u5E01\u5230\u4F60\u7684\u94B1\u5305\u5730\u5740
|
|
126
|
+
- \u6D4B\u8BD5\u7F51: \u4F7F\u7528 Base Sepolia faucet
|
|
127
|
+
|
|
128
|
+
**4. \u8BBE\u7F6E\u73AF\u5883\u53D8\u91CF:**
|
|
129
|
+
\`\`\`bash
|
|
130
|
+
export WALLET_KEY="\u4F60\u7684\u79C1\u94A5"
|
|
131
|
+
\`\`\`
|
|
132
|
+
|
|
133
|
+
\u5B8C\u6210\u540E\u5373\u53EF\u4F7F\u7528 moltspay \u8FDB\u884C\u94FE\u4E0A\u652F\u4ED8\uFF01`;
|
|
134
|
+
}
|
|
135
|
+
function extractTransactionHash(message) {
|
|
136
|
+
const match = message.match(/0x[a-fA-F0-9]{64}/);
|
|
137
|
+
if (match) return match[0];
|
|
138
|
+
const txMatch = message.match(/tx:\s*([a-fA-F0-9]{64})/i);
|
|
139
|
+
if (txMatch) return "0x" + txMatch[1];
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
function hasTransactionHash(message) {
|
|
143
|
+
return extractTransactionHash(message) !== null;
|
|
144
|
+
}
|
|
145
|
+
export {
|
|
146
|
+
extractTransactionHash,
|
|
147
|
+
generatePaymentGuide,
|
|
148
|
+
generatePaymentReminder,
|
|
149
|
+
generateWalletGuide,
|
|
150
|
+
hasTransactionHash
|
|
151
|
+
};
|
|
152
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/guide/index.ts"],"sourcesContent":["/**\n * 支付引导消息生成\n * 用于引导没有支付能力的Agent安装和使用moltspay\n */\n\nexport interface PaymentGuideParams {\n orderId: string;\n prompt: string;\n price: number;\n recipientAddress: string;\n chain?: 'base' | 'base_sepolia';\n serviceName?: string;\n}\n\n/**\n * 生成完整的支付引导消息\n */\nexport function generatePaymentGuide(params: PaymentGuideParams): string {\n const {\n orderId,\n prompt,\n price,\n recipientAddress,\n chain = 'base',\n serviceName = '视频生成服务'\n } = params;\n\n const chainId = chain === 'base' ? 8453 : 84532;\n const chainName = chain === 'base' ? 'Base 主网' : 'Base Sepolia 测试网';\n const explorer = chain === 'base' \n ? 'https://basescan.org/tx/' \n : 'https://sepolia.basescan.org/tx/';\n\n return `🎬 **${serviceName}**\n\n📋 **订单信息:**\n- 订单号: \\`${orderId}\\`\n- 内容: ${prompt.length > 50 ? prompt.slice(0, 50) + '...' : prompt}\n- 价格: **${price} USDC**\n- 链: ${chainName}\n\n---\n\n## 💳 如何支付\n\n### 方式一:安装 moltspay SDK(推荐)\n\n\\`\\`\\`bash\nnpm install moltspay ethers\n\\`\\`\\`\n\n**创建钱包并支付:**\n\n\\`\\`\\`javascript\nconst { SecureWallet, getChain } = require('moltspay');\nconst { Wallet } = require('ethers');\n\n// 1. 创建新钱包(首次使用)\nconst newWallet = Wallet.createRandom();\nconsole.log('钱包地址:', newWallet.address);\nconsole.log('私钥(请安全保存):', newWallet.privateKey);\n\n// 2. 或使用已有钱包\nconst wallet = new SecureWallet({\n chainId: ${chainId},\n privateKey: process.env.WALLET_KEY, // 你的私钥\n limits: { requireWhitelist: false } // 允许向任意地址转账\n});\n\n// 3. 查看余额\nconst balance = await wallet.getBalance();\nconsole.log('USDC余额:', balance.usdc);\n\n// 4. 支付\nconst result = await wallet.transfer('${recipientAddress}', '${price}');\nif (result.success) {\n console.log('✅ 支付成功!');\n console.log('交易hash:', result.hash);\n // 把交易hash发给我\n}\n\\`\\`\\`\n\n### 方式二:直接转账\n\n从任意钱包转账 USDC:\n- **链:** ${chainName} (Chain ID: ${chainId})\n- **Token:** USDC\n- **收款地址:** \\`${recipientAddress}\\`\n- **金额:** ${price} USDC\n\n---\n\n## ✅ 支付完成后\n\n请发送**交易hash**给我,格式:\n\\`\\`\\`\ntx: 0x1234...\n\\`\\`\\`\n\n或直接发送hash:\n\\`\\`\\`\n0x1234abcd...\n\\`\\`\\`\n\n我会验证链上交易后开始处理你的请求。\n\n---\n\n📦 **moltspay:** https://www.npmjs.com/package/moltspay\n🔗 **区块浏览器:** ${explorer}`;\n}\n\n/**\n * 生成简短的支付提醒\n */\nexport function generatePaymentReminder(params: {\n orderId: string;\n price: number;\n recipientAddress: string;\n chain?: 'base' | 'base_sepolia';\n}): string {\n const { orderId, price, recipientAddress, chain = 'base' } = params;\n const chainName = chain === 'base' ? 'Base' : 'Base Sepolia';\n\n return `⏳ **待支付订单: ${orderId}**\n\n请支付 **${price} USDC** 到:\n- 链: ${chainName}\n- 地址: \\`${recipientAddress}\\`\n\n支付后发送交易hash给我。\n\n---\n💡 没有支付能力?运行 \\`npm install moltspay\\` 获取支付SDK`;\n}\n\n/**\n * 生成钱包创建指南\n */\nexport function generateWalletGuide(): string {\n return `## 🔐 创建支付钱包\n\n**1. 安装 moltspay:**\n\\`\\`\\`bash\nnpm install moltspay ethers\n\\`\\`\\`\n\n**2. 创建新钱包:**\n\\`\\`\\`javascript\nconst { Wallet } = require('ethers');\n\nconst wallet = Wallet.createRandom();\nconsole.log('地址:', wallet.address);\nconsole.log('私钥:', wallet.privateKey);\n// ⚠️ 请安全保存私钥!\n\\`\\`\\`\n\n**3. 获取 USDC:**\n- 主网: 从交易所提币到你的钱包地址\n- 测试网: 使用 Base Sepolia faucet\n\n**4. 设置环境变量:**\n\\`\\`\\`bash\nexport WALLET_KEY=\"你的私钥\"\n\\`\\`\\`\n\n完成后即可使用 moltspay 进行链上支付!`;\n}\n\n/**\n * 解析用户消息中的交易hash\n */\nexport function extractTransactionHash(message: string): string | null {\n // 匹配 0x 开头的64位hex\n const match = message.match(/0x[a-fA-F0-9]{64}/);\n if (match) return match[0];\n\n // 匹配 tx: 后面的内容\n const txMatch = message.match(/tx:\\s*([a-fA-F0-9]{64})/i);\n if (txMatch) return '0x' + txMatch[1];\n\n return null;\n}\n\n/**\n * 判断消息是否包含交易hash\n */\nexport function hasTransactionHash(message: string): boolean {\n return extractTransactionHash(message) !== null;\n}\n"],"mappings":";AAiBO,SAAS,qBAAqB,QAAoC;AACvE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,cAAc;AAAA,EAChB,IAAI;AAEJ,QAAM,UAAU,UAAU,SAAS,OAAO;AAC1C,QAAM,YAAY,UAAU,SAAS,sBAAY;AACjD,QAAM,WAAW,UAAU,SACvB,6BACA;AAEJ,SAAO,eAAQ,WAAW;AAAA;AAAA;AAAA,0BAGjB,OAAO;AAAA,kBACV,OAAO,SAAS,KAAK,OAAO,MAAM,GAAG,EAAE,IAAI,QAAQ,MAAM;AAAA,oBACvD,KAAK;AAAA,YACR,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAyBH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wCAUoB,gBAAgB,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAWzD,SAAS,eAAe,OAAO;AAAA;AAAA,oCAE1B,gBAAgB;AAAA,sBACpB,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gDAqBD,QAAQ;AACxB;AAKO,SAAS,wBAAwB,QAK7B;AACT,QAAM,EAAE,SAAS,OAAO,kBAAkB,QAAQ,OAAO,IAAI;AAC7D,QAAM,YAAY,UAAU,SAAS,SAAS;AAE9C,SAAO,4CAAc,OAAO;AAAA;AAAA,uBAEtB,KAAK;AAAA,YACN,SAAS;AAAA,oBACN,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAM1B;AAKO,SAAS,sBAA8B;AAC5C,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2BT;AAKO,SAAS,uBAAuB,SAAgC;AAErE,QAAM,QAAQ,QAAQ,MAAM,mBAAmB;AAC/C,MAAI,MAAO,QAAO,MAAM,CAAC;AAGzB,QAAM,UAAU,QAAQ,MAAM,0BAA0B;AACxD,MAAI,QAAS,QAAO,OAAO,QAAQ,CAAC;AAEpC,SAAO;AACT;AAKO,SAAS,mBAAmB,SAA0B;AAC3D,SAAO,uBAAuB,OAAO,MAAM;AAC7C;","names":[]}
|
package/dist/index.d.mts
CHANGED
|
@@ -4,6 +4,7 @@ export { SecureWallet, Wallet } from './wallet/index.mjs';
|
|
|
4
4
|
export { PermitPayment } from './permit/index.mjs';
|
|
5
5
|
export { CreateOrderParams, MemoryOrderStore, Order, OrderManager, OrderStatus, OrderStore } from './orders/index.mjs';
|
|
6
6
|
export { VerifyPaymentParams, VerifyPaymentResult, getTransactionStatus, verifyPayment, waitForTransaction } from './verify/index.mjs';
|
|
7
|
+
export { PaymentGuideParams, extractTransactionHash, generatePaymentGuide, generatePaymentReminder, generateWalletGuide, hasTransactionHash } from './guide/index.mjs';
|
|
7
8
|
export { CHAINS, ERC20_ABI, getChain, getChainById, listChains } from './chains/index.mjs';
|
|
8
9
|
|
|
9
10
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export { SecureWallet, Wallet } from './wallet/index.js';
|
|
|
4
4
|
export { PermitPayment } from './permit/index.js';
|
|
5
5
|
export { CreateOrderParams, MemoryOrderStore, Order, OrderManager, OrderStatus, OrderStore } from './orders/index.js';
|
|
6
6
|
export { VerifyPaymentParams, VerifyPaymentResult, getTransactionStatus, verifyPayment, waitForTransaction } from './verify/index.js';
|
|
7
|
+
export { PaymentGuideParams, extractTransactionHash, generatePaymentGuide, generatePaymentReminder, generateWalletGuide, hasTransactionHash } from './guide/index.js';
|
|
7
8
|
export { CHAINS, ERC20_ABI, getChain, getChainById, listChains } from './chains/index.js';
|
|
8
9
|
|
|
9
10
|
/**
|
package/dist/index.js
CHANGED
|
@@ -39,9 +39,14 @@ __export(src_exports, {
|
|
|
39
39
|
PermitPayment: () => PermitPayment,
|
|
40
40
|
SecureWallet: () => SecureWallet,
|
|
41
41
|
Wallet: () => Wallet,
|
|
42
|
+
extractTransactionHash: () => extractTransactionHash,
|
|
43
|
+
generatePaymentGuide: () => generatePaymentGuide,
|
|
44
|
+
generatePaymentReminder: () => generatePaymentReminder,
|
|
45
|
+
generateWalletGuide: () => generateWalletGuide,
|
|
42
46
|
getChain: () => getChain,
|
|
43
47
|
getChainById: () => getChainById,
|
|
44
48
|
getTransactionStatus: () => getTransactionStatus,
|
|
49
|
+
hasTransactionHash: () => hasTransactionHash,
|
|
45
50
|
listChains: () => listChains,
|
|
46
51
|
verifyPayment: () => verifyPayment,
|
|
47
52
|
waitForTransaction: () => waitForTransaction
|
|
@@ -1266,6 +1271,151 @@ async function waitForTransaction(txHash, chain = "base", confirmations = 1, tim
|
|
|
1266
1271
|
return { verified: false, confirmed: false, error: e.message || String(e) };
|
|
1267
1272
|
}
|
|
1268
1273
|
}
|
|
1274
|
+
|
|
1275
|
+
// src/guide/index.ts
|
|
1276
|
+
function generatePaymentGuide(params) {
|
|
1277
|
+
const {
|
|
1278
|
+
orderId,
|
|
1279
|
+
prompt,
|
|
1280
|
+
price,
|
|
1281
|
+
recipientAddress,
|
|
1282
|
+
chain = "base",
|
|
1283
|
+
serviceName = "\u89C6\u9891\u751F\u6210\u670D\u52A1"
|
|
1284
|
+
} = params;
|
|
1285
|
+
const chainId = chain === "base" ? 8453 : 84532;
|
|
1286
|
+
const chainName = chain === "base" ? "Base \u4E3B\u7F51" : "Base Sepolia \u6D4B\u8BD5\u7F51";
|
|
1287
|
+
const explorer = chain === "base" ? "https://basescan.org/tx/" : "https://sepolia.basescan.org/tx/";
|
|
1288
|
+
return `\u{1F3AC} **${serviceName}**
|
|
1289
|
+
|
|
1290
|
+
\u{1F4CB} **\u8BA2\u5355\u4FE1\u606F:**
|
|
1291
|
+
- \u8BA2\u5355\u53F7: \`${orderId}\`
|
|
1292
|
+
- \u5185\u5BB9: ${prompt.length > 50 ? prompt.slice(0, 50) + "..." : prompt}
|
|
1293
|
+
- \u4EF7\u683C: **${price} USDC**
|
|
1294
|
+
- \u94FE: ${chainName}
|
|
1295
|
+
|
|
1296
|
+
---
|
|
1297
|
+
|
|
1298
|
+
## \u{1F4B3} \u5982\u4F55\u652F\u4ED8
|
|
1299
|
+
|
|
1300
|
+
### \u65B9\u5F0F\u4E00\uFF1A\u5B89\u88C5 moltspay SDK\uFF08\u63A8\u8350\uFF09
|
|
1301
|
+
|
|
1302
|
+
\`\`\`bash
|
|
1303
|
+
npm install moltspay ethers
|
|
1304
|
+
\`\`\`
|
|
1305
|
+
|
|
1306
|
+
**\u521B\u5EFA\u94B1\u5305\u5E76\u652F\u4ED8\uFF1A**
|
|
1307
|
+
|
|
1308
|
+
\`\`\`javascript
|
|
1309
|
+
const { SecureWallet, getChain } = require('moltspay');
|
|
1310
|
+
const { Wallet } = require('ethers');
|
|
1311
|
+
|
|
1312
|
+
// 1. \u521B\u5EFA\u65B0\u94B1\u5305\uFF08\u9996\u6B21\u4F7F\u7528\uFF09
|
|
1313
|
+
const newWallet = Wallet.createRandom();
|
|
1314
|
+
console.log('\u94B1\u5305\u5730\u5740:', newWallet.address);
|
|
1315
|
+
console.log('\u79C1\u94A5\uFF08\u8BF7\u5B89\u5168\u4FDD\u5B58\uFF09:', newWallet.privateKey);
|
|
1316
|
+
|
|
1317
|
+
// 2. \u6216\u4F7F\u7528\u5DF2\u6709\u94B1\u5305
|
|
1318
|
+
const wallet = new SecureWallet({
|
|
1319
|
+
chainId: ${chainId},
|
|
1320
|
+
privateKey: process.env.WALLET_KEY, // \u4F60\u7684\u79C1\u94A5
|
|
1321
|
+
limits: { requireWhitelist: false } // \u5141\u8BB8\u5411\u4EFB\u610F\u5730\u5740\u8F6C\u8D26
|
|
1322
|
+
});
|
|
1323
|
+
|
|
1324
|
+
// 3. \u67E5\u770B\u4F59\u989D
|
|
1325
|
+
const balance = await wallet.getBalance();
|
|
1326
|
+
console.log('USDC\u4F59\u989D:', balance.usdc);
|
|
1327
|
+
|
|
1328
|
+
// 4. \u652F\u4ED8
|
|
1329
|
+
const result = await wallet.transfer('${recipientAddress}', '${price}');
|
|
1330
|
+
if (result.success) {
|
|
1331
|
+
console.log('\u2705 \u652F\u4ED8\u6210\u529F\uFF01');
|
|
1332
|
+
console.log('\u4EA4\u6613hash:', result.hash);
|
|
1333
|
+
// \u628A\u4EA4\u6613hash\u53D1\u7ED9\u6211
|
|
1334
|
+
}
|
|
1335
|
+
\`\`\`
|
|
1336
|
+
|
|
1337
|
+
### \u65B9\u5F0F\u4E8C\uFF1A\u76F4\u63A5\u8F6C\u8D26
|
|
1338
|
+
|
|
1339
|
+
\u4ECE\u4EFB\u610F\u94B1\u5305\u8F6C\u8D26 USDC\uFF1A
|
|
1340
|
+
- **\u94FE:** ${chainName} (Chain ID: ${chainId})
|
|
1341
|
+
- **Token:** USDC
|
|
1342
|
+
- **\u6536\u6B3E\u5730\u5740:** \`${recipientAddress}\`
|
|
1343
|
+
- **\u91D1\u989D:** ${price} USDC
|
|
1344
|
+
|
|
1345
|
+
---
|
|
1346
|
+
|
|
1347
|
+
## \u2705 \u652F\u4ED8\u5B8C\u6210\u540E
|
|
1348
|
+
|
|
1349
|
+
\u8BF7\u53D1\u9001**\u4EA4\u6613hash**\u7ED9\u6211\uFF0C\u683C\u5F0F\uFF1A
|
|
1350
|
+
\`\`\`
|
|
1351
|
+
tx: 0x1234...
|
|
1352
|
+
\`\`\`
|
|
1353
|
+
|
|
1354
|
+
\u6216\u76F4\u63A5\u53D1\u9001hash\uFF1A
|
|
1355
|
+
\`\`\`
|
|
1356
|
+
0x1234abcd...
|
|
1357
|
+
\`\`\`
|
|
1358
|
+
|
|
1359
|
+
\u6211\u4F1A\u9A8C\u8BC1\u94FE\u4E0A\u4EA4\u6613\u540E\u5F00\u59CB\u5904\u7406\u4F60\u7684\u8BF7\u6C42\u3002
|
|
1360
|
+
|
|
1361
|
+
---
|
|
1362
|
+
|
|
1363
|
+
\u{1F4E6} **moltspay:** https://www.npmjs.com/package/moltspay
|
|
1364
|
+
\u{1F517} **\u533A\u5757\u6D4F\u89C8\u5668:** ${explorer}`;
|
|
1365
|
+
}
|
|
1366
|
+
function generatePaymentReminder(params) {
|
|
1367
|
+
const { orderId, price, recipientAddress, chain = "base" } = params;
|
|
1368
|
+
const chainName = chain === "base" ? "Base" : "Base Sepolia";
|
|
1369
|
+
return `\u23F3 **\u5F85\u652F\u4ED8\u8BA2\u5355: ${orderId}**
|
|
1370
|
+
|
|
1371
|
+
\u8BF7\u652F\u4ED8 **${price} USDC** \u5230:
|
|
1372
|
+
- \u94FE: ${chainName}
|
|
1373
|
+
- \u5730\u5740: \`${recipientAddress}\`
|
|
1374
|
+
|
|
1375
|
+
\u652F\u4ED8\u540E\u53D1\u9001\u4EA4\u6613hash\u7ED9\u6211\u3002
|
|
1376
|
+
|
|
1377
|
+
---
|
|
1378
|
+
\u{1F4A1} \u6CA1\u6709\u652F\u4ED8\u80FD\u529B\uFF1F\u8FD0\u884C \`npm install moltspay\` \u83B7\u53D6\u652F\u4ED8SDK`;
|
|
1379
|
+
}
|
|
1380
|
+
function generateWalletGuide() {
|
|
1381
|
+
return `## \u{1F510} \u521B\u5EFA\u652F\u4ED8\u94B1\u5305
|
|
1382
|
+
|
|
1383
|
+
**1. \u5B89\u88C5 moltspay:**
|
|
1384
|
+
\`\`\`bash
|
|
1385
|
+
npm install moltspay ethers
|
|
1386
|
+
\`\`\`
|
|
1387
|
+
|
|
1388
|
+
**2. \u521B\u5EFA\u65B0\u94B1\u5305:**
|
|
1389
|
+
\`\`\`javascript
|
|
1390
|
+
const { Wallet } = require('ethers');
|
|
1391
|
+
|
|
1392
|
+
const wallet = Wallet.createRandom();
|
|
1393
|
+
console.log('\u5730\u5740:', wallet.address);
|
|
1394
|
+
console.log('\u79C1\u94A5:', wallet.privateKey);
|
|
1395
|
+
// \u26A0\uFE0F \u8BF7\u5B89\u5168\u4FDD\u5B58\u79C1\u94A5\uFF01
|
|
1396
|
+
\`\`\`
|
|
1397
|
+
|
|
1398
|
+
**3. \u83B7\u53D6 USDC:**
|
|
1399
|
+
- \u4E3B\u7F51: \u4ECE\u4EA4\u6613\u6240\u63D0\u5E01\u5230\u4F60\u7684\u94B1\u5305\u5730\u5740
|
|
1400
|
+
- \u6D4B\u8BD5\u7F51: \u4F7F\u7528 Base Sepolia faucet
|
|
1401
|
+
|
|
1402
|
+
**4. \u8BBE\u7F6E\u73AF\u5883\u53D8\u91CF:**
|
|
1403
|
+
\`\`\`bash
|
|
1404
|
+
export WALLET_KEY="\u4F60\u7684\u79C1\u94A5"
|
|
1405
|
+
\`\`\`
|
|
1406
|
+
|
|
1407
|
+
\u5B8C\u6210\u540E\u5373\u53EF\u4F7F\u7528 moltspay \u8FDB\u884C\u94FE\u4E0A\u652F\u4ED8\uFF01`;
|
|
1408
|
+
}
|
|
1409
|
+
function extractTransactionHash(message) {
|
|
1410
|
+
const match = message.match(/0x[a-fA-F0-9]{64}/);
|
|
1411
|
+
if (match) return match[0];
|
|
1412
|
+
const txMatch = message.match(/tx:\s*([a-fA-F0-9]{64})/i);
|
|
1413
|
+
if (txMatch) return "0x" + txMatch[1];
|
|
1414
|
+
return null;
|
|
1415
|
+
}
|
|
1416
|
+
function hasTransactionHash(message) {
|
|
1417
|
+
return extractTransactionHash(message) !== null;
|
|
1418
|
+
}
|
|
1269
1419
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1270
1420
|
0 && (module.exports = {
|
|
1271
1421
|
AuditLog,
|
|
@@ -1277,9 +1427,14 @@ async function waitForTransaction(txHash, chain = "base", confirmations = 1, tim
|
|
|
1277
1427
|
PermitPayment,
|
|
1278
1428
|
SecureWallet,
|
|
1279
1429
|
Wallet,
|
|
1430
|
+
extractTransactionHash,
|
|
1431
|
+
generatePaymentGuide,
|
|
1432
|
+
generatePaymentReminder,
|
|
1433
|
+
generateWalletGuide,
|
|
1280
1434
|
getChain,
|
|
1281
1435
|
getChainById,
|
|
1282
1436
|
getTransactionStatus,
|
|
1437
|
+
hasTransactionHash,
|
|
1283
1438
|
listChains,
|
|
1284
1439
|
verifyPayment,
|
|
1285
1440
|
waitForTransaction
|