MyCryptoCheckout API 用于与 API 服务器通信。

20231113 2023-11-13 18:05 UTC

This package is auto-updated.

Last update: 2024-09-13 19:58:26 UTC


README

这是 MyCryptoCheckout 服务的 PHP API。该 API 使用 JSON 对象进行通信。

要使用 API,您必须实现以下内容:

  • 通信(GET POST 请求)
  • 存储
  • 标记付款为完成或取消

已经包含了一个完整的 WordPress 实现。要查看 API 的实际应用,请参阅 MyCryptoCheckout WordPress 插件

要求

  • Composer
  • PHP 5.6

安装

composer require mycryptocheckout/api

API 组件

API 组件是主类。它处理与 API 服务器的通信,并为其他组件提供基本服务,例如数据存储和检索。

Account 组件提供与存储的账户数据相关的函数。货币信息、汇率、付款信息、预留金额等。

Payments 组件处理向 API 服务器添加和取消付款数据。它接收 API 组件有关取消或完成付款的消息。

其他类

Client_Account_Data 是在检索账户期间发送到服务器的内容,其中包含有关安装的信息。

Payment 包含发送到服务器的订单数据:货币、金额、收款钱包地址等。它有一个 $data 属性,可以用于存储任意属性。

Payment_Data 是用于 Payment 类中的智能数据处理程序。

与 API 服务器通信

本节解释了与服务器通信的理论。基本原理如下:

  • 通信是通过发送 JSON 对象来回进行的。
  • 客户端有一个密钥。
  • API 服务器知道客户端的密钥。
  • 密钥由客户端和客户端使用以授权自己。
  • 客户端必须跟踪自己的账户数据。
  • 客户端可以从服务器请求其账户数据。
  • retrieve_account 请求使用 retrieve_key 来确保 只有 服务器才能向客户端发送账户数据。
  • 客户端向服务器发送付款信息。
  • 服务器向客户端发送付款取消/完成更新。
  • 密钥确保 只有 服务器可以向客户端发送付款更新。

用法

为了使此文档灵活,当提到基本命名空间 mycryptocheckout\api\vx 时,x 是您希望实现的 API 的版本号。

基类大多是抽象的,需要您实现各种方法。

API

首先创建一个扩展 mycryptocheckout\api\vx\API 的类。您将需要实现以下方法:

  • delete_data - 从持久存储中删除数据。
  • get_data - 从持久存储中检索数据。
  • get_client_url - 返回此服务器使用的 URL。
  • is_retrieve_key_valid - 返回指定的检索密钥是否与存储中存储的密钥匹配。
  • save_data - 将数据存储到持久存储中。
  • send_get - 向 URL 发送 GET 请求。
  • send_post - 向 URL 发送 POST 请求,其中包含数据数组。

创建您的 API 类后,您可以实例化它。

创建API实例:$api = new \mytest\api\API();

API可以创建其他组件。

$account = $api->account(); $payments = $api->payments();

由于消息是从服务器发送的,客户端必须能够处理它们,如果消息到达的话。

$api->maybe_process_messages();

上述方法将检查$_POST变量中是否有与MyCryptoCheckout相关的任何消息,并将处理它们。如果$_POST不包含来自服务器的任何内容,它将直接返回。

账户

账户组件负责从服务器获取账户数据。要获取或更新账户数据

$account->retrieve();

这将导致以下事件

  • 本地生成retrieve_key。
  • 将密钥放入Client_Account_Data。
  • 将数据发送到服务器。
  • 服务器通过在另一个线程中联系客户端以回复新的账户数据来响应。
  • 由于这是在另一个线程中完成的,retrieve_key必须放在两个线程都可以访问的地方。
  • 新线程检查新数据,并查看retrieve_key是否与存储的匹配。
  • 如果是这样,则存储新数据。
  • 原始线程从服务器接收到OK。全部完成。

服务器在单独的调用中发送数据的目的是为了确保

  • 客户端URL正确
  • 发送者没有欺骗

数据检索后,您可以访问不同的部分。

$account->get_currency_data();$account->has_payments_left();

请参阅Account.php文件以获取更多方法。

支付

支付组件负责将支付数据发送到服务器并处理支付更新。

MyCryptoCheckout的payment是区块链上预期的交易。它有一个唯一的ID,当创建支付或支付状态更改时,服务器将发送给客户端。您需要存储这个唯一的ID。

您还应存储其他支付信息,如预期金额、货币、钱包地址等。

您的类将扩展 Payments 类,并必须实现以下内容

  • cancel_local - 服务器告诉客户端标记支付为已取消。
  • complete_local - 服务器告诉客户端标记支付为已完成。

首先创建一个Payment对象。

$payment = $api->payments()->create_new();

然后填充它

$payment->set_currency_id( 'BTC' ); $payment->set_amount( 50 ); $payment->set_to( 'my_wallet_address' );

然后将它发送到API。

在设置金额之前,检查该金额是否已被其他交易预留。账户数据存储每个货币的预留金额数组。如果您想要的金额已被预留,请将其增加一个小数点,直到找到未预留的金额。

$payment_id = $api->payments()->add( $payment );

$payment_id存储在与其相关的任何事物中。在WordPress WooCommerce中,这将是订单元数据。

您需要在服务器上取消支付吗?

$api->payments()->cancel( $payment_id );

服务器可以取消因过时而旧的支付。服务器将发送一个带有支付ID的cancel_payment消息。您的cancel_local方法实现将接收到一个具有设置payment_id属性的支付对象。

相同的情况也适用于检测到的支付:客户端将接收到一个带有支付ID和交易ID的complete_payment消息。您的complete_local方法实现将接收到一个具有设置payment_idtransaction_id属性的支付对象。

文档结束

如果您有任何疑问,请通过mycryptocheckout.com联系我们。