Search
Duplicate

[노코드 X 페이플] 개발자 없이 페이플 링크결제로 결제 기능 구현하기 - 3. 자동/정기(구독)결제 구현

이 글은 “[노코드x페이플] 개발자 없이 페이플 링크결제로 결제 기능 구현하기” 시리즈로, 총 3개의 글로 구성되어 있으며, 세번째 글입니다.
[노코드x페이플] 개발자 없이 페이플 링크결제로 결제 기능 구현하기
이 글의 목차
이번 글에서는 링크결제를 이용하여 설정한 주기마다 자동으로 결제되는 정기(구독)결제를 구현해보겠습니다.
※ 유의사항
정기결제 관련 법적 사항은 이 글에서 다루지 않으며, 페이플과 논의 또는 자체적으로 확인해주셔야 합니다.

1. 사용 툴

페이플 링크결제
결제 기능
Airtable 데이터베이스
Zapier 페이플 결제 연동

2. 시나리오

정기결제용 데이터베이스를 생성합니다.
② Zapier로 웹훅 연동
빌링키 중복 확인
최초의 빌링키일때만 데이터베이스에 저장
⑤ 데이터베이스에 정기결제를 위한 새로운 뷰 생성
Zapier로 정기결제 진행

3. 상세 방법

3-1. 정기결제용 데이터베이스 생성하기

1.
Airtable 등으로 데이터베이스를 생성합니다. 필요한 고객 정보 외에 아래의 컬럼들이 포함되어야 합니다.
항목
설명
payer id
자동결제를 위한 빌링키 값 기록
goods
상품명
price
결제금액
결제일
결제일
정기결제 트리거
다음 정기결제 날짜가 자동으로 설정되도록 하는 컬럼

3-2. Zapier로 웹훅 연동

1.
빌링키는 웹훅으로 받는 결제결과 데이터에 포함되어 있습니다. 이에 웹훅을 받아볼 수 있도록 웹훅 설정부터 해볼게요.
Choose app & event를 선택합니다.
App : Webhook by Zapier
Event : Catch Hook
Set up Trigger는 입력하지 않고 넘어갑니다.
Test Trigger에서 Zapier가 제공한 웹훅 주소를 복사합니다.
2.
복사한 웹훅 주소는 페이플 파트너 관리자 > 상점정보 > 기본정보 메뉴의 결제결과 수신 URL 항목에 붙여넣기 합니다.
3.
정상적으로 웹훅 데이터가 들어오는지 확인해보고 이상이 없다면 Continue를 클릭합니다.
Q. Zapier는 Zap에 Webhook by Zapier를 추가할 때마다 웹훅 주소를 새로 주는데 페이플에는 웹훅 주소를 1개밖에 등록할 수 없어요, 어떻게 하나요?
A. Zapier가 제공하는 웹훅 주소를 잘 살펴보시면, 맨 뒤의 / / 사이만 바뀝니다! 끝에만 지워서 고정된 부분만 페이플에 등록해주세요.

3-3. 빌링키 중복확인

1.
3-2에서 응답받은 빌링키가 데이터베이스에 이미 저장되어 있는 빌링키인지 확인합니다. 빌링키가 중복 저장되면 이중결제될 가능성이 있기 때문입니다. 우선 데이터베이스에서 빌링키를 확인하게끔 설정합니다.
Choose app & event를 선택합니다.
App : Airtable
Event : Find Record
Choose account 에서 계정 로그인
Set up Action에서 설정
Base : 생성한 DB 선택
Table : 그 DB 중 정기결제 정보가 쌓이는 Table 선택
Search by Field : 데이터베이스에서 빌링키 항목 선택
Search Value : 1. PCD PAYER ID 선택 (1번에서 받아온 결제완료 웹훅 데이터 중 빌링키 항목)
Should this step be considered a "success" when nothing is found? : true
Create Airtable Record if it doesn’t exist yet? : 미체크
2.
확인한 빌링키가 데이터베이스에 있는 빌링키들과 동일한 값이 없을 때 또는 결제응답이 성공일 때만 필터로 걸러냅니다.
결제응답이 성공 : 0000 또는 SPCD0000

4) 최초의 빌링키 일때만 데이터베이스에 저장

