本文记录了一个基于 FastAdmin 框架的项目中,从零开始集成支付宝支付的完整开发过程,包括 epay 插件安装、订单系统设计、支付流程实现以及回调处理中遇到的坑。
目录
一、技术栈概览
- 框架:FastAdmin(基于 ThinkPHP 5)
- 支付插件:epay(微信支付宝整合插件,v1.3.15)
- 支付 SDK:yansongda/pay(v2 版本)
- 支付渠道:支付宝(手机网页支付 WAP)
二、epay 插件安装与配置
2.1 插件介绍
epay 是 FastAdmin 生态中的一个支付整合插件,
需要安装到项目中,封装了 `yansongda/pay` SDK,提供了统一的支付接口。
插件目录结构如下:
addons/epay/
├── certs/ # 证书目录
│ ├── alipayCertPublicKey.crt # 支付宝公钥证书
│ ├── alipayRootCert.crt # 支付宝根证书
│ ├── appCertPublicKey.crt # 应用公钥证书
│ └── private_key # 应用私钥
├── controller/ # 控制器
│ ├── Api.php # 支付 API
│ └── Index.php # 插件管理
├── library/ # 核心库
│ ├── v2/Yansongda/Pay/ # yansongda/pay SDK v2
│ └── Service.php # 支付服务类
├── config.php # 插件配置
└── info.ini # 插件信息
2.2 支付宝参数配置
在插件后台配置支付宝相关参数,主要配置项在 `addons/epay/config.php` 中:
'alipay' => [
'mode' => 'dev', // 运行模式:dev=沙箱,normal=正式
'app_id' => '你的支付宝应用 APPID', // 支付宝应用 APPID
'signtype' => 'cert', // 签名类型:证书模式
'ali_public_key' => '支付宝公钥证书',
'app_cert_public_key' => '应用公钥证书',
'alipay_root_cert' => '支付宝根证书',
'private_key' => '应用私钥',
'notify_url' => '/addons/epay/api/notifyx/type/alipay',
'return_url' => '/addons/epay/api/returnx/type/alipay',
'scanpay' => '0', // PC 端是否使用扫码支付
'log' => '1', // 是否开启日志
],
证书模式说明:支付宝推荐使用证书模式进行签名验证,需要下载三个证书文件:
- 应用公钥证书(appCertPublicKey.crt)
- 支付宝公钥证书(alipayCertPublicKey.crt)
- 支付宝根证书(alipayRootCert.crt)
三、订单系统设计
3.1 数据库设计
你的订单表结构。
3.2 订单模型
// application/common/model/Order.php
namespace app\common\model;
use think\Model;
class Order extends Model
{
protected $name = 'order';
protected $autoWriteTimestamp = false;
protected $createTime = 'created_at';
protected $updateTime = 'updated_at';
}
3.3 订单服务层
订单服务类 `OrderService` 负责订单的创建、查询、取消和回调处理:
// application/common/services/OrderService.php
class OrderService extends Service
{
use PayTrait, UserTrait;
public $model;
public function __construct()
{
$this->model = new \app\common\model\Order();
}
/**
* 创建订单


385

被折叠的 条评论
为什么被折叠?



