Rhapsodist

ruby

Rails에서 Stripe 결재시스템 사용하기

2020.04.18

Created By Rhapsodist

Rhapsodist

Rails에서 Stripe 결제시스템 사용하기

1. 개요

rails에서 stripe 결제 시스템을 활용 하는 방법을 알아보자.

  • stripe customer 작성
  • stripe paymentMethod를 customer에게 적용하기
  • customer에게 적용된 payment로 결제 하기

2. 사용법

2.1. gem 설치하기

gem install stripe

2.2. Api key 설정

Stripe.api_key = 'sk_test_......'

먼저 stripe에서 제공하는 api key를 Stripe 모듈에 담고 시작 한다.

그 후 Stipre 모듈을 사용하면 바로 적용이 된다.

2.3. Create customer

customer = Stripe::Customer.create({
  description: 'My First Test Customer',
})

위와 같이 Customer class에서 create를 실행하면 된다. stripe에 생성된 customer 정보가 return 값으로 돌아온다.

create를 할때 보낼 params 로는 다음이 있다.

paramsoptionaldetailschild params
addressO고객의 주소country
city
state
postal_code
line1 (required)
line2
descriptionO별도 고객 정보
emailO고객 email
metadataO별도 추가 Object
payment_methodO고객이 사용중인 지불방법 ID
phoneO폰번호
shippingO고객의 쇼핑정보address (required)
name (required)
phone

전부 option이기 때문에 아무 정보를 보내지 않아도 customer가 생성되기때문에 불필요한 customer 데이터가 쌓일 수 있다.

2.4. Attach PaymentMethod

paymentMethod = Stripe::PaymentMethod.attach(
  'pm_123456789',
  {customer: 'cus_H7WaGyHCSE9Hys'},
)

stripejs에서 생성한 paymentMethod를 받아와서 customer object에 붙여 넣을 수 있다. customer에 적용된 paymentMethod는 default payment로 인식하게 된다.

2.5. Detach PaymentMethod

paymentMethod = Stripe::PaymentMethod.detach('pm_123456789')

해당 paymentMethod id를 가지고 있는 customer에게서 default payment를 제거 한다.

2.6. 결제하기

pay_intent = Stripe::PaymentIntent.create({
  amount: 2000,
  currency: 'jpy',
  payment_method_types: ['card'],
  customer: 'cus_H7WaGyHCSE9Hys'
})

PaymentIntent class에 가격과 돈의 단위, 결제 수단, customer id를 함께 제공하면 결제를 실행 시킬 수 있다. 다른 결제 수단을 제공하지 않으면 default payment(PaymentMethod)로 결제 되기 때문에, 다른 결제 수단을 이용할 생각이라면 다른 payment_method를 넘겨줄 수도 있다.

Share to ...

#ruby
#stripe
#rails
#charge
#react