webgriffe/payum-lock-request-extension

一个提供锁定并发请求能力的 Payum 扩展。

0.1.0 2023-10-17 10:20 UTC

This package is auto-updated.

Last update: 2024-09-27 16:51:26 UTC


README

一个提供锁定并发请求能力的 Payum 扩展

Tests

此扩展提供了锁定 Payum 网关并发请求的能力(例如,当支付服务提供商在同一时刻发送通知操作和传统捕获操作时)。它使用 Symfony 锁组件 来提供一个简单且可靠的锁定机制。

安装

composer require webgriffe/payum-lock-request-extension

用法

<?php

// Use your preferred \Symfony\Component\Lock\PersistingStoreInterface implementation
$persistingStore = new Symfony\Component\Lock\Store\SemaphoreStore();

$lockFactory = new \Symfony\Component\Lock\LockFactory($persistingStore);

$lockRequestExtension = new \Webgriffe\PayumLockRequestExtension\LockRequestExtension(
    $lockFactory,
    'my_lock_prefix', // Optional, default value is 'webgriffe_payum_lock_request_extension'
    30.0, // Optional, default value is 30.0
    true // Optional, default value is true
);

/** @var \Payum\Core\Gateway $gateway */
$gateway->addExtension($lockRequestExtension);

// here the extension will be called to wrap the execute acton in a lock
$gateway->execute(new FooRequest);

配置

扩展可以使用以下选项进行配置

  • 锁定前缀:为确保锁定键的唯一性,默认值为 webgriffe_payum_lock_request_extension
  • 锁定 TTL:锁定可以保持的最大时间(秒),默认值为 30
  • 锁定自动释放:当锁定实例被销毁时,是否释放锁定,默认值为 true