Stripe PHP API : You cannot confirm this PaymentIntent becau

Pagina: 1
Acties:

Vraag


Acties:
  • +1 Henk 'm!

  • powershift
  • Registratie: Oktober 2018
  • Laatst online: 22-06-2022
Goedendag,
Wat ik probeer te maken
Ik heb een wrapper-klasse gemaakt die alle stripe API-bestanden laadt die alle calls verwerkt die nodig zijn.
Dat is ook de reden voor de code layout zoals onderstaand.

Wat ik wil is een PHP stripe koppeling opzetten zodat ik gemakkelijk een implementatie van Stripe kan realiseren op elk willekeurig PHP based systeem.

Als voorbeeld :

PHP:
1
2
3
$obj = new \stripeapi({api_key});
$result = $obj->create_payment(2000, '202010220238HJBIXF', 'https://www.mijnwebshop.nl/api-callback?=23872393');
if($result['success']) header('Location: ".$result['forward_url']);


Hiermee kan ik dus gemakkelijk een nieuwe implementatie maken op welk systeem dan ook. (voor mij)

Echter ik loop nu tegen een aantal issues aan. Voornamelijk dat ik het niet voor elkaar kan krijgen om een basis Stripe test setup werkend kan krijgen.

...

Ik maak gebruik van een PHP developement environment met SSL (die is verreist voor Stripe ook op de test omgeving anders krijg je sowieso niets terug. >:)

De PHP API class die ik gebruik is de API class van Stripe zelf. Echter blijkbaar weet de support desk ook niet hoe die in elkaar steekt. 8)7

Zodra ik mijn script uitvoer krijg ik de volgende error te zien :

Fatal error: Uncaught (Status 400) (Request req_AQbkjKFB4mo31Z) You
cannot confirm this PaymentIntent because it's missing a payment
method. You can either update the PaymentIntent with a payment method
and then confirm it again, or confirm it again directly with a payment
method. thrown in
/var/www/vhosts/example.com/httpdocs/stripe/stripe/lib/Exception/ApiErrorException.php
on line 38


...

Ik heb mijn kop gek gezocht en de documentatie meermaals doorgelezen. Ook contact gehad met de Stripe Helpdesk maar deze snapt het naar mijn persoonlijke idee ook niet helemaal en blijft refereren naar hun logs en documentatie.

Echter zij melden dat ik de betalingsmethode niet gezet heb. Deze heb ik juist wel ingesteld. Tevens blijven zij hangen op een fout die ik eerder gemaakt heb.

Waarbij ik gebruik maakte van 'payment_method' => 'ideal' ipv van 'payment_method_types' => array('ideal').

Dit heb ik nu veranderd echter ze blijven refereren naar een eerder gemaakte fout.

Ik hoop dat hier iemand ziet waar mijn fout zit.
Want ik loop gewoon helemaal vast.

Dit is mijn code tot dusver :

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public function create_payment($amount, $order_id, $method = 'ideal', $return_url = NULL, $currency = 'eur'){
    ///######## CHECK IF CURRENCY IS ALLOWED
    if(!$this->currency_supported($currency)) exit('<strong>error</strong>, stripe currency not supported : '.$currency);
    ///######## SETUP PAYMENT
    $result = $this->obj->paymentIntents->create(
        array(
            'amount'                =>  $amount,
            'currency'              =>  $currency,
            'payment_method_types'  =>  array($method)
        )
    );
    ///######## IF ERROR
    if(!is_object($result) || !isset($result->id)) exit('<strong>error</strong>, something went wrong during stripe payment intend creation');
    ///######## SETUP PAYMENT ID
    $payment_id = $result->id;
    ///######## RETRIEVE PAYMENT INTEND DETAILS
    $result = $this->obj->paymentIntents->retrieve($payment_id, []);
    ///######## SET AN ORDER ID
    $result = $this->obj->paymentIntents->update($payment_id, array(
        'metadata'  => array('order_id'  => $order_id),
        'payment_method_types'  =>  array($method),
    ));
    ///######## SETUP PARAMETRES
    $params = array('payment_method_types'  => array($method));
    ///######## IF THE RETURN URL HAS BEEN SET
    if($return_url) $params['return_url'] = $return_url;
    ///######## CONFIRM A PAYMENT INTEND
    $result = $this->obj->paymentIntents->confirm($payment_id, $params);
    exit(print_r($result));
}

