PHP如何对接微信支付和支付宝支付接口?

风强小哥_9756

风强小哥_9756

2026-11-11

835人浏览

原创

php对接微信支付和支付宝支付接口,核心在于使用官方sdk或封装好的composer库处理签名、请求与回调验签。推荐使用`yansongda/pay`库,它统一了两种支付的调用方式,只需配置对应的appid、mchid和api密钥即可快速接入。该库会自动处理复杂的xml/json转换及rsa签名逻辑,开发者只需关注业务参数如订单号、金额和回调地址。

PHP如何对接微信支付和支付宝支付接口?

如何初始化支付网关并配置关键参数

初始化支付网关需要引入`yansongda/pay`包,并通过配置文件传入各渠道的独立密钥。微信需配置AppID、MchID和V3密钥,支付宝需配置AppID和私钥。配置完成后,实例化Pay对象即可获取对应渠道的服务实例,无需手动处理底层HTTP请求。

PHP如何对接微信支付和支付宝支付接口?

composer require yansongda/pay

// config/pay.php
return [
    'wechat' => [
        'default' => [
            'mch_id' => 'your_mch_id',
            'wechat_app_id' => 'your_app_id',
            'private_key' => 'path/to/private.pem',
            'cert_path' => 'path/to/apiclient_cert.pem',
            'key' => 'your_api_v3_key',
        ],
    ],
    'alipay' => [
        'default' => [
            'app_id' => 'your_alipay_app_id',
            'private_key' => 'path/to/alipay_private.pem',
            'alipay_public_key' => 'path/to/alipay_public.pem',
        ],
    ],
];

// usage.php
use Yansongda\Pay\Pay;

$config = require 'config/pay.php';
$pay = new Pay($config);

// 获取微信服务
$wechatService = $pay->wechat();
// 获取支付宝服务
$alipayService = $pay->alipay();

如何发起统一下单请求并生成支付参数

发起下单请求时,需构造包含订单号、金额、描述和回调地址的参数数组。微信通常返回二维码URL或JSAPI接口参数,支付宝返回表单HTML或直接跳转URL。调用`pay()`方法后,库会根据渠道类型自动组装请求体并发送,最终返回前端可直接使用的支付凭证数据。

微信小程序隐私权限调试
微信小程序隐私权限调试

一站式排查小程序隐私授权报错(errno 104 / buttonId is wrong 等)+ 标准修改模式。适用:隐私协议配置、隐私弹窗不弹、授权报错、隐私接口调用失败。已抽离具体项目,适用于任何微信小程序。

下载

PHP如何对接微信支付和支付宝支付接口?

// 发起微信支付下单
$order = [
    'out_trade_no' => 'ORDER_' . time(),
    'description' => 'Test Product',
    'amount' => [
        'total' => 100, // 单位:分
    ],
    'payer' => [
        'openid' => 'oUpF8uMuAJO_M2pxb1Q9zNjWeS6o',
    ],
    'notify_url' => 'https://yourdomain.com/callback/wechat',
];

$result = $wechatService->pay([
    'plugin' => 'MpPay', // 公众号支付
    'params' => $order,
]);

// 返回给前端的JSAPI参数
echo json_encode($result->all());

// 发起支付宝扫码支付
$alipayOrder = [
    'out_trade_no' => 'ORDER_' . time(),
    'total_amount' => '0.01',
    'subject' => 'Test Product',
    'notify_url' => 'https://yourdomain.com/callback/alipay',
];

$alipayResult = $alipayService->scan([
    'params' => $alipayOrder,
]);

// 返回二维码链接
echo $alipayResult->getRedirectUrl();

如何处理支付成功后的异步通知与验签

处理异步通知时,必须验证请求来源的签名以确保数据未被篡改。`yansongda/pay`提供了`verify()`方法来自动完成验签过程。验签成功后,从回调数据中提取订单号,更新本地订单状态为已支付。若验签失败或订单不存在,应返回HTTP 400或500错误,防止重复处理或非法请求。

// 微信支付回调处理
public function wechatNotify(Request $request)
{
    try {
        $config = require 'config/pay.php';
        $pay = new Pay($config);
        
        // 验签并获取通知数据
        $notification = $pay->wechat()->callback();
        
        // 检查支付状态
        if ($notification->status === 'SUCCESS') {
            $orderNo = $notification->out_trade_no;
            // 更新数据库订单状态
            updateOrderStatus($orderNo, 'paid');
            
            // 返回成功响应
            return $pay->wechat()->success();
        }
        
        return $pay->wechat()->fail('Payment failed');
    } catch (\Exception $e) {
        return response('Invalid signature', 400);
    }
}

// 支付宝回调处理
public function alipayNotify(Request $request)
{
    try {
        $config = require 'config/pay.php';
        $pay = new Pay($config);
        
        // 验签
        $verified = $pay->alipay()->callback();
        
        if ($verified->trade_status === 'TRADE_SUCCESS') {
            $orderNo = $verified->out_trade_no;
            updateOrderStatus($orderNo, 'paid');
            
            // 返回 success
            return 'success';
        }
        
        return 'fail';
    } catch (\Exception $e) {
        return 'fail';
    }
}

php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

相关文章

支付宝
支付宝

支付宝,全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付服务,有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

12644

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

7261

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2235

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

4588

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

5294

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

4171

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

6037

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

4742

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

12502

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
《20天入门精通PHP》视频教程
《20天入门精通PHP》视频教程

共200课时 | 49.5万人学习

墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习