2017-11-28 8 views
0

스트라이프를 만들 때 idempotency_key를 추가하면 한 번만 충전해야하지만 문제는 HTML 양식의 오류 메시지 표시가 너무 많아서 사용자에게 내 메시지를 보여주고 싶습니다. 어떻게 할 수 있습니까?스트라이프 js 메시지를 무시하는 방법은 무엇입니까?

내 PHP 코드

Stripe::setApiKey('sk_test_something'); 
    $StripeError = ""; 
    try { 
     \Stripe\Charge::create(array(
      "amount" => 44 * 100, 
      "currency" => "usd", 
      "source" => $request->stripeToken, // obtained with Stripe.js 
      "description" => "Charge ticket", 
      "metadata" => array("order_id" => "67ewe35") 
     ), array(

       "idempotency_key" => "45sss423refsd", 
      ) 
     ); 
    } catch (\Stripe\Error\RateLimit $e) { 
     $StripeError .= $e->getMessage() . "\n"; 
     return redirect()->route('user.tickets.pay')->with('error', $StripeError); 
    } catch (\Stripe\Error\InvalidRequest $e) { 
     $StripeError .= $e->getMessage() . "\n"; 
     return redirect()->route('user.tickets.pay')->with('error', $StripeError); 
    } catch (\Stripe\Error\Authentication $e) { 
     $StripeError .= $e->getMessage() . "\n"; 
     return redirect()->route('user.tickets.pay')->with('error', $StripeError); 
    } catch (\Stripe\Error\ApiConnection $e) { 
     $StripeError .= $e->getMessage() . "\n"; 
     return redirect()->route('user.tickets.pay')->with('error', $StripeError); 
    } catch (\Stripe\Error\Base $e) { 
     $StripeError .= $e->getMessage(); 
     return redirect()->route('user.tickets.pay')->with('error', $StripeError); 
    } catch (\Exception $e) { 
     $StripeError .= $e->getMessage() . "\n"; 
     return redirect()->route('user.tickets.pay')->with('error', $StripeError); 

JS 코드

Stripe.setPublishableKey('pk_test_something'); 

    var $form = $('#checkout-form'); 

    $form.submit(function (event) { 
     $('#charge-error').addClass('hidden'); 
     $form.find('button').prop('disabled', true); 
     Stripe.card.createToken({ 
      number: $('#debit_card').val(), 
      cvc: $('#card_cvc').val(), 
      exp_month: $('#card_expiry_month').val(), 
      exp_year: $('#card_expiry_year').val(), 
      name: $('#card_holder_name').val() 
     }, stripeResponseHandler 

     ); 
     return false; 
    }); 

    function stripeResponseHandler(status, response) { 
        if (response.error) { 
      $('#charge-error').removeClass('hidden'); 
      $('#charge-error').text(response.error.message); 

      $form.find('button').prop('disabled', false); 
     } else { 
      var token = response.id; 
      $form.append($('<input type="hidden" name="stripeToken"/>').val(token)); 

      // Submit the form: 
      $form.get(0).submit(); 

} 자신의 문서에

일 EY이 보여하지만 난 스트라이프에 대한 요청이 응답 대신에 다음과 같은 형식이 될 것입니다 실패하면 내가 그것을 https://stripe.com/docs/stripe-js/v2

을 구현할 수있는 방법을 모른다 : HTML에

{ 
    error: { 
    type: "invalid_request_error", // String identifier of the type of error 
    message: "Invalid routing number", // String description of the error 
    param: "bank_account" // Optional string identifier of the offending parameter. 
    } 
} 

메시지 형식은 다음과 같습니다. 멱등 원 (Idempotent) 요청에 대한 키는 처음에 사용 된 것과 동일한 매개 변수에서만 사용할 수 있습니다. 다른 요청을 실행하려는 경우 '35423refsd'이외의 키를 사용해보십시오.

와 나는 그것을

답변

0

모든 \Stripe\Error\InvalidRequest 예외 오류 메시지 자체를 확인해야 할 것이다, 그래서 특정 오류 유형 또는 코드는, 이것에 대한 없습니다를 재정의합니다.

경고 메시지는 오류 메시지없이 변경 될 수 있습니다. 마지막에 시도 된 청구 금액을 추적하고 이미 청구하려고 시도한 것으로 알고있는 주문에 대해 다른 소스 토큰으로 새로운 청구 생성 요청을 보내지 않는 것이 좋습니다.