2017-10-21 4 views
0

스트라이프 결제를 허용하려고합니다. Stripe documentation에서 코드를 가져 와서보기에 추가했습니다. 버튼을 클릭하면 양식이 표시되지 않고 대신 양식 작업 페이지 (지급)로 이동합니다.Laravel app.js가 스트라이프 결제 양식을 표시하지 않게합니다.

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 

    <!-- CSRF Token --> 
    <meta name="csrf-token" content="9HgWQfTsUXQ0RmIPQPLbhNoujOobjHn5PL9en8jx"> 

    <title>Staff</title> 

    <!-- Styles --> 
    <link href="https://localhost/staff/public/css/app.css" rel="stylesheet"> 
    <link href="https://localhost/staff/public/css/style.css" rel="stylesheet"> 
</head> 
<body> 
    <div id="app"> 



     <form action="payments/" method="POST"> 
    <script 
    src="https://checkout.stripe.com/checkout.js" class="stripe-button" 
    data-key="pk_test_xxx" 
    data-amount="999" 
    data-name="Demo Site" 
    data-description="Widget" 
    data-image="https://stripe.com/img/documentation/checkout/marketplace.png" 
    data-locale="auto"> 
    </script> 
</form> 
    </div> 

    <!-- Scripts --> 
    <script src="https://localhost/staff/public/js/app.js"></script> 
</body> 
</html> 

나는 왼쪽 버튼 만 제외하고 모든 것을 제거하기 위해 모든 방법을 제거했습니다. 여전히 작동하지 않았습니다. 하나 제거하는 마지막 .....

<script src="https://localhost/staff/public/js/app.js"></script> 

그리고 그 게재 양식을 유지거야 ....

그래서 내 질문 : 그 일의 원인 스트라이프는 표시 할 수 없습니다하는 것입니다 왜 양식을 수정하려면 어떻게해야합니까? 나는 뭔가를 올바르게 설정하는 것을 잊었을 까? 저는 Laravel을 처음 접했습니다. 이것은 프레임 워크가있는 첫 번째 프로젝트입니다. 설치가 바로 시작됨에 따라 설치가 바닐라에 매우 가깝습니다 ...

나는 composer require "laravel/cashier":"~7.0"을 실행 한 다음 config/app.php :

'providers' => [ 
    ... 
    Laravel\Cashier\CashierServiceProvider::class, 
], 

그런 다음 데이터베이스를 마이그레이션했습니다.

... 
Route::post('/payments', '[email protected]')->name('payments'); 
Route::get('/payments', '[email protected]')->name('payments'); 

PaymentsController.php :

<?php 

namespace Staff\Http\Controllers; 

use Illuminate\Http\Request; 
use Illuminate\Support\Facades\Auth; 
use Illuminate\Support\Facades\DB; 

class PaymentsController extends Controller 
{ 

    //private $states; 

    /** 
    * Create a new controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->middleware('auth'); 
    } 

    public function index() { 
     return view('payments/payment'); 
    } 

    public function subscribe() { 
     echo "huhh"; 

    } 
} 

payment.blade.php

여기 ...

web.php 내 파일 중 일부입니다 :

,
@extends('layouts.app') 

@section('content') 
<form action="" method="POST"> 
    <script 
    src="https://checkout.stripe.com/checkout.js" class="stripe-button" 
    data-key="pk_test_fCM9Fr1e33JYW6t17ZoSyXRf" 
    data-amount="999" 
    data-name="Demo Site" 
    data-description="Widget" 
    data-image="https://stripe.com/img/documentation/checkout/marketplace.png" 
    data-locale="auto"> 
    </script> 
</form> 
@endsection 

services.php는 :

<?php 

return [ 

    ... 

    'stripe' => [ 
     'model' => Staff\User::class, 
     'key' => env('pk_test_xxx'), 
     'secret' => env('sk_test_zzz'), 
    ], 

]; 

답변

0

문제를 발견. 로그 아웃 양식입니다. 제거하면 줄무늬 모양이 작동합니다.

<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">{{ csrf_field() }}</form> 

그래서 두 형식이 충돌한다는 의미입니다. 스트라이프 형식의 이름을 stripe-form에 추가하고 자바 스크립트를 업데이트했습니다.

document.querySelector("form[name='stripe-form']").addEventListener('submit', function(e) { 
    e.preventDefault(); 
    var form = document.querySelector("form[name='stripe-form']"); 
    var extraDetails = { 
    name: form.querySelector('input[name=cardholder-name]').value, 
    }; 
    stripe.createToken(card, extraDetails).then(setOutcome); 
}); 
관련 문제