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

如何在Laravel 8中通过PayPal智能按钮/JS SDK获取paypal_fee

获取PayPal智能按钮订单的paypal_fee值

要拿到paypal_fee并存储,不能仅靠前端Javascript SDK,必须结合PayPal后端API完成,以下是具体流程:

1. 支付完成后捕获订单获取实际手续费

用户通过前端智能按钮完成支付后,必须在后端调用/v2/checkout/orders/{order_id}/capture接口捕获订单,此时接口会返回准确的paypal_fee值,适合存入数据库。

前端配合(传递订单ID到后端)

前端JS SDK在支付成功后会返回订单ID,将其传给后端接口:

paypal.Buttons({
  createOrder: function(data, actions) {
    return actions.order.create({
      purchase_units: [{
        amount: { value: '100.00' }
      }]
    });
  },
  onApprove: function(data, actions) {
    // 将orderID传给后端捕获接口
    return fetch('/api/capture-paypal-order', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({ orderId: data.orderID })
    }).then(function(response) {
      return response.json();
    }).then(function(data) {
      // 可拿到后端返回的paypal_fee做前端展示
      console.log('实际手续费:', data.paypalFee);
    });
  }
}).render('#paypal-button-container');

后端捕获订单并提取paypal_fee

以Node.js为例,后端处理逻辑如下:

const paypal = require('@paypal/checkout-server-sdk');

// 初始化PayPal客户端
const client = new paypal.core.PayPalHttpClient(
  new paypal.core.SandboxEnvironment('你的CLIENT_ID', '你的CLIENT_SECRET')
);

// 后端捕获订单接口
app.post('/api/capture-paypal-order', async (req, res) => {
  const { orderId } = req.body;
  const request = new paypal.orders.OrdersCaptureRequest(orderId);
  request.requestBody({});

  try {
    const response = await client.execute(request);
    // 提取实际paypal_fee
    const paypalFee = response.result.purchase_units[0].payments.captures[0].seller_receivable_breakdown.paypal_fee.value;
    const netAmount = response.result.purchase_units[0].payments.captures[0].seller_receivable_breakdown.net_amount.value;
    
    // 此处将paypalFee和订单信息存入数据库
    // saveToDatabase(orderId, paypalFee, netAmount, ...);

    res.json({ success: true, paypalFee, netAmount });
  } catch (error) {
    res.status(500).json({ success: false, error: error.message });
  }
});

关键注意点

  • 前端无法直接获取paypal_fee:PayPal不会在前端返回敏感的手续费信息,必须通过后端API获取。
  • 以捕获订单时的实际fee为准:创建订单时的预估fee可能和实际有差异,存入数据库一定要用捕获后的实际值。
  • 权限验证:后端调用PayPal API必须使用你的Client ID和Secret,确保接口安全。

内容的提问来源于stack exchange,提问作者nonoy porcaraye

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:15:39