如何用PHP结合Stripe API生成含指定发票信息的表格
使用PHP和Stripe API生成发票表格
首先,$stripe->invoices->all()返回的是包含发票对象的集合,直接echo只会输出对象的字符串表示,没法直接用于表格展示。你需要遍历这个集合,提取目标字段后生成HTML表格。
注意两个关键细节:
- 发票里的
customer字段默认是客户ID,不是客户名称,需要展开关联的客户对象或者单独查询客户信息 - Stripe返回的金额是以最小货币单位存储的(比如美元是分,人民币是分),需要转换成正常的金额格式
完整代码示例
<?php // 初始化Stripe客户端(确保已正确配置API密钥) require_once('vendor/autoload.php'); \Stripe\Stripe::setApiKey('你的Stripe秘钥'); // 获取发票列表,同时展开关联的customer对象,避免额外API请求 $invoices = $stripe->invoices->all([ 'limit' => 100, 'expand' => ['data.customer'] // 自动加载每个发票对应的客户信息 ]); ?> <!-- 生成HTML表格 --> <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th>发票ID</th> <th>客户名称</th> <th>金额</th> </tr> </thead> <tbody> <?php foreach ($invoices->data as $invoice): ?> <tr> <!-- 输出发票ID --> <td><?php echo htmlspecialchars($invoice->id); ?></td> <!-- 从展开的客户对象中获取名称,兼容无名称的情况 --> <td><?php echo htmlspecialchars($invoice->customer->name ?? '未命名客户'); ?></td> <!-- 转换金额格式:最小单位转正常数值,保留2位小数并附带货币单位 --> <td><?php echo number_format($invoice->amount_due / 100, 2) . ' ' . $invoice->currency; ?></td> </tr> <?php endforeach; ?> </tbody> </table>
代码补充说明
expand参数:在获取发票时直接加载关联的客户数据,避免循环里重复调用客户查询API,提升效率htmlspecialchars():防止输出内容引发XSS攻击,保证页面安全- 兼容处理:用
??运算符处理客户无名称的情况,避免报错
如果你的Stripe SDK版本较旧不支持expand参数,可以在循环内单独查询客户:
// 在循环中添加以下代码获取客户信息 $customer = $stripe->customers->retrieve($invoice->customer); $customerName = $customer->name ?? '未命名客户';
内容的提问来源于stack exchange,提问作者Omar Amir
相关产品推荐
相关产品推荐

