PHPackages                             larva/laravel-pay - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Payment Processing](/categories/payments)
4. /
5. larva/laravel-pay

ActiveLibrary[Payment Processing](/categories/payments)

larva/laravel-pay
=================

This is a pay.

1.0.7(3w ago)1279MITPHPPHP ^8.2

Since Apr 10Pushed 3w agoCompare

[ Source](https://github.com/larva-cool/laravel-pay)[ Packagist](https://packagist.org/packages/larva/laravel-pay)[ RSS](/packages/larva-laravel-pay/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (8)Dependencies (22)Versions (9)Used By (0)

laravel-pay
===========

[](#laravel-pay)

 [![Stable Version](https://camo.githubusercontent.com/bb7ce6059e8544048573d9600a2f642a1b35c3ef39eb3b77359fb979a336aa2d/68747470733a2f2f706f7365722e707567782e6f72672f6c617276612f6c61726176656c2d7061792f762f737461626c65)](https://packagist.org/packages/larva/laravel-pay) [![Total Downloads](https://camo.githubusercontent.com/41f4c32cec870b787e5db58299bbf286bb1e216413a2fbbd39adc224d9499dfc/68747470733a2f2f706f7365722e707567782e6f72672f6c617276612f6c61726176656c2d7061792f646f776e6c6f616473)](https://packagist.org/packages/larva/laravel-pay) [![License](https://camo.githubusercontent.com/136c51e3bbb963e2c9963a003792476bab9b0d4efd3ef660f48ac1135e3c0586/68747470733a2f2f706f7365722e707567782e6f72672f6c617276612f6c61726176656c2d7061792f6c6963656e7365)](https://packagist.org/packages/larva/laravel-pay)

这是一个内部收单系统，依赖 `yansongda/pay` 这个组件，本收单系统统一了调用方式。

> 备注：交易金额单位是**分**；2.x 和 3.x 版本对外接口一致，只是内部调用的第三方接口版本不同，本扩展拉齐了开发体验。

环境需求
----

[](#环境需求)

- PHP ^8.2
- Laravel ^12.0 | ^13.0
- ext-json, ext-openssl, ext-bcmath

安装
--

[](#安装)

```
composer require "larva/laravel-pay"
```

配置
--

[](#配置)

发布配置文件和迁移文件：

```
php artisan vendor:publish --provider="Larva\Pay\PayServiceProvider"
```

发布后可在 `config/pay.php` 中配置支付宝、微信、银联的商户参数。配置项说明请参考 [yansongda/pay 文档](https://pay.yansongda.cn/)。

支持的支付渠道
-------

[](#支持的支付渠道)

渠道常量支付类型微信`Pay::CHANNEL_WECHAT`web、wap、app、pos、scan、mini支付宝`Pay::CHANNEL_ALIPAY`web、wap、app、scan银联`Pay::CHANNEL_UNIONPAY`-路由注册
----

[](#路由注册)

在 `AppServiceProvider` 的 `boot` 方法中注册路由：

```
\Larva\Pay\Pay::routes();
```

在中间件 `App\Http\Middleware\VerifyCsrfToken` 中排除支付回调路由：

```
protected $except = [
    'pay',
];
```

使用方法
----

[](#使用方法)

### 创建收款单

[](#创建收款单)

```
use Larva\Pay\Models\Charge;

$charge = Charge::create([
    'trade_channel' => 'wechat',      // 支付渠道
    'trade_type'    => 'scan',        // 支付类型
    'subject'       => '订单标题',
    'description'   => '商品描述',
    'total_amount'  => 100,           // 金额，单位：分
    'client_ip'     => $request->ip(),
    'metadata'      => ['openid' => 'xxx'], // 微信小程序支付需要 openid
]);
```

创建收款单后会自动预下单并写入 `credential`（支付凭证），前端可据此调起支付。

如果创建时不指定渠道和类型，后续也可动态获取凭证：

```
$credential = $charge->getCredential('alipay', 'web');
```

### 查询收款单

[](#查询收款单)

```
$charge = \Larva\Pay\Pay::getCharge($id);
```

### 发起退款

[](#发起退款)

```
$refund = $charge->refund('退款原因');
```

退款单创建后会自动通过队列提交到支付网关。

### 企业付款（提现）

[](#企业付款提现)

```
use Larva\Pay\Models\Transfer;

$transfer = Transfer::create([
    'trade_channel' => 'alipay',
    'amount'        => 100,           // 金额，单位：分
    'description'   => '提现备注',
    'recipient'     => [
        'account'      => 'user@example.com',
        'account_type' => 'ALIPAY_LOGON_ID',
        'name'         => '张三',
    ],
]);
```

付款单创建后会自动通过队列提交到支付网关。

事件
--

[](#事件)

**事件****描述**`\Larva\Pay\Events\ChargeSucceeded`收款成功`\Larva\Pay\Events\ChargeFailed`收款失败`\Larva\Pay\Events\ChargeClosed`收款已关闭`\Larva\Pay\Events\RefundSucceeded`退款成功`\Larva\Pay\Events\RefundFailed`退款失败`\Larva\Pay\Events\RefundClosed`退款关闭`\Larva\Pay\Events\TransferSucceeded`企业付款成功`\Larva\Pay\Events\TransferFailed`企业付款失败所有事件类都使用 `SerializesModels` trait，可直接在队列监听器中使用。

订单关联
----

[](#订单关联)

通过多态关联将你的订单模型与收款单绑定：

```
use Larva\Pay\Models\Charge;

class Order extends Model
{
    /**
     * 关联付款模型
     * @return \Illuminate\Database\Eloquent\Relations\MorphOne
     */
    public function charge()
    {
        return $this->morphOne(Charge::class, 'order');
    }

    /**
     * 发起退款
     * @param string $reason 退款描述
     * @return Model|Refund
     * @throws Exception
     */
    public function refund(string $reason)
    {
        if ($this->charge->paid && $this->charge->refundableAmount > 0) {
            $refund = $this->charge->refund($reason);
            $this->update(['refunded' => true]);
            return $refund;
        }
        throw new Exception('Not paid, no refund.');
    }
}
```

创建收款单时关联订单：

```
$order->charge()->create([
    'trade_channel' => 'wechat',
    'trade_type'    => 'scan',
    'subject'       => $order->title,
    'total_amount'  => $order->amount,
    'client_ip'     => $request->ip(),
]);
```

数据表结构
-----

[](#数据表结构)

安装后会自动创建以下数据表：

- `pay_charges` — 收款记录表
- `pay_refunds` — 退款记录表
- `pay_transfer` — 付款记录表

License
-------

[](#license)

[MIT](LICENSE)

###  Health Score

49

—

FairBetter than 94% of packages

Maintenance94

Actively maintained with recent releases

Popularity14

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity67

Established project with proven stability

 Bus Factor1

Top contributor holds 50% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~223 days

Recently: every ~390 days

Total

8

Last Release

25d ago

PHP version history (2 changes)1.0.0PHP ^8.0.2

1.0.7PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/534cdb651e8c806590fa945c6b5a18f361613848e890db1349f4a9fbcae1a650?d=identicon)[xutongle](/maintainers/xutongle)

---

Top Contributors

[![xutl](https://avatars.githubusercontent.com/u/20939388?v=4)](https://github.com/xutl "xutl (7 commits)")[![xutongle](https://avatars.githubusercontent.com/u/46956076?v=4)](https://github.com/xutongle "xutongle (7 commits)")

---

Tags

laravelpaymentpayLarva

###  Code Quality

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/larva-laravel-pay/health.svg)

```
[![Health](https://phpackages.com/badges/larva-laravel-pay/health.svg)](https://phpackages.com/packages/larva-laravel-pay)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3345.4M354](/packages/psalm-plugin-laravel)[laravel/scout

Laravel Scout provides a driver based solution to searching your Eloquent models.

1.7k57.2M682](/packages/laravel-scout)[flat3/lodata

OData v4.01 Producer for Laravel

100357.6k](/packages/flat3-lodata)[laravel/pulse

Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application.

1.7k16.3M154](/packages/laravel-pulse)[moonshine/moonshine

Laravel administration panel

1.3k268.2k89](/packages/moonshine-moonshine)[pressbooks/pressbooks

Pressbooks is an open source book publishing tool built on a WordPress multisite platform. Pressbooks outputs books in multiple formats, including PDF, EPUB, web, and a variety of XML flavours, using a theming/templating system, driven by CSS.

45844.8k1](/packages/pressbooks-pressbooks)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
