coinsnap / php-library
此API库是为PHP开发者创建的,旨在快速方便地将在线商店连接到Coinsnap支付网关
Requires
- php: >=7.4
This package is not auto-updated.
Last update: 2024-09-27 19:57:30 UTC
README
Coinsnap是一个闪电支付提供商,并提供了一个用于处理比特币和闪电支付的支付网关。商家只需要一个带有闪电地址的闪电钱包,就可以在其网站上接受比特币和闪电支付。
Coinsnap PHP库
适用于PHP 7.4+的Coinsnap API库
此API库是为PHP开发者创建的,旨在快速方便地将在线商店连接到Coinsnap支付网关。您可以将此库包含在插件中,或者在您的系统中将其用作插件。
通过比特币/闪电支付网关接收支付的5个步骤
- 在Coinsnap App中进行注册
- 保存设置和匹配支付状态
- 连接到Coinsnap App并保存Webhook
- 接收发票和支付链接
- 更新支付状态
1. 在Coinsnap App中进行注册
在Coinsnap App上注册您的账户,填写所有必要的字段,并接收商店ID和API密钥。
2. 保存设置和匹配支付状态
您需要将商店ID和API密钥保存到您的数据库中,作为Coinsnap连接配置。稍后您将添加那里的webhook数据。如果您的商店有预留的支付状态,您可以匹配您的支付状态到Coinsnap的
- 新 - 对于新发票
- 处理中 - 对于正在处理的发票
- 已结算 - 对于已支付的发票
- 过期 - 对于过期的发票
如果您可以将Coinsnap支付状态添加到现有状态,您也可以这样做。这取决于您的系统。
3. 连接到Coinsnap App并保存Webhook
向Coinsnap App发出的每个请求都需要必要的头信息
'Accept': 'application/json', 'Content-Type': 'application/json', 'x-api-key': «API Key»
Coinsnap\Client\AbstractClient::getRequestHeaders()方法自动创建它们。
3.1. 使用Coinsnap\Client\Store::getStore(«Store ID»).方法检查与Coinsnap的连接。
3.2. 如果Coinsnap服务器可用,我们可以通过Coinsnap\Client\Webhook::createWebhook(«Store ID»,«Callback URL»).方法创建webhook,其中「Callback URL」是Coinsnap服务器通过回调更新支付状态的URL。
如果webhook创建成功,您将收到包含webhook数据的JSON对象:{'id', 'secret', 'url'}。您需要将其存储在您的数据库中,作为一个对象或在单独的字段中。
3.3. 您不需要在保存连接特征时每次都创建webhook,但您可以通过Coinsnap\Client\Webhook::getWebhook( «Store ID», «Webhook ID» );方法检查它。Webhook ID是在webhook创建阶段早期收到的id参数。如果webhook存在,您不需要再次创建它。
3.4. 如果您的Coinsnap凭据已更改,您需要通过updateWebhook(«Store ID»,«Webhook URL»,«Webhook ID»);方法更新webhook;请从包含webhook数据的JSON对象{'id', 'secret', 'url'}中保存更新后的webhook数据,覆盖旧值。
4. 接收发票和支付链接
您不需要更改您的目录、购物车和订单机制,但在结账阶段将会有必要的变化。如果您的用户已选择“比特币+闪电”作为支付方式,您需要通过Coinsnap\Client\Invoice\createInvoice(«Store ID»,«Currency»,«Amount»,«Order ID»,«Buyer e-mail»,«Customer name»,«Redirect URL»).方法从Coinsnap App请求发票。
发送发票请求后,您将收到用于在闪电或比特币中支付的链接和二维码。您需要将收到的订单或交易数据中的发票ID存储起来,以便在第五步检查支付状态。
5. 支付状态更新
发票创建并收到支付后,Coinsnap应用将连接到您之前发送给Coinsnap的回调URL。请求正文是JSON对象 {"type":«支付状态»,"invoiceId":«发票ID»}。您可以通过检查包含在头部「x-coinsnap-sig」中的签名来验证请求是否由Coinsnap发送,并在您的网店内部更新支付状态。