Rhapsodist
2020.04.18
Created By Rhapsodist
Rhapsodist
rails에서 stripe 결제 시스템을 활용 하는 방법을 알아보자.
gem install stripe
Stripe.api_key = 'sk_test_......'
먼저 stripe에서 제공하는 api key를 Stripe
모듈에 담고 시작 한다.
그 후 Stipre 모듈을 사용하면 바로 적용이 된다.
customer = Stripe::Customer.create({
description: 'My First Test Customer',
})
위와 같이 Customer
class에서 create를 실행하면 된다.
stripe에 생성된 customer 정보가 return 값으로 돌아온다.
create를 할때 보낼 params 로는 다음이 있다.
params | optional | details | child params |
---|---|---|---|
address | O | 고객의 주소 | country city state postal_code line1 (required) line2 |
description | O | 별도 고객 정보 | |
O | 고객 email | ||
metadata | O | 별도 추가 Object | |
payment_method | O | 고객이 사용중인 지불방법 ID | |
phone | O | 폰번호 | |
shipping | O | 고객의 쇼핑정보 | address (required) name (required) phone |
전부 option이기 때문에 아무 정보를 보내지 않아도 customer가 생성되기때문에 불필요한 customer 데이터가 쌓일 수 있다.
paymentMethod = Stripe::PaymentMethod.attach(
'pm_123456789',
{customer: 'cus_H7WaGyHCSE9Hys'},
)
stripejs에서 생성한 paymentMethod를 받아와서 customer object에 붙여 넣을 수 있다. customer에 적용된 paymentMethod는 default payment로 인식하게 된다.
paymentMethod = Stripe::PaymentMethod.detach('pm_123456789')
해당 paymentMethod id를 가지고 있는 customer에게서 default payment를 제거 한다.
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를 넘겨줄 수도 있다.
© 2020, made by Rhapsodist