首先完成开发者账号注册并获取密钥,接着通过官方SDK或手动方式调用支付宝、微信支付API实现订单创建与支付请求,最后正确处理异步回调验证签名并更新订单状态。

在PHP项目中集成第三方支付(如支付宝、微信支付)是电商网站或在线服务的常见需求。实现支付功能的关键在于调用支付平台提供的API接口,完成订单创建、支付请求、回调验证等流程。下面以支付宝和微信支付为例,介绍PHP集成第三方支付的基本方法与代码实例。
准备工作:注册开发者账号并获取密钥
使用任何第三方支付前,必须先在对应平台注册开发者账号:
支付宝:进入支付宝开放平台(open.alipay.com),创建应用,获取AppID、私钥和公钥。 微信支付:登录微信支付商户平台(pay.weixin.qq.com),配置API密钥,下载证书。
将这些凭证安全保存,后续请求签名会用到。
支付宝支付接入示例(电脑网站支付)
支付宝提供官方SDK,也可手动构建请求。以下是使用官方SDK发起支付的简单示例:
立即学习“PHP免费学习笔记(深入)”;
安装支付宝SDK(推荐使用Composer):
composer require alipaysdk/easysdk
发起支付请求代码:
require_once 'vendor/autoload.php';use AlipayEasySDKKernelFactory;Factory::setOptions([ 'app_id' => 'your_app_id', 'private_key' => 'your_private_key', 'alipay_public_key' => 'alipay_public_key',]);$response = Factory::payment()->page()->pay( '订单标题', // 订单标题 'OUT_TRADE_NO_001', // 商户订单号 '100.00', // 订单金额 'https://yourdomain.com/return.php' // 支付完成后跳转地址);// 输出表单并自动提交echo $response->body;
用户支付后,支付宝会跳转到return.php进行结果展示,同时通过notify_url异步通知服务器支付结果。
微信支付接入示例(JSAPI支付)
微信支付需构造统一下单请求,以下为简化版实现逻辑:
function wechatPay($openid, $outTradeNo, $totalFee, $body) { $appid = 'your_appid'; $mch_id = 'your_mch_id'; $key = 'your_api_key'; $notify_url = 'https://yourdomain.com/wechat_notify.php'; $params = [ 'appid' => $appid, 'mch_id' => $mch_id, 'nonce_str' => md5(uniqid(microtime(true), true)), 'body' => $body, 'out_trade_no' => $outTradeNo, 'total_fee' => $totalFee, // 单位:分 'spbill_create_ip' => $_SERVER['REMOTE_ADDR'], 'notify_url' => $notify_url, 'trade_type' => 'JSAPI', 'openid' => $openid ]; // 生成签名 ksort($params); $string = ''; foreach ($params as $k => $v) { if ($v !== '' && $k != 'sign') { $string .= "{$k}={$v}&"; } } $string .= "key={$key}"; $params['sign'] = strtoupper(md5($string)); // 转为XML $xml = ''; foreach ($params as $k => $v) { $xml .= "{$v}{$k}>"; } $xml .= ''; // 请求微信统一下单接口 $url = 'https://api.mch.weixin.qq.com/pay/unifiedorder'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec($ch); curl_close($ch); return simplexml_load_string($result, 'SimpleXMLElement', LIBXML_NOCDATA);}
前端根据返回的prepay_id生成支付参数,调起微信支付。
处理支付回调(重要)
支付平台会在用户支付成功后发送异步通知,必须正确响应并验证签名,防止伪造请求。
以支付宝回调为例(notify.php):
$notify_data = $_POST;// 验证签名$flag = verifyAlipaySign($notify_data); // 使用支付宝公钥验签if ($flag && $notify_data['trade_status'] == 'TRADE_SUCCESS') { // 更新本地订单状态 updateOrderStatus($notify_data['out_trade_no'], 'paid'); echo 'success'; // 必须原样返回success,否则会重复通知} else { echo 'fail';}
微信支付回调接收XML数据,需解析并验签:
$input = file_get_contents('php://input');$data = simplexml_load_string($input, 'SimpleXMLElement', LIBXML_NOCDATA);if ($data && $data->return_code == 'SUCCESS') { // 验证签名 if (wechatVerifySign($data)) { // 处理订单逻辑 updateOrderStatus((string)$data->out_trade_no, 'paid'); echo ''; }}
基本上就这些。核心是理解支付流程:生成订单 → 调起支付 → 回调验证 → 更新状态。确保密钥安全、验签完整、异步通知处理幂等,就能稳定运行。
以上就是PHP如何使用第三方支付_PHP集成第三方支付的方法与代码实例的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1334400.html
微信扫一扫
支付宝扫一扫