承接 3neti/settlement-envelope 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

3neti/settlement-envelope

最新稳定版本:v1.1.0

Composer 安装命令:

composer require 3neti/settlement-envelope

包简介

Driver-based evidence envelope system for settlement gating

README 文档

README

A driver-based evidence envelope system for settlement gating. This package provides a structured way to collect and validate evidence before allowing settlement of financial transactions.

Installation

composer require 3neti/settlement-envelope

Core Concepts

  • Envelope: A container bound to a settlement reference (e.g., voucher code, loan ID)
  • Driver: A YAML configuration that defines the schema, checklist, permissions, and gates
  • Payload: Versioned JSON metadata attached to the envelope
  • Attachments: Typed document uploads with review workflow
  • Signals: External boolean flags (e.g., KYC passed, account created)
  • Gates: Computed readiness states that determine when settlement is allowed

Usage

Creating an Envelope

use LBHurtado\SettlementEnvelope\Services\EnvelopeService;

$service = app(EnvelopeService::class);

$envelope = $service->create(
    referenceCode: 'BST-001',
    driverId: 'bank.home-loan-takeout',
    initialPayload: [
        'borrower' => ['full_name' => 'Juan Dela Cruz'],
        'loan' => ['tcp' => 2000000, 'amount' => 1800000],
    ]
);

Updating Payload

$service->updatePayload($envelope, [
    'loan' => ['ltv' => 0.9]
]);

Uploading Attachments

$attachment = $service->uploadAttachment(
    $envelope,
    'BORROWER_ID_FRONT',
    $uploadedFile
);

Setting Signals

$service->setSignal($envelope, 'kyc_passed', true);
$service->setSignal($envelope, 'account_created', true);

Checking Settleable Status

if ($envelope->isSettleable()) {
    $service->lock($envelope);
    $service->settle($envelope);
}

Driver Configuration

Create YAML driver files in config/envelope-drivers/:

driver:
  id: "my-driver"
  version: "1.0.0"
  title: "My Settlement Driver"

payload:
  schema:
    id: "my-driver.v1"
    format: "json_schema"
    inline:
      type: "object"
      required: ["name"]
      properties:
        name:
          type: "string"

documents:
  registry:
    - type: "ID_DOCUMENT"
      title: "ID Document"
      allowed_mimes: ["application/pdf", "image/jpeg"]
      max_size_mb: 10

checklist:
  template:
    - key: "name_provided"
      kind: "payload_field"
      payload_pointer: "/name"
      required: true
    - key: "id_uploaded"
      kind: "document"
      doc_type: "ID_DOCUMENT"
      required: true
      review: "required"

signals:
  definitions:
    - key: "approved"
      type: "boolean"
      default: false

gates:
  definitions:
    - key: "settleable"
      rule: "checklist.required_accepted && signal.approved"

Model Integration

Add the HasEnvelopes trait to any model:

use LBHurtado\SettlementEnvelope\Traits\HasEnvelopes;

class Voucher extends Model
{
    use HasEnvelopes;
}

// Usage
$voucher->createEnvelope('bank.home-loan-takeout');
$voucher->isEnvelopeSettleable();

Events

The package fires the following events:

  • EnvelopeCreated
  • PayloadUpdated
  • AttachmentUploaded
  • AttachmentReviewed
  • SignalChanged
  • GateChanged

License

MIT

统计信息

  • 总下载量: 58
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 4
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-03-26

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固