# think-pay **Repository Path**: magein/think-pay ## Basic Information - **Project Name**: think-pay - **Description**: think6支付系统 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-07-26 - **Last Updated**: 2024-08-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README THINK,PAY ### 简介 [php-pay](https://gitee.com/magein/php-pay)适用于think6的支付扩展 ### 安装 ```shell composer require magein/think-pay ``` ### 使用 > 以使用composer.json中的extra参数进行加载 #### 服务类 ```php app()->payment; ``` #### 重写服务 ```php 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新增服务 ```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文件中添加 ```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下执行 ```shell php think migrate:run ``` #### sql 支付订单表 ```mysql 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; ``` 支付二维码表 ```mysql 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; ```