当前位置:首页 > PHP

php实现支付功能

2026-02-13 17:22:16PHP

支付功能实现步骤

在PHP中实现支付功能通常涉及与第三方支付网关(如支付宝、微信支付、Stripe等)的集成。以下是常见的实现方法:

集成支付宝支付

支付宝提供官方SDK,可通过Composer安装:

composer require alipay/alipay-sdk-php

创建支付请求示例代码:

php实现支付功能

require_once 'vendor/autoload.php';
use Alipay\EasySDK\Kernel\Config;
use Alipay\EasySDK\Payment\Common\Models\AlipayTradePayResponse;

$config = new Config();
$config->protocol = 'https';
$config->gatewayHost = 'openapi.alipay.com';
$config->appId = '你的APPID';
$config->signType = 'RSA2';
$config->merchantPrivateKey = '商户私钥';
$config->alipayPublicKey = '支付宝公钥';

$response = Alipay::payment()->common()->pay(
    '订单标题',
    '唯一订单号',
    '0.01', // 金额
    '1234567890' // 买家ID
);

集成微信支付

微信支付需要配置商户号和API密钥:

require __DIR__ . '/vendor/autoload.php';
use WeChatPay\Builder;
use WeChatPay\Crypto\Rsa;

$merchantId = '商户号';
$privateKey = Rsa::from('file:///path/to/merchant/apiclient_key.pem');
$platformCertificate = Rsa::from('file:///path/to/wechatpay/cert.pem');

$instance = Builder::factory([
    'mchid' => $merchantId,
    'serial' => '证书序列号',
    'privateKey' => $privateKey,
    'certs' => [$platformCertificate],
]);

$response = $instance->chain('v3/pay/transactions/jsapi')->post([
    'json' => [
        'mchid' => $merchantId,
        'out_trade_no' => '订单号',
        'amount' => ['total' => 1, 'currency' => 'CNY'],
        'description' => '订单描述'
    ]
]);

集成Stripe支付

Stripe提供PHP库处理国际支付:

php实现支付功能

composer require stripe/stripe-php

创建支付意图示例:

require_once 'vendor/autoload.php';
\Stripe\Stripe::setApiKey('sk_test_密钥');

$paymentIntent = \Stripe\PaymentIntent::create([
    'amount' => 1000, // 金额(分)
    'currency' => 'usd',
    'payment_method_types' => ['card'],
    'metadata' => ['order_id' => '123']
]);

支付回调处理

所有支付网关都需要处理异步通知:

// 支付宝回调验证
$alipay = new AlipayTradeService($config);
$verify_result = $alipay->check($_POST);

if($verify_result) {
    $out_trade_no = $_POST['out_trade_no'];
    // 更新订单状态
    file_put_contents('log.txt', "支付成功: $out_trade_no\n", FILE_APPEND);
}

// 微信支付回调
$inBody = file_get_contents('php://input');
$inBodyArray = json_decode($inBody, true);
$resource = $inBodyArray['resource'];
$ciphertext = $resource['ciphertext'];
$associated_data = $resource['associated_data'];
$nonce = $resource['nonce'];
$result = $aesGcm->decrypt($ciphertext, $associated_data, $nonce);

安全注意事项

确保所有支付操作在HTTPS下进行,敏感数据如API密钥不应硬编码在代码中,应使用环境变量或专用配置文件存储。验证所有回调请求的真实性,防止伪造通知。记录完整的支付日志以便审计。

订单号必须保证唯一性,金额单位需根据支付平台要求转换(如微信支付以分为单位)。处理支付结果时实现幂等性,防止重复操作。

标签: 功能php
分享给朋友:

相关文章

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('loc…

php实现验证码

php实现验证码

PHP实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

php实现表单

php实现表单

PHP 表单基础实现 创建一个简单的 PHP 表单需要 HTML 表单结构和 PHP 处理脚本。以下是一个完整的示例: HTML 表单部分 (form.html) <form action=…

vue实现后台功能

vue实现后台功能

Vue 实现后台功能的方法 Vue.js 是一个流行的前端框架,适合构建后台管理系统。以下是实现后台功能的常见方法和步骤。 项目初始化 使用 Vue CLI 或 Vite 初始化项目: # Vue…

php实现接口

php实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不实现具体功能。类可以实现一个或多个接口,并必须实现接口中定义的所有方法。 定义接口 接口使用 inter…

php 实现秒杀

php 实现秒杀

PHP 实现秒杀的关键技术 秒杀系统需要解决高并发、超卖、性能瓶颈等问题。以下是实现秒杀的核心方案: 使用 Redis 预减库存 将商品库存提前加载到 Redis 中,通过原子操作保证库存准确性:…