barstec/laravel-cashbill

Laravel 集成 cashbill 付款的包。

v1.0.4 2024-02-25 17:55 UTC

This package is auto-updated.

Last update: 2024-09-25 19:10:00 UTC


README

用于轻松集成 Laravel 的 Cashbill 付款的包。

支持

如果这个包对您有帮助,您可以通过 Ko-fi 支持我的工作。

ko-fi

安装

  1. 使用命令安装 composer 包
  composer require barstec/laravel-cashbill
  1. 将配置文件发布到您的项目
  php artisan vendor:publish --provider="Barstec\Cashbill\CashbillServiceProvider"
  1. 运行迁移
  php artisan migrate 

设置

首先,您需要将环境变量从 .env.example 移动到 .env

CASHBILL_MODE=dev
CASHBILL_SHOP_ID=
CASHBILL_SECRET_KEY=

如果您处于测试模式,将 CASHBILL_MODE 设置为 dev。在生产中,将其切换到 prod。从 CashBill 商店设置中检索剩余的变量。

在配置文件中,您可以定义返回路由、默认值、数据库表名以及收集个人数据的列。修改列后,重新运行迁移过程。

请确保您指定的通知路由与 CashBill 商店设置中的路由相同。此 URL 用于验证交易,默认设置为 /api/cashbill/notification

使用/示例

要启动交易,在您的控制器中创建一个 Payload 对象并分配值。然后,创建一个 Payment 对象,传递 Payload 并调用 redirect()。此操作将启动交易并将用户重定向到 Cashbill 付款页面。您还可以创建一个 PersonalData 对象。在 Cashbill 页面上,电子邮件地址将自动填写。

<?php

namespace App\Http\Controllers;

use Barstec\Cashbill\Payload;
use Barstec\Cashbill\Payment;
use Barstec\Cashbill\PersonalData;

class CashbillExample extends Controller
{
    public function handle()
    {
        $payload = new Payload();
        $payload->setTitle("Example title");
        $payload->setAmount(9.5);

        $personalData = new PersonalData();
        $personalData->setEmail("email@example.com");
        $personalData->setFirstName("Name");
        $personalData->setSurname("Surname");
        $payload->setPersonalData($personalData);

        $payment = new Payment($payload);
        return $payment->redirect();
    }
}

交易创建后,将触发 TransactionCreated 事件。您可以使用它来检索 payload 和订单 ID,以将交易与特定用户关联。为此,创建一个监听器并将其注册到您的 EventServiceProvider

protected $listen = [
    TransactionCreated::class => [
        ExampleListener::class
    ]
];

默认情况下,所有交易状态更改都由包处理。在收到 Cashbill 的 PositiveFinish 信号后,触发 TransactionSuccessfullyCompleted 事件。否则,对于状态更改,触发 TransactionStatusChanged 事件。

如果您希望手动更新订单数据,可以通过将特定订单 ID 传递给构造函数来创建一个 Order 对象,然后调用 update() 方法,该方法返回一个 PaymentDetails 对象。

$order = new Order($orderId);
$paymentDetails = $order->update();

作者

Bartłomiej Stec

许可证

此包根据 MIT 许可证分发