{
  "schemaVersion": "1.0",
  "item": {
    "slug": "paythefly",
    "name": "PayTheFlyPro",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/seanlan/paythefly",
    "canonicalUrl": "https://clawhub.ai/seanlan/paythefly",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/paythefly",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=paythefly",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/payment.mjs",
      "scripts/query.mjs",
      "scripts/withdrawal.mjs"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/paythefly"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/paythefly",
    "agentPageUrl": "https://openagent3.xyz/skills/paythefly/agent",
    "manifestUrl": "https://openagent3.xyz/skills/paythefly/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/paythefly/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "PayTheFlyPro",
        "body": "Generate EIP-712 signed payment and withdrawal links for PayTheFlyPro crypto payment gateway. Supports BSC, Ethereum, and TRON networks."
      },
      {
        "title": "Security Notice",
        "body": "The signer private key (PTF_SIGNER_KEY) is used ONLY for signing order authorization messages (EIP-712/TIP-712). It does NOT have access to any funds.\n\nRecommendations:\n\nGenerate a dedicated wallet for signing - do NOT use your main wallet\nThe signer wallet does not need to hold any funds\nRegister the signer address in PayTheFlyPro dashboard as your project's authorized signer"
      },
      {
        "title": "Install Dependencies",
        "body": "npm install ethers tronweb"
      },
      {
        "title": "Create Payment Link",
        "body": "node {baseDir}/scripts/payment.mjs --amount \"0.01\" --serialNo \"ORDER001\"\nnode {baseDir}/scripts/payment.mjs --amount \"100\" --serialNo \"ORDER002\" --token \"0x55d398326f99059fF775485246999027B3197955\"\nnode {baseDir}/scripts/payment.mjs --amount \"50\" --serialNo \"ORDER003\" --redirect \"https://mystore.com/success\" --brand \"MyStore\""
      },
      {
        "title": "Options",
        "body": "--amount <value>: Payment amount (required)\n--serialNo <value>: Unique order number (required)\n--token <address>: Token contract address (omit for native token)\n--redirect <url>: URL to redirect after payment\n--brand <name>: Custom brand name\n--lang <code>: UI language (en, zh, ko, ja)\n--deadline <hours>: Signature validity hours (default: 24)"
      },
      {
        "title": "Create Withdrawal Link",
        "body": "node {baseDir}/scripts/withdrawal.mjs --amount \"100\" --serialNo \"WD001\" --user \"0x1234567890123456789012345678901234567890\"\nnode {baseDir}/scripts/withdrawal.mjs --amount \"50\" --serialNo \"WD002\" --user \"0xabcd...\" --token \"0x55d398...\""
      },
      {
        "title": "Options",
        "body": "--amount <value>: Withdrawal amount (required)\n--serialNo <value>: Unique withdrawal number (required)\n--user <address>: Recipient wallet address (required)\n--token <address>: Token contract address (omit for native)\n--redirect <url>: URL to redirect after withdrawal\n--brand <name>: Custom brand name\n--lang <code>: UI language\n--deadline <hours>: Signature validity hours (default: 24)"
      },
      {
        "title": "Query Order Status",
        "body": "node {baseDir}/scripts/query.mjs --type payment --serialNo \"ORDER001\"\nnode {baseDir}/scripts/query.mjs --type withdrawal --serialNo \"WD001\""
      },
      {
        "title": "Options",
        "body": "--type <value>: Order type: payment or withdrawal (required)\n--serialNo <value>: Serial number to query (required)"
      },
      {
        "title": "Environment Variables",
        "body": "VariableRequiredDescriptionPTF_PROJECT_IDYesPayTheFlyPro project identifierPTF_CONTRACT_ADDRESSYesProject smart contract addressPTF_SIGNER_KEYYesPrivate key for signing (dedicated wallet, no funds needed)PTF_CHAIN_IDYesChain ID (56, 97, 1, tron:mainnet, tron:nile)PTF_CUSTOM_RPCNoCustom RPC endpoint"
      },
      {
        "title": "Supported Chains",
        "body": "ChainchainIdNative TokenBSC Mainnet56BNBBSC Testnet97BNBEthereum1ETHTRON Mainnettron:mainnetTRXTRON Niletron:nileTRX"
      },
      {
        "title": "Notes",
        "body": "Each serial number can only be used once\nWithdrawal signatures expire after deadline (default 24 hours)\nFor TRON, addresses use Base58 format (starting with T)\nNative token payments omit the --token parameter"
      }
    ],
    "body": "PayTheFlyPro\n\nGenerate EIP-712 signed payment and withdrawal links for PayTheFlyPro crypto payment gateway. Supports BSC, Ethereum, and TRON networks.\n\nSecurity Notice\n\nThe signer private key (PTF_SIGNER_KEY) is used ONLY for signing order authorization messages (EIP-712/TIP-712). It does NOT have access to any funds.\n\nRecommendations:\n\nGenerate a dedicated wallet for signing - do NOT use your main wallet\nThe signer wallet does not need to hold any funds\nRegister the signer address in PayTheFlyPro dashboard as your project's authorized signer\nInstall Dependencies\nnpm install ethers tronweb\n\nCreate Payment Link\nnode {baseDir}/scripts/payment.mjs --amount \"0.01\" --serialNo \"ORDER001\"\nnode {baseDir}/scripts/payment.mjs --amount \"100\" --serialNo \"ORDER002\" --token \"0x55d398326f99059fF775485246999027B3197955\"\nnode {baseDir}/scripts/payment.mjs --amount \"50\" --serialNo \"ORDER003\" --redirect \"https://mystore.com/success\" --brand \"MyStore\"\n\nOptions\n--amount <value>: Payment amount (required)\n--serialNo <value>: Unique order number (required)\n--token <address>: Token contract address (omit for native token)\n--redirect <url>: URL to redirect after payment\n--brand <name>: Custom brand name\n--lang <code>: UI language (en, zh, ko, ja)\n--deadline <hours>: Signature validity hours (default: 24)\nCreate Withdrawal Link\nnode {baseDir}/scripts/withdrawal.mjs --amount \"100\" --serialNo \"WD001\" --user \"0x1234567890123456789012345678901234567890\"\nnode {baseDir}/scripts/withdrawal.mjs --amount \"50\" --serialNo \"WD002\" --user \"0xabcd...\" --token \"0x55d398...\"\n\nOptions\n--amount <value>: Withdrawal amount (required)\n--serialNo <value>: Unique withdrawal number (required)\n--user <address>: Recipient wallet address (required)\n--token <address>: Token contract address (omit for native)\n--redirect <url>: URL to redirect after withdrawal\n--brand <name>: Custom brand name\n--lang <code>: UI language\n--deadline <hours>: Signature validity hours (default: 24)\nQuery Order Status\nnode {baseDir}/scripts/query.mjs --type payment --serialNo \"ORDER001\"\nnode {baseDir}/scripts/query.mjs --type withdrawal --serialNo \"WD001\"\n\nOptions\n--type <value>: Order type: payment or withdrawal (required)\n--serialNo <value>: Serial number to query (required)\nEnvironment Variables\nVariable\tRequired\tDescription\nPTF_PROJECT_ID\tYes\tPayTheFlyPro project identifier\nPTF_CONTRACT_ADDRESS\tYes\tProject smart contract address\nPTF_SIGNER_KEY\tYes\tPrivate key for signing (dedicated wallet, no funds needed)\nPTF_CHAIN_ID\tYes\tChain ID (56, 97, 1, tron:mainnet, tron:nile)\nPTF_CUSTOM_RPC\tNo\tCustom RPC endpoint\nSupported Chains\nChain\tchainId\tNative Token\nBSC Mainnet\t56\tBNB\nBSC Testnet\t97\tBNB\nEthereum\t1\tETH\nTRON Mainnet\ttron:mainnet\tTRX\nTRON Nile\ttron:nile\tTRX\nNotes\nEach serial number can only be used once\nWithdrawal signatures expire after deadline (default 24 hours)\nFor TRON, addresses use Base58 format (starting with T)\nNative token payments omit the --token parameter"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/seanlan/paythefly",
    "publisherUrl": "https://clawhub.ai/seanlan/paythefly",
    "owner": "seanlan",
    "version": "1.0.8",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/paythefly",
    "downloadUrl": "https://openagent3.xyz/downloads/paythefly",
    "agentUrl": "https://openagent3.xyz/skills/paythefly/agent",
    "manifestUrl": "https://openagent3.xyz/skills/paythefly/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/paythefly/agent.md"
  }
}