수백만 개의 회사에서 사용하는 Stripe는 구독 및 일회성 구매를 처리하는 애플리케이션에 대한 지불 인프라를 제공합니다. Stripe Checkout을 사용하면 전환을 늘리기 위해 제작된 호스팅된 결제 페이지를 통해 카드 결제를 쉽게 수락할 수 있습니다. 이것을 웹훅과 결합하면 개발자가 제품과 구독을 판매한 다음 디지털 방식으로 전달할 수 있습니다.
기술적으로 기존 공급자를 사용하여 직접 지불을 처리하는 것이 가능하지만 Stripe는 여러 가지 이점을 제공합니다. 우선, 더 빠릅니다. Stripe에는 4,000명이 넘는 사람들이 가능한 한 간단하고 안전하며 편리한 결제를 위해 노력하고 있습니다.
또한 'Stripe 제공' 결제를 통해 고객 신뢰를 구축하고 전환율을 높일 수 있습니다. 고객은 일반적으로 방문하는 모든 웹사이트에 자신의 카드 또는 은행 정보를 제공하는 것을 주저합니다.
Stripe는 온라인 결제 공간의 유일한 공급자가 아닙니다. Paddle은 온라인 결제 공간의 또 다른 거대한 플레이어입니다. Paddle은 Stripe와 유사한 많은 기능을 제공하지만 약간 더 높은 수수료와 일화적으로 열악한 개발자 경험을 제공합니다. 다른 여러 경쟁업체가 Stripe의 대안이기는 하지만 온라인 결제를 위한 제품의 인기로 인해 쉽게 선택할 수 있습니다.
SaaS 회사에서 반복 구독을 처리하는 것이 일반적이지만 많은 제품이 디지털 제품의 일회성 판매로 혜택을 볼 수 있습니다. 이것은 Stripe의 인프라에서도 마찬가지로 쉽지만 해당 문서는 주제에서 벗어나는 것 같습니다.
설정
프로세스를 설명하기 위해 사용자가 craigslist 스타일 게시판에 광고를 게시하기 위해 비용을 지불할 수 있는 응용 프로그램을 빌드합니다. 우리의 구체적인 예에서 우리의 애플리케이션은 룸메이트를 찾는 사람들을 위한 웹사이트가 될 것입니다. 사용자는 무료로 게시판을 탐색할 수 있지만 자신의 광고를 게시하려면 요금을 지불해야 합니다.
스트라이프 계정 만들기
시작하려면 Stripe의 웹사이트로 이동하여 계정을 만들어야 합니다. 귀하의 정보 또는 해당하는 경우 귀하의 비즈니스 정보로 가입하십시오.
Stripe 가입 페이지 스크린샷
이 문서에서는 계정 생성에 대한 정확한 세부 정보를 안내하지 않지만 해당 문서에서 귀하가 가지고 있는 모든 질문에 대한 답을 얻을 수 있습니다. 우리는 특히 그들의 지급 및 지불금에 관심이 있습니다. 제품 또는 보다 구체적으로 Stripe Checkout .
기본 Rails 앱 만들기
Stripe 계정이 설정되면 통합에 사용할 기본 Rails 앱을 만들 차례입니다. 기존 앱을 통합하거나 튜토리얼의 Stripe 부분에 관심이 있는 경우 "기본 Stripe 통합"으로 건너뛰십시오.
이 예에서는 다음 버전을 사용하겠습니다.
- 레일 6.1
- 루비 3.0.0
Ruby와 Rails가 이미 설치되어 있다고 가정하고 다음을 실행하세요.
rails new roommate-board
내가 선택한 앱 이름은 roommate-board
입니다. , 하지만 다른 것을 선택할 수 있습니다. 예제 코드에서 언급된 다른 곳에서 이름을 바꾸면 됩니다.
다음으로 방금 생성한 디렉토리로 변경하십시오.
cd roommate-board
그런 다음 다음을 사용하여 앱을 실행합니다.
rails s
localhost:3000
방문 시 일반적인 Rails 시작 페이지가 표시되는 경우 , 축하합니다. 코딩할 준비가 되었습니다!
먼저 사용자 인증을 처리하기 위해 Devise를 추가합니다. gem 'devise'
를 추가하기만 하면 됩니다. Gemfile로 이동한 다음 다음을 실행합니다.
bundle install
다음으로 Devise 생성기를 사용하여 다음을 실행하여 설정합니다.
rails generate devise:install
다음으로 다음을 실행하여 Devise를 사용자 모델에 연결합니다.
rails generate devise User
마지막으로 다음을 사용하여 마이그레이션을 실행합니다.
rails db:migrate
룸메이트 보드 만들기
이 글을 읽고 계시다면 아마도 프론트엔드 디자인보다 Stripe 통합에 더 관심이 있으실 것입니다. 따라서 예제 스타일에 대해 걱정하지 않으셔도 됩니다.
다음 단계는 게시할 모델을 만드는 것입니다. ! Rails의 편리한 생성기를 사용하여 모델, 마이그레이션, 컨트롤러 및 경로를 생성합니다. 다음을 실행하기만 하면 됩니다.
rails generate scaffold Post address:string rent:integer content:text
이 모델에는 Stripe를 통합하는 데 필요한 모든 것이 포함되어 있지 않습니다. 처음부터 시작할 여유가 없는 프로젝트에 대해 이 튜토리얼을 참조할 경우를 대비하여 나중에 추가할 것입니다. 마이그레이션을 실행하여 다음을 사용하여 데이터베이스 테이블을 생성합니다.
rails db:migrate
다음으로 게시물에 대한 색인 보기를 애플리케이션의 루트로 설정합니다. 편의상. config/routes.rb
에서 , 다음 행을 추가하십시오.
root 'posts#index'
지금은 꽤 비어 있고 로그인, 로그아웃 또는 가입할 명확한 방법이 없습니다. 기능이 이미 있으므로 헤더에 일부 링크를 추가하여 사용자에게 명확하게 합시다. app/views/layouts/application.html.erb
에서 , 필요한 링크를 추가합니다. 변경 후 내 파일은 다음과 같습니다.
<!DOCTYPE html>
<html>
<head>
<title>RoommateBoard</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
</head>
<body>
<header>
<nav>
<a href="/#" class="block">
<h1>Roommate Board</h1>
</a>
<% if user_signed_in? %>
<%= link_to "Manage Posts", manage_posts_url %>
<%= link_to "Sign Out", destroy_user_session_url, :method => 'delete' %>
<% else %>
<%= link_to "New Post", new_user_registration_url %>
<% end %>
</nav>
</header>
<%= yield %>
</body>
</html>
이것은 홈페이지에 대한 링크를 제공하며 사용자가 "새 게시물"을 클릭하면 가입 페이지로 이동합니다. 로그인되어 있으면 "게시물 관리" 버튼과 "로그아웃" 버튼으로 변경됩니다. 스타일을 지정하지 않고 로그인하지 않은 경우 루트 페이지는 이제 다음과 같이 표시됩니다.
기본 게시물 색인 페이지의 스크린샷
다음으로 각 게시물의 범위를 순 사용자로 지정하려고 합니다. . 본질적으로 우리는 Posting과 User 사이에 몇몇 관련 로직과 함께 included_to 연관을 생성할 것입니다. Rails의 편리한 마이그레이션 생성기부터 시작하겠습니다. 다음을 실행하십시오:
rails g migration AddUserIdToPosts
이제 db/migrate/
에서 마이그레이션 파일을 편집합니다. 다음과 같이 표시됩니다.
class AddUserIdToPosts < ActiveRecord::Migration[6.1]
def change
add_column :posts, :user_id, :integer
end
end
마지막으로 다음을 사용하여 마이그레이션을 실행합니다.
rails db migrate
다음으로 모델 자체에 연결을 추가합니다. . app/models/post.rb
에서 , 다음 행을 추가하십시오.
belongs_to :user
그리고 app/models/user.rb
에서 , 다음을 추가하십시오.
has_many :posts
이 양방향 연관은 우리가 create 및 new 메소드에서 사용하려고 하는 것과 같은 편리한 Rails 메소드를 제공합니다. app/controllers/posts_controller.rb
로 이동합니다. (게시물 컨트롤러) new 방법. @post = Post.new
대신 , @post = current_user.posts.build
사용 .
만들기에서 방법, 우리는 비슷한 것을 할 것입니다. @post = Post.new(post_params)
바꾸기 @post = current_user.posts.build(post_params)
사용 . new 및 create 메소드는 다음과 같아야 합니다.
# GET /posts/new
def new
@post = current_user.posts.build
end
# POST /posts or /posts.json
def create
@post = current_user.posts.build(post_params)
respond_to do |format|
if @post.save
format.html { redirect_to @post, notice: "Post was successfully created." }
format.json { render :show, status: :created, location: @post }
else
format.html { render :new, status: :unprocessable_entity }
format.json { render json: @post.errors, status: :unprocessable_entity }
end
end
end
이렇게 하면 사용자의 id 속성이 모든 게시물에 저장되지만 다른 사용자가 자신의 게시물이 아닌 게시물을 편집하거나 삭제하는 것을 막을 수는 없습니다! 동일한 PostsController에서 사용자가 게시물을 소유하고 있는지 여부에 대한 부울 표시기를 제공하는 메서드를 작성해 보겠습니다. 컨트롤러 하단에 다음을 추가하세요.
def user_owns_post?
@post.user == current_user
end
수정에서 메소드에 다음을 추가하십시오(여기에 유일한 코드가 될 것입니다):
unless user_owns_post?
# Redirect them to an error page
redirect_to posts_path, flash: { error: "You are not the owner of that post!" }
end
파괴 메소드, 시작 부분에 추가:
unless user_owns_post?
# Redirect them to an error page
redirect_to posts_path, flash: { error: "You are not the owner of that post!" }
end
다음으로 사용자가 기존 게시물을 관리할 수 있는 몇 가지 기능이 필요합니다. . 최종 목표는 사용자가 게시물을 작성하고 비용을 지불하기 전에 초안 상태로 유지하는 것입니다. 그들이 지불하면 활성화되도록 설정됩니다! PostsController에서 새 메서드를 추가합니다.
def manage
@posts = current_user.posts
end
다음으로, 사용자가 거기에 갈 수 있도록 경로를 추가하십시오! config/routes.rb
에서 , 다음을 추가하십시오.
get "/manage_posts/" =>'posts#manage'
마지막으로 포스트 관리를 위한 뷰를 생성하겠습니다! 새 파일 app/views/posts/manage.html.erb
추가 . 그런 다음 app/views/posts/index.html.erb
의 전체 내용을 복사합니다. 그것에. 헤더를 "게시물"에서 "게시물 관리"로 변경하기만 하면 됩니다. 이것은 본질적으로 인덱스 페이지이지만 컨트롤러 로직 덕분에 개별 사용자의 게시물만 인덱싱됩니다. 기술적으로는 개별 인덱스 페이지에서 이 작업을 수행할 수 있지만 이 분리를 통해 나중에 다른 기능을 더 쉽게 추가할 수 있습니다. 예를 들어 이제 새 게시물을 만들 수 있는 링크를 추가합니다. 이 관리 페이지에서.
헤더 아래에 다음을 추가하기만 하면 됩니다.
<%= link_to "New Post", new_post_url%>
이것이 우리가 필요로 하는 모든 설정입니다! 모든 것이 제대로 작동하는지 확인하는 것이 좋습니다. 이제 다음을 수행할 수 있습니다.
- 사용자 계정 만들기
- 로그인
- 로그아웃
- 기존 게시물 색인 보기
- 새 게시물 작성
모든 것이 예상대로 작동한다면 Stripe 통합으로 넘어갈 때입니다!
스트라이프 통합
스트라이프 루비 보석 추가
시작하려면 Stripe Ruby gem을 추가하기만 하면 됩니다. Gemfile에 다음 줄을 추가합니다.
gem 'stripe'
다음과 같이 실행하십시오.
bundle install
다음 부분에는 Stripe API 키가 필요합니다. . Stripe 콘솔의 사이드바에서 "개발자"를 클릭하십시오. "API 키"에 대한 옵션이 표시되므로 계속해서 다음을 클릭하십시오. 곧 필요하므로 "비밀 키"를 기록해 두십시오.
하지만 먼저 config/initializers
에서 이니셜라이저를 만드십시오. . stripe.rb
라는 파일을 만듭니다. . 이 파일에서 다음과 같은 한 줄을 추가합니다(비밀 키로 대체됨).
Stripe.api_key = <insert your key here as a string>
스트라이프 자격 증명 저장
그러나 자격 증명을 저장하는 이 방법은 안전하지 않습니다. 생산 비밀을 일반 텍스트로 저장해서는 안 됩니다. 이 비밀은 git에 의해 추적되고 코드베이스를 읽는 모든 사람이 액세스할 수 있습니다. 다행히도 Rails는 자격 증명을 안전하게 저장할 수 있는 방법을 제공합니다.
셸에서 EDITOR=vim bin/rails credentials:edit
를 실행합니다. vim에서 자격 증명 파일을 암호화 해제하고 엽니다. 키보드의 'i' 키를 눌러 삽입 모드로 전환합니다. 다음과 같은 새 섹션을 추가합니다.
stripe:
secret: your-secret-key
public: your-public-key
다음으로 파일을 저장하고 vim을 종료합니다. 이를 수행하는 몇 가지 방법이 있지만 내가 가장 좋아하는 방법은 이스케이프 키(삽입 모드 종료)를 누른 다음 :wq
를 입력하는 것입니다. , Enter 키가 뒤따릅니다. Rails가 암호화된 자격 증명을 처리하는 방법에 대해 자세히 알고 싶다면 여기를 참조하세요.
이제 자격 증명이 안전하게 저장되었으므로 다음과 같이 안전하지 않은 초기화 코드를 교체합니다.
Stripe.api_key = Rails.application.credentials[:stripe][:secret]
제품에서 Stripe Checkout에 연결
결제에 Stripe을 활용할 수 있는 몇 가지 방법이 있지만 좋은 옵션은 Stripe Checkout입니다. Stripe Checkout은 호스팅된 결제 페이지입니다. , 즉 실제 트랜잭션에 대한 사용자 인터페이스를 만들지 않습니다. 사용자가 버튼을 클릭하면 Stripe로 리디렉션된 다음 결제가 완료된 후 애플리케이션으로 다시 리디렉션됩니다. 이로 인해 컨텍스트 관리가 약간 어렵지만 결제 양식을 만드는 부담을 없애고 Stripe에서 전환을 최대화하기 위해 많은 작업을 수행할 수 있습니다. ACH 거래 또는 다양한 국제 결제 수단을 포함하여 카드 이외의 결제 유형을 쉽게 수락할 수 있습니다.
시작하려면 결제 프로세스를 처리할 컨트롤러를 만드세요. . app/controllers/checkout_controller.rb
생성 . 여기에서 체크아웃 세션 생성을 처리하는 메서드를 작성할 것입니다.
def create
@session = Stripe::Checkout::Session.create({
success_url: root_url,
cancel_url: manage_posts_url,
payment_method_types: ['card'],
line_items: [{
name: "Roommate Posting",
amount: 2000,
currency: "usd",
quantity: 1
}],
mode: 'payment',
metadata: {post_id: params[:post_id]},
customer_email: current_user.email,
success_url: manage_posts_url,
cancel_url: manage_posts_url
})
respond_to do |format|
format.js
end
end
그러면 Stripe가 마법을 부리는 데 필요한 컨텍스트가 있는 하나의 체크아웃 세션이 생성됩니다. 애플리케이션에 하나의 제품만 있기 때문에 여기에 하드 코딩된 단일 라인 항목을 전달합니다. 그러나 이것은 전달된 매개변수를 사용하여 특정 제품에 대한 결제를 사용자 정의하는 쉬운 장소가 될 것입니다. "Amount" 변수는 센트 단위의 제품 비용입니다. . 단순함을 위해 현재 사용자의 이메일을 전달한다는 점도 언급할 가치가 있습니다. 마지막으로 언급해야 할 중요한 사항은 게시물의 ID를 메타데이터로 전달한다는 것입니다. . 이렇게 하면 웹 후크 섹션에서 사용자의 구매를 쉽게 처리할 수 있습니다!
다음으로, 메서드를 호출할 방법이 분명히 필요합니다.
config/routes.rb
에서 , 다음 줄을 추가하여 컨트롤러에 대한 경로를 만듭니다.
post 'checkout/create' => 'checkout#create', as: "checkout_create"
다음으로 결제 제출 버튼을 추가하겠습니다. 게시물 관리 보기의 모든 게시물에 대해 app/views/manage.html.erb
에서 , 마지막에 다음을 추가하여 헤더에 추가 열을 추가하십시오.
<th>Payment</th>
또한 <th colspan="3"></th>
를 전환합니다. <th colspan="4"></th>
로 .
그런 다음 결제 버튼 자체에 대한 테이블 본문에 다른 항목을 추가합니다. 본문의 네 번째 항목으로 다음을 추가합니다.
<td><%= button_to "Submit Payment", checkout_create_path, params: {:post_id => post.id }, remote: true %></td>
대체로 게시물 관리 보기는 다음과 같습니다.
<p id="notice"><%= notice %></p>
<h1>Manage Posts</h1>
<%= link_to "New Post", new_post_url%>
<table>
<thead>
<tr>
<th>Address</th>
<th>Rent</th>
<th>Content</th>
<th>Payment</th>
<th colspan="4"></th>
</tr>
</thead>
<tbody>
<% @posts.each do |post| %>
<tr>
<td><%= post.address %></td>
<td><%= post.rent %></td>
<td><%= post.content %></td>
<td><%= button_to "Submit Payment", checkout_create_path, params: {:post_id => post.id }, remote: true %></td>
<td><%= link_to 'Show', post %></td>
<td><%= link_to 'Edit', edit_post_path(post) %></td>
<td><%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
</table>
<br>
<%= link_to 'New Post', new_post_path %>
자바스크립트
app/views/application.html.erb
에 Stripe JavaScript 패키지 포함을 추가하는 것을 잊지 마십시오. 이 줄:
<script src="https://js.stripe.com/v3/"></script>
다음으로 app/views/checkout/create.js.erb
에 새 파일(및 디렉토리!)을 추가해야 합니다. . 이 파일에 다음을 추가하면 컨트롤러의 도움으로 버튼을 클릭할 때 체크아웃 세션이 생성될 수 있습니다.
var stripe = Stripe("<%= Rails.application.credentials[:stripe][:public] %>")
stripe.redirectToCheckout({
sessionId: '<%= @session.id %>'
}).then(function (result) {
console.log(result.error_message)
});
웹훅 설정
이제 사용자가 게시물에 대한 비용을 지불할 수 있는 방법이 있습니다! 그러나 우리는 애플리케이션이 게시물에 대한 비용이 지불되었는지 여부를 알거나 지불되었을 때 활성화할 수 있는 방법이 없습니다. 시작하려면 게시물 모델에 부울을 추가하여 게시물에 대한 비용이 지불되었는지 여부를 나타냅니다. Rails 마이그레이션 생성기를 사용하려면 다음을 실행하세요.
rails g migration AddPaymentDetailsToPost
이 마이그레이션을 열고 다음 행을 추가하십시오.
add_column :posts, :is_paid, :boolean, :default => false
이것은 is_paid
라는 게시물 테이블/모델에 속성/열을 추가합니다. . 이 속성은 기본값이 false인 부울입니다. 즉, 게시물이 생성될 때마다 지급되지 않음으로 표시됩니다. . 게시물에 대한 비용이 지불되면 Boolean을 수동으로 뒤집습니다. 그러나 먼저 방금 작성한 마이그레이션을 실행하십시오.
rails db:migrate
지불이 즉시 처리되지 않기 때문에 Stripe의 성공적인 API 응답에 의존하여 작업 비용이 지불되었는지 확인할 수 없습니다. 대신 결제 처리가 완료되면 Stripe가 게시 요청을 하도록 애플리케이션에 엔드포인트를 지정할 수 있습니다. 이 프로세스를 일반적으로 웹훅이라고 하며 실제로는 생각보다 간단합니다!
시작하려면 app/controllers/
에서 새 컨트롤러를 만드세요. WebhooksController라고 합니다. 이 app/controllers/webhooks_controller.rb
에서 , 다음을 작성하십시오.
class WebhooksController < ApplicationController
skip_before_action :verify_authenticity_token
def create
payload = request.body.read
sig_header = request.env['HTTP_STRIPE_SIGNATURE']
event = nil
begin
event = Stripe::Webhook.construct_event(
payload, sig_header, Rails.application.credentials[:stripe][:webhook]
)
rescue JSON::ParserError => e
status 400
return
rescue Stripe::SignatureVerificationError => e
# Invalid signature
puts "Signature error"
p e
return
end
# Handle the event
case event.type
when 'checkout.session.completed'
session = event.data.object
post = Post.find_by(id: session.metadata.post_id)]
post.is_paid = true
post.save!
end
render json: { message: 'success' }
end
end
필요한 상용구 외에 이 메서드는 checkout.session.completed
라는 특정 이벤트 유형을 전달합니다. . Rails 측에 남은 것은 config/routes.rb
에 경로를 추가하는 것뿐입니다. :
resources :webhooks, only: [:create]
마지막으로 Stripe 대시보드 자체에서 Stripe 계정을 이 끝점에 연결해야 합니다. Stripe 대시보드에 URL을 제공할 것이기 때문에 로컬에서 작동하지 않습니다! 웹훅이 제대로 작동하려면 인터넷에 액세스할 수 있는 엔드포인트에 이를 배포해야 합니다.
Stripe 대시보드에서 "개발자"로 돌아가지만 이번에는 왼쪽 패널에서 "웹훅"을 선택합니다. "엔드포인트" 섹션에서 "엔드포인트 추가"를 클릭하십시오. /webhooks
가 추가된 애플리케이션 URL 제공 "checkout.session.completed" 이벤트를 할당합니다.
이것이 Stripe 통합을 위한 것입니다! 모의 애플리케이션을 위한 마지막 단계는 지불된 게시물만 인덱스 페이지에 표시하도록 하는 것입니다. 이는 app/controllers/posts_controller.rb
의 index 메소드에서 쉽게 수행할 수 있습니다. . 방법을 다음과 같이 변경하십시오.
def index
@posts = Post.where(:is_paid => true)
end
이제 사용자는 게시물을 작성하고 Stripe 체크아웃으로 비용을 지불하고 애플리케이션의 홈페이지에 자동으로 표시되도록 할 수 있습니다!
프로덕션으로 전환
웹훅은 라이브 사이트에 배포될 때만 작동하므로 배포에 필요한 변경 사항에 대해 논의하는 것이 좋습니다. 우선 커뮤니케이션은 반드시해야 합니다. Stripe 체크아웃이 작동하려면 HTTPS여야 합니다. 문제가 발생하면 JavaScript 콘솔에서 Stripe의 힌트를 확인하세요.
초기 설정에서 Stripe의 테스트 키를 사용했을 가능성이 큽니다. 그렇게 하면 Stripe 대시보드의 API 키 섹션이 다음과 같이 보일 것입니다.
Stripe 대시보드 API 키의 스크린샷
"테스트 데이터 보기" 옆에 있는 토글을 클릭하기만 하면 프로덕션 비밀 및 공개 키가 표시됩니다. 애플리케이션이 라이브 데이터를 처리하려면 이전과 같은 방식으로 Rails 자격 증명 관리자를 열고 테스트 키를 이것으로 교체해야 합니다. 그러나 테스트 환경은 가짜 신용 카드 번호로 테스트 트랜잭션을 실행하는 데 유용합니다. 둘 이상의 환경이 있거나 이를 자주 전환할 계획이라면 자격 증명 관리자에서 다른 키/값 쌍을 만들고 코드에서 동적으로 사용하는 것이 좋습니다.
결론
우리는 예제 애플리케이션을 만드는 데 많은 시간을 할애했으며 Stripe를 통합하는 데 그리 오랜 시간이 걸리지 않았습니다. Stripe 체크아웃 덕분에 사용자 인터페이스를 비롯한 많은 책임을 전가하여 많은 코드를 절약할 수 있습니다. 온라인 시장에서 Stripe가 널리 채택되어 사용자에게 일관된 경험을 제공합니다. Stripe의 사명은 인터넷의 GDP를 늘리는 것이며 이를 위해서는 귀하와 같은 애플리케이션이 필요합니다. 이 때문에 그들은 항상 더 쉽게 지불을 처리하는 방법. Stripe Checkout은 구현하기가 상당히 쉽지만 최근에는 더 빠른 방법을 생각했습니다.
Stripe Payment Links는 Checkout 통합을 거의 불필요하게 만들 가능성이 있는 Stripe의 새로운 제품입니다. 우리가 실제로 한 일은 사용자를 호스팅된 체크아웃 페이지로 리디렉션하는 것뿐이었습니다. 간단한 링크는 이를 훨씬 더 쉽게 만들 수 있는 가능성이 있습니다. 지불 링크는 소매업체를 대상으로 하는 것처럼 보이지만 잠재적으로 이 사용 사례에서 작동할 수 있는 코드 없는 솔루션입니다. 그럼에도 불구하고 Stripe Checkout은 여전히 시장에서 더 많은 유연성과 채택을 자랑하므로 완전히 이해하는 것이 중요합니다.
많은 기업이 어려움을 겪는 한 가지는 특히 국제적으로 세금을 처리하는 것입니다. Stripe은 최근 기업을 위해 이를 자동으로 처리하는 새로운 기능을 도입했지만 아직 베타 버전입니다. 사용 가능하게 되면 지불 처리를 위해 Stripe를 사용하는 모든 사람의 회계 부담을 크게 줄일 수 있을 것입니다!
Ruby on Rails에 대한 Stripe의 문서 및 기존 기사는 일회성 구매보다는 구독에 중점을 둡니다. 구독은 사용자 및 제품에 연결된 반복 요금입니다. Stripe 측에서 구현은 일회성 구매와 매우 유사합니다. 그러나 응용 프로그램 측면에서는 구독 관리를 통합하고 사용자가 구독을 관리하도록 허용하고 구독 상태를 주기적으로 확인해야 합니다. 이 문서는 일회성 구매에 중점을 두었지만 구독을 관리하는 데 필요한 리소스가 커뮤니티에 많이 있습니다.