magein / think-pay
支付中心
v1.0.0
2024-08-03 14:44 UTC
Requires
- php: >=7.2.5
- ext-json: *
- magein/pay: ^1.0
- magein/think-migration: ^1.0.0
- magein/think-utils: ^2.0.0
- magein/utils: ^2.0.0
- topthink/framework: ^6.1.0
- topthink/think-filesystem: ^1.0
- topthink/think-orm: ^2.0
- topthink/think-view: ^1.0
This package is not auto-updated.
Last update: 2024-12-21 18:37:40 UTC
README
THINK,PAY
简介
php-pay适用于think6的支付扩展
安装
composer require magein/think-pay
使用
以使用composer.json中的extra参数进行加载
服务类
app()->payment;
重写服务
use think\Service;
class PaymentService extends Service{
public function register()
{
$this->app->bind('payment', Payment::class);
}
public function boot()
{
PayConfig::instance()->setConfig(config('pay'));
}
}
在app/service.php新增服务
return [
AppService::class,
PaymentService::class
];
配置
在config目录下新增pay.php
路由
路由地址 | 请求方式 | 说明 |
---|---|---|
/pay/center | get | 收银台 |
/pay/unify | post | 统一下单 |
/pay/qrcode | post | 获取二维码 |
/pay/qrcode/available | get | 验证二维码是否有效 |
/pay/query | get | 查询订单支付信息 |
/pay/scan | get | 扫码支付接口 |
/pay/oauth | any | 微信授权回调 |
/pay/notify | any | 支付异步通知 |
/pay/success | any | 支付完成跳转 |
路由中间件
在配置pay.php文件中添加
return [
// 域名
'domain' => trim(env('app.url'), '/'),
// 中间件
'middleware' =>[
// 请求unify、qrcode、qrcode/available、query由后端发起,需要验证数据来源
'auth' => [],
// 收银台中间件
'center' => [],
// 扫码支付中间件
'scan' => [],
// 支付平台异步通知中间件
'notify' => [],
// 支付平台支付完成跳转中间件
'success' => []
],
// 静态资源
'assets' => [
// jquery使用的cdn
'jquery' => 'https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/jquery/1.12.4/jquery.min.js',
],
数据库文件
migrations
使用think-migration包则将migrations目录下的文件复制到database/migrations下执行
php think migrate:run
sql
支付订单表
CREATE TABLE `pay_orders`
(
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`pay_no` char(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '支付编号',
`order_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '平台订单编号',
`channel_id` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '渠道',
`platform_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '交易平台',
`scene` tinyint(4) NOT NULL DEFAULT '1' COMMENT '场景 1 支付订单 order 2 充值 recharge',
`user_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '用户信息',
`subject` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '交易标题',
`appid` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'appid',
`merchant_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '收款账号',
`trade_no` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '第三方交易编号',
`trade_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '平台交易方式 支付宝的h5、面对面、app,微信的jsapi、h5等',
`total_amount` int(11) NOT NULL COMMENT '交易总金额 单位分',
`coupon_amount` int(11) NOT NULL COMMENT '优惠金额 单位分',
`coupon_info` text COLLATE utf8mb4_unicode_ci COMMENT '优惠信息',
`result` tinyint(4) NOT NULL DEFAULT '0' COMMENT '交易结果 0 等待中 pending 1 成功 success -1 失败 fail',
`reason` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '交易失败原因',
`remark` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '交易备注',
`notify_date` timestamp NULL DEFAULT NULL COMMENT '异步通知时间',
`notify_data` text COLLATE utf8mb4_unicode_ci COMMENT '异步通知参数',
`notify_url` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '支付完成后通知的地址',
`return_url` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '支付完成后跳转的地址',
`created_at` datetime NOT NULL COMMENT '创建时间',
`updated_at` datetime NOT NULL COMMENT '更新时间',
`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
PRIMARY KEY (`id`),
UNIQUE KEY `pay_no` (`pay_no`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
支付二维码表
CREATE TABLE `pay_qrcodes`
(
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`pay_no` char(18) COLLATE utf8_unicode_ci NOT NULL COMMENT '二维码支付编号',
`expire_in` datetime NOT NULL COMMENT '过期时间',
`available` tinyint(4) NOT NULL COMMENT '是否有效 扫码后防止重复支付',
`params` mediumtext COLLATE utf8_unicode_ci NOT NULL COMMENT '支付数据',
`created_at` datetime NOT NULL COMMENT '创建时间',
`updated_at` datetime NOT NULL COMMENT '更新时间',
`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',
PRIMARY KEY (`id`),
UNIQUE KEY `pay_no` (`pay_no`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1
DEFAULT CHARSET = utf8
COLLATE = utf8_unicode_ci;