sarani/cryptopay

多币种加密货币支付。随时使用加密货币支付。

1.0.1 2022-04-30 12:01 UTC

This package is auto-updated.

Last update: 2024-09-30 01:46:39 UTC


README

cryptopay是一个支持多种加密货币的php库,用于加密货币支付。使用此库,您可以为您的网站应用程序和Telegram 机器人添加并支持加密货币支付。

开始使用

要使用此库,您需要使用CryptoBot创建一个免费的Telegram账户。

安装

使用composer包管理器安装sarani/cryptopay

composer require sarani/cryptopay

使用方法和说明

// use Sarani\CryptoBot;

# init
$cryp_payment_token = 'token';
$mode = 'test'; // empty for real account 
$crypto = new Sarani\CryptoPay\Api($cryp_payment_token, 'test');

getMe

使用此方法测试您的应用程序的认证令牌。无需参数。成功时,返回有关应用程序的基本信息。

$me = $crypto->getMe();

createInvoice

使用此方法创建新的发票。成功时,返回创建的发票对象。

  • asset(字符串)货币代码。支持资产:“BTC”、“TON”、“ETH”(仅测试网)、“USDT”、“USDC”和“BUSD”。

  • amount(字符串)发票金额,以浮点数表示。例如:125.50

  • description(字符串)可选。发票的描述。用户在支付发票时将看到此描述。最多1024个字符。

  • hidden_message(字符串)可选。支付发票后显示给用户的文本。最多2048个字符。

  • paid_btn_name(字符串)可选。支付发票后显示给用户的按钮名称。支持名称:viewItem – “查看项目”,openChannel – “打开通道”,openBot – “打开机器人”,callback – “返回”

  • paid_btn_url(字符串)可选。如果使用paid_btn_name,则必填。按钮按下时要打开的URL。您可以设置任何成功链接(例如,指向您的机器人的链接)。以https或http开头。

  • payload(字符串)可选。您希望附加到发票的任何数据(例如,用户ID、支付ID等)。最多4kb。

  • allow_comments(布尔值)可选。允许用户向支付添加评论。默认为true。

  • allow_anonymous(布尔值)可选。允许用户匿名支付发票。默认为true。

  • expires_in(数字)可选。您可以设置发票的支付时间限制(以秒为单位)。接受1-2678400之间的值。

# create invoice, return Invoices object 
  $inv = $crypto->createInvoice($params = [
    'asset'   => 'USDT',
    'amount'  => '2.50',
    'payload' =>  '11158', # subscription id
    'allow_comments' => False,
    'allow_anonymous' => True,
    'paid_btn_name' => 'openBot',
    'paid_btn_url' => 'https://t.me/demobot',
    'hidden_message' => 'Thanks for your payment',
    'description' => 'Monthly Subscription'
  ]);
  echo $inv->id();
  echo $inv->url();

getInvoices

  • asset(字符串)可选。以逗号分隔的货币代码。支持资产:“BTC”、“TON”、“ETH”(仅测试网)、“USDT”、“USDC”和“BUSD”。默认为所有资产。
  • invoice_ids(字符串)可选。以逗号分隔的发票ID。
  • status(字符串)可选。要返回的发票状态。可用状态:“active”(活动)和“paid”(已支付)。默认为所有状态。
  • offset(数字)可选。返回特定子集发票所需的偏移量。默认为0。
  • count(数字)可选。要返回的发票数量。接受1-1000之间的值。默认为100。
# get invoice, return array of Invoices object 
$res = $crypto->getInvoices($params = [
  'asset'  =>  'TON', // Crypto symbols
  'invoice_ids'   => '12600,12626,12745', // ids seperated by comma
]);

transfer

使用此方法将您的应用程序余额中的硬币发送给用户。成功时,返回完成的转账对象。

  • user_id(数字)Telegram用户ID。用户必须之前已使用CryptoBot(@CryptoTestnetBot用于测试网)。
  • asset(字符串)货币代码。支持资产:“BTC”、“TON”、“ETH”(仅测试网)、“USDT”、“USDC”和“BUSD”。
  • 金额(String)转账金额,以浮点数表示。支持的每种资产的最小和最大金额大致对应于0.01-25000美元的限额。使用getExchangeRates转换金额。例如:125.50
  • spend_id(String)唯一的ID,用于确保请求的幂等性,并确保只有具有相同spend_id的转账会被Crypto Pay API接受。当需要重试转账(例如请求超时、连接重置、500 HTTP状态等)时,此参数非常有用。可以是某些唯一的提款标识符。最多64个符号。
  • 注释(String)可选。转账注释。用户在收到转账通知时将看到此注释。最多1024个符号。
  • disable_send_notification(Boolean)可选。如果用户不应收到转账通知,请传递true。默认值为false。
# transfer to user, return Transfer object 
$transfer = $crypto->transfer($params = [
  'user_id'  =>  '1111111', // telegram user_id
  'asset'   => 'USDT', // Crypto
  'amount'  => '2.50', // amount
  'spend_id' =>  '1001', # reequest uniqe id to avoid double transfer
  'disable_send_notification'  =>  False,
  'comment' =>  'gift transfer'
]);

getBalance

使用此方法获取您应用程序的余额。返回资产数组。

getExchangeRates

使用此方法获取支持的货币的汇率。返回货币数组。

getCurrencies

使用此方法获取支持的货币列表。返回货币数组。

Webhooks getUpdate

使用Webhooks获取您应用程序的更新。Webhook请求至少发送一次。

要确保Webhook请求是由Crypto Pay API发送的,请使用URL中的秘密路径,例如:https://www.example.com/。由于没有人知道您的应用程序令牌,您可以相当确信它是CryptoBot

如何启用Webhooks?打开CryptoBot(测试网为@CryptoTestnetBot),进入Crypto Pay → 我的App,选择一个App,打开‘Webhooks’并点击‘启用Webhooks’。然后发送用于接收更新的HTTPS URL。

# webhook, return Webhook object with Update and Invoice 
$hook = new Sarani\CryptoPay\Webhook();
$update = $hook->getUpdate(); // Update object
$nvoice =   $update->getPayload(); // Invoice Object
echo( $nvoice->status()); 

贡献

欢迎提交拉取请求。对于重大更改,请首先打开一个问题以讨论您想要更改的内容。

免责声明

本项目及其作者与CryptoBot无关。

财务支持

此库的使用是免费的,但如果您喜欢它,任何支持都是受欢迎的。

您可以通过此发票或通过CryptoBot(通过附属链接)来支持。

直接发送

  • TON: UQC09HtKpaK0prsE1X-V7cnk5JE_NrSy4bgTxVeCU8kfO1A6
  • BTC: 17sL8eapiCs1eeq2nRVAZozsn6ws9HCToP
  • BTC, TON, USDT, USDC, BUSD, BNB:通过CryptoBot转账

许可证

本项目根据MIT许可证许可。