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

Stripe Android SDK PaymentResult无法获取交易详情求助

Android集成Stripe后获取交易详情的解决方案

方案1:客户端直接获取PaymentIntent详情

在支付完成的回调中,PaymentResult.Completed 实例包含完整的PaymentIntent对象,可从中提取交易ID、收据链接等信息。修改你的onPaymentResult方法如下:

private void onPaymentResult(PaymentResult paymentResult) {
    String message = "";
    if (paymentResult instanceof PaymentResult.Completed) {
        PaymentIntent paymentIntent = ((PaymentResult.Completed) paymentResult).getIntent();
        // 获取交易ID(对应你要的Stripe_trx_id)
        String stripeTrxId = paymentIntent.getId();
        // 获取收据链接
        String receiptUrl = paymentIntent.getReceiptUrl();
        // 还可获取支付金额、状态等其他字段
        long amount = paymentIntent.getAmount();
        String status = paymentIntent.getStatus();
        
        message = String.format("支付完成!\n交易ID: %s\n收据链接: %s\n金额: %d\n状态: %s",
                stripeTrxId, receiptUrl != null ? receiptUrl : "暂未生成", amount, status);
    } else if (paymentResult instanceof PaymentResult.Canceled) {
        message = "支付已取消!";
    } else if (paymentResult instanceof PaymentResult.Failed) {
        message = "支付失败: "
                + ((PaymentResult.Failed) paymentResult).getThrowable().getMessage();
    }

    displayAlert("支付结果", message, true);
}

注意:收据链接receipt_url仅在支付成功且Stripe生成收据后存在,测试环境使用测试卡支付成功后通常会生成该链接。

方案2:服务端查询PaymentIntent详情(推荐)

出于安全性和数据完整性考虑,建议通过自有服务端查询交易详情后返回给客户端:

  1. 客户端在支付完成后,将PaymentIntent的ID(从paymentIntent.getId()获取)发送到你的服务端接口
  2. 服务端使用Stripe的Secret Key查询完整的PaymentIntent信息,提取所需字段返回给客户端

服务端(PHP)示例代码:

// 设置Stripe Secret Key
\Stripe\Stripe::setApiKey('sk_test_26PHem9AhJZvU623DfE1x4sd');

// 接收客户端传递的PaymentIntent ID
$paymentIntentId = $_POST['payment_intent_id'];

// 查询PaymentIntent详情
try {
    $paymentIntent = \Stripe\PaymentIntent::retrieve($paymentIntentId);
    // 返回需要的字段
    echo json_encode([
        'stripe_trx_id' => $paymentIntent->id,
        'receipt_url' => $paymentIntent->receipt_url,
        'amount' => $paymentIntent->amount,
        'status' => $paymentIntent->status,
        'created' => $paymentIntent->created
    ]);
} catch (\Stripe\Exception\ApiErrorException $e) {
    echo json_encode(['error' => $e->getMessage()]);
}

客户端在onPaymentResult的Completed分支中,调用上述服务端接口即可获取完整交易详情。

内容的提问来源于stack exchange,提问作者Adnan Quraishi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:43:14