如何在 laravel 中对 stripe 付款进行部分退款

How to make partial refund of stripe payment in laravel

我在 laravel 开发的应用程序中集成了 stripe 作为支付网关。我也可以使用以下代码全额退款。

$stripe = Stripe::make('sk_test_******');
    $charge_id = Session::get('charge_id');
    $amount = Session::get('payment_amount');
    $refund = $stripe->refunds()->create(
         $charge_id
    );

现在我想允许管理员从后端向客户进行部分退款,我已经根据条带文档尝试了以下代码。

$stripe = Stripe::make('sk_test_**********');
$charge_id = Session::get('charge_id');
$amount = Session::get('payment_amount');       
$refund = $stripe->refunds()->create([
    'charge' => $charge_id,
    'amount' => '5',
    'reason' => 'refund'
]);

但是我遇到了类似 数组到字符串转换 的错误。谁能帮我解决这个错误或告诉我这段代码有什么问题。

来自 stripe documentation,明确提到您必须按以下方式设置 APIKEY

$stripe = new Stripe();
$stripe = Stripe::make('YOUR API KEY');

$charge_id = Session::get('charge_id');
$amount = Session::get('payment_amount');       
$refund = $stripe->refunds()->create( $charge_id,$amount, ['reason' => 'refund'
]);

注意:要退还部分费用,请提供金额参数,以美分为单位的整数或您使用的特定货币的费用货币的最小货币单位。

因为你传错了参数。变化:

$refund = $stripe->refunds()->create([
    'charge' => $charge_id,
    'amount' => '5',
    'reason' => 'refund'
]);

至:

$refund = $stripe->refunds()->create($charge_id, 5, ['reason' => 'refund']);