[ Voor 8% gewijzigd door RobIII op 16-11-2020 14:45 . Reden: Code leesbaarder gemaakt m.b.v. syntax highlighting. ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 23-06 11:51

Janoz

Moderator Devschuur®

!litemod

Wat ben je eigenlijk exact aan het doen?

Je maakt een payment aan. Vervolgens vraag je hem op maar doet er helemaal niks mee, daarna ga je hem aanpassen (waarom maak je hem niet gewoon gelijk goed aan) en zet je weer de payment method, en daarna ga je hem confirmen.

Verder, als ik hier kijk is de parameter die je bij confirm mee moet geven weldegelijk payment_method en niet payment_method_type.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • powershift
  • Registratie: Oktober 2018
  • Laatst online: 22-06-2022
Janoz schreef op maandag 16 november 2020 @ 14:19:
Wat ben je eigenlijk exact aan het doen?

Je maakt een payment aan. Vervolgens vraag je hem op maar doet er helemaal niks mee, daarna ga je hem aanpassen (waarom maak je hem niet gewoon gelijk goed aan) en zet je weer de payment method, en daarna ga je hem confirmen.

Verder, als ik hier kijk is de parameter die je bij confirm mee moet geven weldegelijk payment_method en niet payment_method_type.
Dat leek mij ook al. Zodra ik dat doe dan krijg ik via de API de melding terug unknown payment method.
Maar dat is volgens hun support desk niet goed. Dus wordt heen en weer gestuurd :-/

Acties:
  • 0 Henk 'm!

  • powershift
  • Registratie: Oktober 2018
  • Laatst online: 22-06-2022
Janoz schreef op maandag 16 november 2020 @ 14:19:
Wat ben je eigenlijk exact aan het doen?

Je maakt een payment aan. Vervolgens vraag je hem op maar doet er helemaal niks mee, daarna ga je hem aanpassen (waarom maak je hem niet gewoon gelijk goed aan) en zet je weer de payment method, en daarna ga je hem confirmen.

Verder, als ik hier kijk is de parameter die je bij confirm mee moet geven weldegelijk payment_method en niet payment_method_type.
Dit leek mij ook al eerder de meest logische stap om te ondernemen.
Echter hierbij krijg ik de volgende melding :
Fatal error: Uncaught (Status 400) (Request req_OKzE6WgIcP6Ybv) No such PaymentMethod: 'ideal' thrown in /var/www/vhosts/example.nl/httpdocs/stripe/stripe/lib/Exception/ApiErrorException.php on line 38
Daarop gaf hun support desk aan dat het in een array moest.
Echter jouw melding brengt mij al veel verder dan de support überhaupt. _O-
Daarvoor mijn grote dank _/-\o_

Acties:
  • 0 Henk 'm!

  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 09:20
Ze hebben een pagina speciaal voor IDEAL waarbij je voorbeelden onder andere in PHP kunt vinden.

Acties:
  • +1 Henk 'm!

  • CB32
  • Registratie: November 2011
  • Laatst online: 02:59
Of gebruik checkout, neemt een hoop zorgen weg.

Acties:
  • 0 Henk 'm!

  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 08:39

Salandur

Software Engineer

Je vergeet om een payment method object te maken en te koppelen aan je payment intent. Het zetten van een payment_method_type is niet voldoende.

Een payment method maak je meestal in de webpagina met de Stripe JS. Deze geef je dan door aan je backend en zet je op je payment intent.

Lees de documentatie rond payments en hoe een payment method te maken nogs eens goed door
https://stripe.com/docs/payments/payment-methods/overview

Assumptions are the mother of all fuck ups | iRacing Profiel

Pagina: 1