Get charge ID after Stripe payment and issue refund in PHP - php

I'm using Stripe to process my payments in PHP with the API found here https://github.com/myg0v/Simple-Bootstrap-Stripe-Payment-Form
I'm using the following code to issue payment:
$charge = Stripe_Charge::create(array("amount" => $amount,
"currency" => "$currency",
"card" => $stripetoken,
"description" => $email));
Will the following code retrive the charge_id and refund the user?
$charge_id = $charge->stripe_charge_id;
$refund = Stripe_Refund::create(array(
"charge" => "$charge_id"
));

This syntax is for old versions of Stripe's PHP library (1.x). You should make sure that you use the latest version (currently 4.4.0).
Stripe's API reference includes samples for every request and language. You can check the sample requests for:
creating a charge
creating a refund
Basically:
$charge = \Stripe\Charge::create(array(
"amount" => $amount,
"currency" => $currency,
"source" = $token,
"description" => "Charge for $email"
));
$refund = \Stripe\Refund::create(array(
"charge" => $charge->id
));

Related

Stripe Charge after service complete

I am creating project using angular and larval. In my project i am integrating stripe for payment.My requirements are:
User fill their card details but not charged.User is charged after technician completes their service.I don't know how this flow will work.I already setup stripe in my project:
$charge = Stripe\Charge::create ([
"amount" => 10000,
"currency" => "gbp",
"source" => $token,
"description" => "payment",
"receipt_email"=>$email
]);
$charge = Stripe\Charge::create ([
"amount" => 10000,
"currency" => "gbp",
"source" => $token,
"description" => "payment",
"receipt_email"=>$email,
**"capture" => false**
]);
Notice the capture => false option here. This is what you need.
You will have to store the charge id some which you will find in your $charge variable.
When you want to charge actually charge do this,
$charge = \Stripe\Charge::retrieve($stripe_charge_id);
$charge->capture();
$stripe_charge_id will be the charge id that you stored earlier.
Also keep in mind that the uncaptured charge expires in 7 days.
you should check the documentation https://stripe.com/docs/api/charges/capture

I'm using Stripe API in my code and I have an error : You cannot use a Stripe token more than once: tok_1EIw1gKIAV9zC39qQnFXKzi6

I got an error saying :
Customer cus_EmVoBWWrqnWw4W does not have a linked source with ID tok_1EIw1gKIAV9zC39qQnFXKzi6.
here is my code :
\Stripe\Stripe::setApiKey("sk_test_rUFQ9fpJoK9TlRVJs1nSYd6C");
$user = new User();
$email = $user->getEmail();
//creation du client
$customer = \Stripe\Customer::create(array(
"email" => $email,
));
$charge = \Stripe\Charge::create(array(
"amount" => 2000,
"currency" => "eur",
"source" => $request ->request->get('stripeToken'),
"description" => "Stripe connect - Order 36",
"customer" => $customer->id
));
\Stripe\Stripe::setApiKey("sk_test_rUFQ9fpJoK9TlRVJs1nSYd6C");
$refund = \Stripe\Refund::create([
'charge' => $charge,
'amount' => 1000,
]);
You need to save the card to the customer and then charge the customer. After that, unless the customer has multiple sources and you want to use a specific one, you won't need to pass source to Charge::create.

stripe create payout getting error "Sorry, you don't have any external accounts in that currency (usd)"

I am working on create payout, while run the code i am getting error
Sorry, you don't have any external accounts in that currency (usd)
first i am creating the customer, and then i am creating the bank account, and after then i am doing the payout, can anyone please help me how can i resolve this issue, here is my code
<?php
require_once('init.php');
\Stripe\Stripe::setApiKey("*************");
$customer = \Stripe\Customer::create(array(
"description" => "Customer for payout"
));
$customer_id = $customer->id;
$customer = \Stripe\Customer::retrieve($customer_id);
$bank_data = \Stripe\Token::create(array(
"bank_account" => array(
"country" => "US",
"currency" => "usd",
"account_holder_name" => "Charlotte Thomas",
"account_holder_type" => "individual",
"routing_number" => "110000000",
"account_number" => "000123456789"
)
));
$bank_token = $bank_data->id;
$bank_account = $customer->sources->create(array("source" => $bank_token));
$payout_data = \Stripe\Payout::create(array(
"amount" => 100,
"currency" => "usd",
));
echo "<pre>";
print_r($payout_data);
die;
?>
You're adding a bank account as a payment source to a customer object, i.e. for ACH payments.
For payouts, if this is your own Stripe account, you need to enter your bank account details in your dashboard at https://dashboard.stripe.com/account/payouts. You'll also need to set your payout schedule to "Manual" if you want to be able to create payouts via the API.
Also note that when creating charges, funds are not immediately available, so you will not be able to create a payout immediately after creating a charge. You can read all about payouts in Stripe's documentation at https://stripe.com/docs/payouts.

How to update the amount on an existing Stripe charge using PHP?

I am working with Stripe's auth and capture. Currently, the charge is $200 upon creating it.
$charge = \Stripe\Charge::create(array(
"amount" => 20000,
"currency" => "usd",
"customer" => $custID, // obtained with Stripe.js
"description" => "Charge for test#example.com",
"capture" => false
));
But I want to change it to $100 upon capturing the charge.
$ch = \Stripe\Charge::retrieve("$chargeID");
$ch->amount = 10000;
$ch->save();
$ch->capture();
This part is wrong:
$ch->amount = 10000;
How would I do this? I'm using PHP.
This should be possible since Stripe's official article on auth and capture mentions it:
https://support.stripe.com/questions/does-stripe-support-authorize-and-capture
Since you have not previously captured the transaction you can set the ammount when capturing like so.
$ch = \Stripe\Charge::retrieve($chargeID);
$ch->capture(array("amount" => 10000));
https://stripe.com/docs/api#capture_charge

how to include a parameter in strip payment gateway

this is my code now i want to include plan=>monthly for recurring payment but its not taking plan=>monthly parameter and giving the error UNVALID REQ any other idea about recurring payment or please correct this one. Please
try{
require_once(APPPATH.'libraries/Stripe/lib/Stripe.php');
Stripe::setApiKey("dfsdfsdfsd");
$charge = Stripe_Charge::create(array(
"amount" =>$amt,
"currency" => "usd",
"card" => $_POST['stripeToken'],
"description" => "asdasdad"
));
You've to use 'interval' parameter.
'interval' => 'month'

Categories