You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建Cybersource响应页面并配置跳转URL以捕获支付响应参数

解决Cybersource支付响应回传与存储问题

1. 配置Cybersource跳转URL

登录你的Cybersource商户后台,找到支付相关设置模块(一般叫「返回URL配置」或「Success/Failure Redirect Settings」):

  • 填入自定义响应页面地址,比如 https://your-app.com/payment-result
  • 开启「回传支付响应参数」选项,确保Cybersource会把交易ID、支付状态、金额等核心字段传给你的页面

2. 搭建自定义响应页面

以PHP为例,其他语言逻辑通用:

步骤1:接收回传参数

Cybersource通常用POST方式回传参数,直接从请求中获取核心字段:

// 可根据实际需求补充其他字段
$transactionId = $_POST['transaction_id'] ?? '';
$paymentStatus = $_POST['decision'] ?? ''; // Cybersource默认用decision标识状态,如ACCEPT/DECLINE
$amount = $_POST['amount'] ?? '';

步骤2:校验响应合法性(必做)

为防止恶意伪造支付结果,必须用Cybersource商户密钥做签名校验:

$secretKey = '你的Cybersource商户密钥';
$receivedSignature = $_POST['signature'];
// 按Cybersource签名规则计算签名(核心是对参数排序后加密,规则参考官方文档)
$calculatedSignature = hash_hmac('sha256', http_build_query($_POST), $secretKey);

if ($receivedSignature !== $calculatedSignature) {
    http_response_code(403);
    exit('Invalid payment response');
}

步骤3:存入数据库

验证通过后,将参数写入数据库(用预处理语句避免SQL注入):

$pdo = new PDO('mysql:host=localhost;dbname=your_db', 'db_user', 'db_pass');
$stmt = $pdo->prepare("INSERT INTO payment_logs (transaction_id, status, amount, created_at) VALUES (?, ?, ?, NOW())");
$stmt->execute([$transactionId, $paymentStatus, $amount]);

步骤4:展示支付结果

给用户显示直观的支付状态:

<!DOCTYPE html>
<html>
<head>
    <title>支付结果</title>
</head>
<body>
    <h2><?php echo $paymentStatus === 'ACCEPT' ? '支付成功' : '支付失败'; ?></h2>
    <p>交易ID:<?php echo $transactionId; ?></p>
    <p>金额:<?php echo $amount; ?></p>
</body>
</html>

3. 关键提醒

  • 确认参数传递方式:部分场景Cybersource会用GET回传,需根据后台配置调整获取逻辑
  • 强制使用HTTPS:Cybersource要求返回URL必须是HTTPS协议,否则会拒绝跳转
  • 记录日志:建议把所有回传参数和处理过程写入日志,方便后续排查问题

内容的提问来源于stack exchange,提问作者uddhav warik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 05:45:33