Stripe PHP API : 결제 수단이 없기 때문에이 PaymentIntent를 확인할 수 없습니다.

Nov 16 2020

Stripe PHP API를 구현하려고하는데 지난주부터 멈췄습니다. 처음에는 정확한 표기법으로 결제 수단을 정확하게 언급하지 않았다고 생각했습니다. 그러나 이것은 사실이 아닌 것 같습니다.

모든 스트라이프 API 파일을로드하는 래퍼 클래스를 만들고 다음은 내게 필요한 모든 호출을 처리합니다.

따라서 코드 레이아웃이 그 이유입니다.

스크립트를 실행하면 다음 오류가 발생합니다.

치명적인 오류 : Uncaught (상태 400) (요청 req_AQbkjKFB4mo31Z) 결제 수단이 없기 때문에이 PaymentIntent를 확인할 수 없습니다. 결제 수단으로 PaymentIntent를 업데이트 한 다음 다시 확인하거나 결제 수단으로 직접 다시 확인할 수 있습니다. 38 행의 /var/www/vhosts/example.com/httpdocs/stripe/stripe/lib/Exception/ApiErrorException.php에서 발생

나는 이미 Stripe 헬프 데스크에 연락했지만 그들은 계속해서 매뉴얼을 참조하지만 더 이상 나를 얻지 못합니다.

iDeal 결제 방법이 대시 보드에서 활성화되었습니다. 그래서 그것은 실패의 이유가 아닙니다. 그것이 될 수있는 곳은 내가 지불을 설정하는 방식입니다. 그러나 내가 우려하는 한 지불 방법을 올바르게 설정하지 않았습니다. 그러나 내가 볼 수있는 한 그것은 그들의 매뉴얼에 따라 수행되었습니다.

또한 검색 호출 사용에 대한 확인 문서를 찾을 수 없습니다. 내가해야할까요? 아니면 이것은 단순히 두 배이고 불필요한 것입니다.

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));
}

내 실수를 지적 할 수 있기를 바랍니다. 나는 여기에 절대적으로 붙어 있기 때문에.

답변

NolanH Nov 16 2020 at 13:54

payment_method_types이 결제 목적에 허용되는 결제 방법 유형을 결정하는을 설정합니다 . 결제를 확인하고 수금하려면 특정 payment_method. 직접 제공 할 수 있지만 Stripe.js 및 Elements 를 사용 하여 iDEAL 결제 세부 정보 를 수집하는 것이 좋습니다 . 서버에서 지불 의도를 생성 한 후 client_secret클라이언트로 다시 보내고 수집 된 세부 정보와 함께 사용합니다.

HTML :

<div id="ideal-bank-element">
  <!-- A Stripe Element will be inserted here. -->
</div>

JS :

var idealBank = elements.create('idealBank', options);
idealBank.mount('#ideal-bank-element');
...
stripe.confirmIdealPayment(
  '{{PAYMENT_INTENT_CLIENT_SECRET}}',
  {
    payment_method: {
      ideal: idealBank,
      billing_details: {
        name: accountholderName.value,
      },
    },
    return_url: 'https://your-website.com/checkout/complete',
  }
);

confirmIdealPayment이와 같이 사용 payment_method하면 결제 의도에 자동으로 설정 되고 확인됩니다.