Как сделать частичный возврат оплаты полосы в laravel

Я интегрировал полосу в качестве платежного шлюза в свое приложение, разработанное в laravel. Я также могу сделать полный возврат средств, используя приведенный ниже код.

$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'
]);

Но я получил ошибку как преобразование массива в строку. Может кто-нибудь помочь мне решить эту ошибку или сказать, что не так в этом коде.

2 ответа

Решение

Из документации полосы четко указано, что вы должны установить 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']);
Другие вопросы по тегам