기존 데이터베이스에 없는 빌링키인 경우, 데이터베이스에 추가하는 작업을 설정합니다.
Choose app & event를 선택합니다.
App : Airtable
Event : Create Record
Choose account 에서 계정 로그인
Set up Action 설정
Base 와 Table 선택
예시 DB를 가지고 하고 있다면, Base는 페이플 링크결제, Table은 정기결제 선택
payer_id : 1. PCD PAYER ID 선택
payer name : 1. PCD PAYER NAME 선택
date : {{zap_meta_human_now}} 라고 입력하면 로컬 시간으로 입력됨
price : 1. PCD PAY TOTAL 선택
상품명 : 1. PCD PAY GOODS 선택
그 외 필요한 정보 있으면 데이터베이스에 컬럼 추가하고, 위에서 선택한 것처럼 웹훅값과 데이터베이스 값 연동 (이메일, 전화번호 등)

5) 데이터베이스에 새로운 뷰 생성

1.
테이블에 정기결제 트리거 컬럼이 필요합니다. Airtable의 Formula기능을 사용해서 원하는 날짜가 반환되도록 설정해줍니다.
아래 예시로 설명드리는 데이터베이스에는 한 달마다 결제되도록 설정해놓았습니다. 이 부분을 원하는 주기로 변경해주시면 됩니다.
DATEADD 함수를 사용했으며, pay date(결제일) 에서 1달이 추가되는 값을 반환하도록 수식을 설정해놓았습니다.
잠깐! Formula 관련 설명은 여기서 확인이 가능합니다.
Formatting 에서 Include time을 해제하여 시간은 사용하지 않고, Date format은 Local로 변경해주겠습니다. (이렇게 하지 않으면 GMT 시간으로 기록됩니다)
2.
오늘 정기결제날이 된 고객만 필터링하기 위해 새로운 뷰를 생성합니다.
기존 뷰를 선택 > 마우스 오른쪽 버튼 클릭 > Duplicate view 클릭하면 새로운 뷰가 생성되며 해당 뷰를 적절한 이름으로 변경해줍니다.
(예시 이미지에서는 ‘오늘 정기결제 고객’으로 변경하였습니다)
3.
새로 생성한 뷰에 필터를 추가해줍니다. 이 뷰에는 기존 뷰에서 정기결제 트리거 컬럼의 값이 오늘인 경우인 내역만 추가되도록 설정합니다.
아래와 같이 오늘(2022년 11월 22일 기준) 재결제해야하는 고객만 새로운 뷰에 추가됩니다.

6) 정기결제 진행

1.
정기결제를 처리할 새로운 Zap을 생성합니다. ‘오늘 정기결제 고객’ 뷰에 새로운 내역이 추가될 경우에만 정기결제를 진행하도록, 데이터베이스에 새 내역이 추가되는 경우를 Trigger로 설정합니다.
‘오늘 정기결제 고객’뷰에 새롭게 추가된 경우에만 진행하기 때문에, 기존과 다르게 뷰까지 선택을 해주어야 합니다.
2.
이제 결제요청 단계로 들어갑니다. 결제요청을 위해 파트너 인증을 진행합니다. 이전 글(링크결제 자동생성 및 결제요청메일 자동발송)에서 설명했던 내역과 거의 비슷합니다.
링크결제 관련 파라미터가 제외되고, PCD_PAY_TYPEPCD_SIMPLE_FLAG 파라미터가 추가되었습니다.
마지막의 Referer 항목은 파트너사의 도메인으로 기입해주세요.
3.
인증이 완료되었다면, 결제를 요청합니다. 결제 요청도 이전 글(링크결제 자동생성 및 결제요청메일 자동발송)에서 설정한 것과 유사하게 진행됩니다.
이전글과 다른 부분은, 상품명과 가격까지 데이터베이스에서 불러와서 선택해주어야 합니다. 만약 상품명과 가격이 달라지지 않고 늘 동일하다면 고정값으로 입력해도 됩니다.
4.
결제가 완료되었습니다. 방금 결제하였으니, 결제일을 새롭게 업데이트하기 위해 데이터베이스에 업데이트 하는 Action을 추가합니다.
결제일을 새롭게 업데이트하려면 기준이 되는 값을 지정해주어야 하기 때문에 Record를 1. ID로 선택하고
결제일이 로컬 시간으로 반영될 수 있도록 {{zap_meta_human_now}}로 입력해줍니다.

The End

축하드립니다.
이제 노코드로 자동/정기결제까지도 구현하실 수 있습니다.
길다면 길고, 짧다면 짧은…
개발(자)없이 페이플 링크결제로 결제 기능 구현하기 시리즈가 마무리 되었습니다.
아무쪼록 많은 분들께서 좀 더 쉽고 빠르게 노코드를 통해 비즈니스 아이디어를 구현해보셨으면 합니다.
추가로, 저희 페이플 링크결제도 많은 사랑부탁드릴께요~