开源技术小栈本文导读:本文介绍如何在webman框架中集成支付宝支付,并实现支付功能。
本文将以高性能PHP框架webman为技术载体,深度解析支付宝支付在现代化企业系统中的集成策略与实践方案。通过本文,开发者将掌握从沙箱环境配置到生产环境部署的全链路实现方案,了解如何利用webman的异步非阻塞特性与支付宝的RESTful API构建高并发支付系统,并获取支付接口安全加固、交易状态同步等关键环节的最佳实践。
文章特别针对webman框架的模块化设计特点,提供可复用的支付SDK集成方案,涵盖当面付、手机网站支付等主流场景,同时详解异步通知机制与对账系统的实现要点,助力开发者打造既符合企业级安全标准又具备优异用户体验的支付解决方案。
本方案专为采用webman前后端分离架构的企业级应用量身定制,旨在助力集成支付宝支付功能。常见应用场景广泛,涵盖在线商城的商品交易支付,让消费者能够便捷购买心仪商品;会员充值场景,方便用户快速完成会员权益的续费或升级;以及各类订单支付场景,确保企业业务流程中的资金流转高效、安全,全面提升用户支付体验,满足企业多样化的线上支付需求。
1. 登录支付宝:https://open.alipay.com/develop/manage
2. 创建应用
3. 进入设置页面
4. 接口加签方式
5. 下载支付宝密钥工具
6. 生成CSR文件
7. 打开生成的文件
8. 支付宝页面下一步
9. 上传刚刚生成的CSR文件
10. 提交应用: 提交应用,等待签约审核成功
11. 下载证书
在项目中添加支付宝 SDK 依赖
composer require yansongda/pay ~3.0
开源技术小栈说明:以下以支付宝沙箱环境为环境进行文档编写,若有问题,请及时反馈哦!
配置文件config/payment.php
,通过支付宝沙箱环境
获取所需参数:
<?php
/**
* @desc 支付配置文件
* @author Tinywan(ShaoBo Wan)
*/
return [
'_force' => true,
'alipay' => [
'default' => [
// 必填-支付宝分配的 app_id
'app_id' => '20160909004708941',
// 必填-应用私钥 字符串或路径
'app_secret_cert' => 'MIIEpAIBAAKCxxxxxxxxxxxxxxP4r3m4OUmD/+XDgCg==',
// 必填-应用公钥证书 路径
'app_public_cert_path' => base_path().'/payment/appCertPublicKey_2016090900470841.crt',
// 必填-支付宝公钥证书 路径
'alipay_public_cert_path' => base_path().'/payment/alipayCertPublicKey_RSA2.crt',
// 必填-支付宝根证书 路径
'alipay_root_cert_path' => base_path().'/payment/alipayRootCert.crt',
// 选填-同步回调地址
'return_url' => 'https://webman.tinywan.cn/payment/alipay-return',
// 选填-异步回调地址
'notify_url' => 'https://webman.tinywan.cn/payment/alipay-notify',
// 选填-服务商模式下的服务商 id,当 mode 为 Pay::MODE_SERVICE 时使用该参数
'service_provider_id' => '',
// 选填-默认为正常模式。可选为: MODE_NORMAL, MODE_SANDBOX, MODE_SERVICE
'mode' => \Yansongda\Pay\Pay::MODE_SANDBOX,
]
],
'logger' => [
'enable' => false,
'file' => runtime_path().'/logs/alipay.log',
'level' => 'debug', // 建议生产环境等级调整为 info,开发环境为 debug
'type' => 'single', // optional, 可选 daily.
'max_file' => 30, // optional, 当 type 为 daily 时有效,默认 30 天
],
'http' => [ // optional
'timeout' => 5.0,
'connect_timeout' => 5.0,
]
];
开源技术小栈注意:证书目录没有规定,以上示例是放在的框架的
payment
目录下
├── payment
│ ├── alipayCertPublicKey_RSA2.crt
│ ├── alipayRootCert.crt
│ └── appCertPublicKey_2016090900470841.crt
获取config/payment.php
配置
$config = config('payment');
\Yansongda\Pay\Pay::config($config);
开源技术小栈注意:如果是支付宝沙箱模式,一定要记得开启配置文件
'mode' => \Yansongda\Pay\Pay::MODE_SANDBOX,
,该选项默认为默认为正常模式。
PC网页支付伪代码
<?php
usesupport\Request;
useYansongda\Pay\Pay;
/**
* @param Request $request
* @return string
*/
publicfunction payment(Request $request)
{
// 1. 初始化配置
Pay::config(config('payment'));
// 2. 网页支付
$order = [
'out_trade_no' => time(),
'total_amount' => '8888.88',
'subject' => 'webman payment',
'_method' => 'get'// 使用get方式跳转
];
return Pay::alipay()->web($order)->getBody()->getContents();
}
对于App支付产生的交易,支付宝会根据原始支付API中传入的异步通知地址notify_url
,通过POST请求的形式将支付结果作为参数通知到商户系统。
<?php
usesupport\Request;
useYansongda\Pay\Pay;
/**
* @desc:『支付宝』异步通知
* @param Request $request
* @return Response
*/
publicfunction alipayNotify(Request $request): Response
{
// 1. 初始化配置
Pay::config(config('payment'));
// 2. 支付宝回调处理
$result = Pay::alipay()->callback($request->post());
// ===================================================================================================
// 请自行对 trade_status 进行判断及其它逻辑进行判断,只有交易通知状态为 TRADE_SUCCESS 或 TRADE_FINISHED 时,支付宝才会认定为买家付款成功。
// 1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号;
// 2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额);
// 3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方;
// 4、验证app_id是否为该商户本身。
// 5、其它业务逻辑情况
// ===================================================================================================
// 5. 支付宝回调处理
returnnew Response(200, [], 'success');
}
开源技术小栈注意:不能使用插件本身
return Pay::alipay()->success();
响应支付宝回调,如果你用到中间件会出现中间件问题。所以响应支付宝需要使用webman的响应类support\Response;
开源技术小栈
notify_url
)上无任何字符,如空格、HTML标签、开发系统自带抛出的异常提示信息等;POST
方式发送通知信息,因此该页面中获取参数的方式,如:request.Form(“out_trade_no”)
、$_POST[‘out_trade_no’]
;4m,10m,10m,1h,2h,6h,15h
);开源技术小栈
TRADE_SUCCESS
的通知触发条件是商户签约的产品支持退款功能的前提下,买家付款成功;TRADE_FINISHED
的通知触发条件是商户签约的产品不支持退款功能的前提下,买家付款成功;或者,商户签约的产品支持退款功能的前提下,交易已经成功并且已经超过可退款期限。notifyUrl
向服务器回调,携带支付结果。服务器验证数据,确认无误后更新订单状态,完成库存扣减等后续操作扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有