뒤로

VibeFox Razorpay for WooCommerce — 도움말

요구 사항

WordPress: 6.0 이상.

WooCommerce: 7.0 이상, 설치 및 활성화되어 있어야 합니다. WooCommerce가 없으면 플러그인을 활성화할 수 없습니다.

PHP: 8.0 이상.

Razorpay 계정: 테스트 모드에는 Razorpay 계정의 Key ID와 Key Secret이 필요하며, 운영 모드에는 계정이 활성화된 후 필요합니다. 직접 정한 시크릿을 사용하는 웹훅을 강력히 권장합니다(설정 참조). INR 이외의 통화로 결제하려면 Razorpay 계정에서 International Payments가 활성화되어 있어야 합니다.

VibeFox 라이선스 키: vibefox.net에서 구매합니다. 키 하나는 도메인 하나에서 작동합니다.

설치

1. WordPress에서 Plugins > Add New > Upload Plugin으로 이동하여 플러그인 ZIP 파일을 선택하고 Install Now를 클릭합니다. FTP로 wcp_razorpay_payment 폴더를 /wp-content/plugins/에 업로드할 수도 있습니다.

2. Activate를 클릭합니다.

3. 설정을 엽니다: WooCommerce > Settings > Payments > Razorpay > Manage로 이동하거나, 플러그인 페이지에서 플러그인 이름 아래의 Settings를 클릭합니다.

4. 페이지 상단의 라이선스 블록에 VibeFox 라이선스 키를 입력하고 Activate를 클릭합니다.

5. Test Key ID와 Test Key Secret을 입력하고, Razorpay Dashboard에서 웹훅을 설정한 뒤 그 시크릿을 입력합니다(설정 참조).

6. Enable/Disable을 켜고, Test mode를 켠 상태에서 테스트 결제를 진행합니다. 준비가 되면 Live 키를 입력하고 Test mode 체크를 해제합니다.

설정

모든 설정은 한 페이지에 있습니다: WooCommerce > Settings > Payments > Razorpay. 입력란 위에 페이지는 알림을 표시합니다. 현재 모드의 키가 없는 경우(이때 결제 수단은 체크아웃에서 숨겨짐), 테스트 모드에서 Key ID가 rzp_test_로 시작하지 않거나 운영 모드에서 rzp_live_로 시작하지 않는 경우, 테스트 모드가 켜져 있는 경우, 웹훅 시크릿이 비어 있는 경우, 또는 쇼핑몰 통화가 INR이 아니어서 Razorpay 계정에서 International Payments가 필요한 경우입니다. 결제 수단 목록에서는 현재 모드에 키가 입력될 때까지 Razorpay가 설정이 필요한 것으로 표시되며, 테스트 모드가 켜져 있는 동안에는 Test mode 배지가 표시됩니다. 키와 함께 붙여넣은 공백은 저장할 때 제거됩니다.

일반

Enable/Disable: Enable Razorpay Payment Gateway는 결제 수단을 켜거나 끕니다. 기본값: 끔.

Title: 체크아웃에서 고객에게 보이는 결제 수단 이름입니다. 기본값: UPI, Cards, NetBanking.

Description: 체크아웃에서 결제 수단 아래에 표시되는 텍스트입니다. 기본값: Pay securely via UPI, Credit/Debit Card, or Internet Banking through Razorpay.

API 키

키는 Razorpay Dashboard의 Account & Settings > API Keys에서 확인합니다. 테스트 키(rzp_test_...)를 생성하려면 Dashboard를 테스트 모드로 전환합니다. 운영 키(rzp_live_...)는 계정이 활성화된 후 사용할 수 있습니다.

Test mode: Use the Test mode keys (no real money is charged). 기본값: 켬. 실제 결제를 받으려면 체크를 해제합니다. 주문의 결제, 캡처, 환불은 항상 해당 주문이 결제된 모드의 키를 사용하므로, 나중에 모드를 바꿔도 기존 주문에는 영향을 주지 않습니다.

Test Key ID: Razorpay Dashboard의 테스트 모드에 있는 Key ID입니다. rzp_test_로 시작합니다.

Test Key Secret: Razorpay Dashboard의 테스트 모드에 있는 Key Secret입니다.

Live Key ID: Razorpay Dashboard의 운영 모드에 있는 Key ID입니다. rzp_live_로 시작합니다.

Live Key Secret: Razorpay Dashboard의 운영 모드에 있는 Key Secret입니다.

결제

Payment Action: 돈이 청구되는 시점입니다. 기본값: Authorize & Capture.

Authorize & Capture: 고객에게 즉시 청구됩니다. Razorpay가 승인된 결제를 보고하면 플러그인이 이를 캡처합니다.
Authorize Only: 금액이 예약됩니다. 주문은 “보류 중” 상태가 되며, 나중에 주문 작업 Capture Razorpay payment 또는 Razorpay Dashboard에서 결제를 캡처합니다. 제때 캡처되지 않은 승인 결제는 Razorpay가 자동으로 환불합니다.

웹훅

웹훅은 고객이 결제 직후 브라우저를 닫아도 결제를 확인하고, Razorpay Dashboard에서 이루어진 환불을 기록합니다. Razorpay Dashboard에서 Account & Settings > Webhooks로 이동하여 테스트 모드용 웹훅과 운영 모드용 웹훅을 각각 추가합니다. 설정의 이 섹션에 표시된 URL을 사용합니다. URL은 https://your-site/wc-api/razorpay_p_webhook/와 같은 형태입니다. 설정에 표시된 그대로 정확히 복사하세요. Razorpay에서 원하는 시크릿을 입력하고 다음 이벤트를 선택합니다:

payment.authorized: 결제가 승인되었습니다.
payment.captured: 결제가 캡처되었습니다. Razorpay Dashboard에서 캡처한 경우도 포함합니다.
payment.failed: 결제 시도가 실패했습니다.
order.paid: 결제에 해당하는 Razorpay 주문이 결제되었습니다.
refund.created: 결제가 환불되었습니다(예: Razorpay Dashboard에서 환불).

Webhook Secret: 웹훅을 만들 때 입력한 시크릿입니다. 플러그인에는 두 웹훅을 위한 입력란이 하나뿐이므로, 테스트 웹훅과 운영 웹훅에 같은 시크릿을 사용하세요. 유효한 서명이 없는 웹훅은 거부됩니다. 웹훅이 없으면 결제는 고객이 팝업에서 돌아오거나 나중에 주문 결제 페이지를 다시 열 때에만 확인됩니다.

고급

Enable Logging: Save debug logs. 로그는 WooCommerce > Status > Logs에 있으며, 소스는 wcp_razorpay_payment입니다. 오류와 경고는 항상 기록되며, 이 옵션은 디버그 세부 정보를 추가합니다. 키, 서명, 고객 연락처 정보는 기록되지 않습니다. 기본값: 끔.

Delete Data on Uninstall: Remove the plugin settings and logs when the plugin is deleted (orders are never touched). 기본값: 끔.

체크아웃

고객은 결제 수단(기본값 UPI, Cards, NetBanking)을 선택하고 주문합니다. 플러그인은 주문 총액과 통화에 맞는 Razorpay 주문을 만들고 주문 결제 페이지를 엽니다. 그곳에서 Razorpay Checkout 팝업이 자동으로 열리며, 고객의 이름, 이메일, 전화번호가 미리 입력되어 있습니다. 팝업을 닫은 경우 고객은 Pay Now를 클릭해 다시 열거나 Cancel order를 클릭할 수 있습니다. 테스트 모드에서는 페이지에 Razorpay Test mode: no real money will be charged.가 표시됩니다.

결제가 성공하면 플러그인은 Razorpay 서명을 확인하고, Razorpay API에서 결제 정보를 가져와 금액과 통화를 주문과 비교합니다. 주문은 Razorpay가 확인한 후에만 결제 완료로 표시됩니다. 그런 다음 고객은 주문 접수 페이지를 봅니다. 서명은 유효하지만 그 시점에 결제 정보를 가져올 수 없으면 주문은 “보류 중” 상태가 되고, 웹훅이 나중에 이를 확인합니다.

고객이 미결제 주문으로 돌아오면, 플러그인은 해당 주문의 Razorpay 주문을 재사용합니다. 예를 들어 고객이 브라우저를 닫아 웹훅이 없는 경우처럼 그 Razorpay 주문이 이미 결제되어 있다면, 플러그인은 두 번째 결제를 요청하는 대신 그 결제를 적용합니다.

고객이 볼 수 있는 메시지:

Payment was cancelled. Please click "Pay Now" to try again.
Your session has expired. Please click "Pay Now" to try again.
We could not verify your payment. 금액이 청구되었다면 Razorpay가 확인하는 즉시 주문이 자동으로 업데이트된다는 내용이 추가로 표시됩니다.
Razorpay is temporarily unavailable. Please try again in a few minutes.
Razorpay could not accept this payment: 뒤에 Razorpay가 제공한 사유가 이어집니다.
The order amount is too small to be paid with Razorpay.
Razorpay Checkout could not be loaded. 팝업 스크립트가 차단되었습니다. 메시지는 연결을 확인하고, 콘텐츠 차단기를 끄고, 페이지를 새로 고치라고 안내합니다.

이 결제 수단은 클래식 체크아웃, 체크아웃 블록, Pay for order 페이지에서 작동합니다. WooCommerce High-Performance Order Storage(HPOS)와 호환됩니다.

플러그인은 일회성 결제만 지원합니다. 구독이나 정기 결제, 저장된 카드, Razorpay Magic Checkout, Payment Links, Route(분할 결제)는 지원하지 않으며, 혜택이나 할부 가능 금액을 보여 주는 위젯도 없습니다.

주문 및 환불

Order statuses

Pending payment: Razorpay 주문이 생성되었지만 고객이 아직 결제하지 않았습니다. 각 Razorpay 주문은 금액과 모드와 함께 주문 메모에 추가됩니다.

Processing or Completed: 결제가 캡처되고 확인되었습니다. 결제 후 WooCommerce의 기본 상태입니다. 주문 메모에는 Razorpay 결제 ID, 금액, 그리고 확인 방식(콜백, 웹훅 또는 돌아왔을 때의 확인)이 표시됩니다. 거래 ID는 Razorpay 결제 ID(pay_...)입니다.

On hold: 다음 경우에 설정되며, 각각 주문 메모가 함께 기록됩니다. 결제가 승인만 된 경우(Authorize Only), 결제된 금액이나 통화가 주문과 일치하지 않는 경우, 취소된 주문에 대해 결제가 캡처된 경우, 또는 그 시점에 Razorpay API로 결제를 확인할 수 없는 경우입니다. 이미 “보류 중” 상태인 주문도 메모를 받습니다.

Failed: 대기 중인 주문에 대해 payment.failed 웹훅이 도착했습니다. 메모에는 Razorpay 오류가 표시됩니다. 고객은 다시 결제할 수 있으며, 승인되었거나 캡처된 결제가 이미 있는 주문은 변경되지 않습니다.

Cancelled: 고객이 Cancel order를 클릭했거나, 주문이 쇼핑몰 관리자에 의해 또는 WooCommerce 재고 유지 시간 초과로 취소되었습니다. 나중에 도착한 결제는 주문을 자동으로 다시 열지 않습니다. 승인된 결제는 캡처되지 않으며, 캡처된 결제는 검토를 위해 주문을 “보류 중” 상태로 둡니다.

이미 결제된 주문에 추가 결제가 도착해도 주문은 변경되지 않습니다. 의도한 결제가 아니라면 메모가 Razorpay Dashboard에서 환불하라고 안내합니다.

캡처(Authorize Only)

“보류 중” 주문을 열고, Order actions에서 Capture Razorpay payment를 선택한 뒤 업데이트 버튼을 클릭합니다. 결제는 승인된 모드에서 캡처되고 주문은 결제 완료가 됩니다. Razorpay가 거부하면 주문 메모에 Razorpay capture failed:와 사유가 표시됩니다. Razorpay Dashboard에서 한 캡처는 웹훅을 통해 주문을 완료합니다.

환불

주문을 열고 Refund를 클릭하여 금액을 입력한 뒤, 결제 수단 이름과 함께 Refund via를 클릭합니다. 전액 및 부분 환불을 지원합니다. 환불은 결제가 이루어진 모드의 키로 전송됩니다. Razorpay가 환불을 수락하지 않으면 WooCommerce는 사유와 함께 Razorpay refund failed:를 표시하며, 환불은 기록되지 않습니다. 성공한 환불은 Razorpay 환불 ID, 금액, 상태와 함께 주문 메모에 추가됩니다.

Razorpay Dashboard에서 이루어진 환불은 웹훅으로 도착하며, 한 번만 기록되고 상품 재고는 다시 늘리지 않은 채 WooCommerce 환불로 주문에 기록됩니다. 다른 통화이거나 환불 가능 금액을 초과하는 Dashboard 환불은 자동으로 기록되지 않으며, 메모가 수동으로 기록하라고 안내합니다.

라이선스 키

플러그인은 vibefox.net에서 받은 VibeFox 라이선스 키로 작동합니다. 라이선스 블록은 WooCommerce > Settings > Payments > Razorpay 상단에 있습니다. 키를 License key에 붙여 넣고 Activate를 클릭합니다. 블록에는 상태가 표시되며, 예를 들어 라이선스가 유효한 기한과 도메인이 나타납니다. Check now로 상태를 다시 확인하고, Change key로 다른 키를 입력하며, Remove key로 이 사이트에서 키를 제거합니다. Manage licenses and domains in your account 링크는 vibefox.net 계정을 엽니다.

키 하나는 도메인 하나에서 작동합니다. 사이트에서 키를 제거해도 도메인 슬롯은 해제되지 않습니다. vibefox.net 계정에서 슬롯을 해제하세요.

활성 키가 없으면 체크아웃에서 Razorpay가 고객에게 표시되지 않습니다. 그래도 결제가 시작되면 고객은 This payment method is not available. Please choose another one.를 보게 됩니다. 로그인한 쇼핑몰 관리자에게는 결제 수단이 (unlicensed — visible to admins only) 표시와 함께 계속 보여서, 키를 구매하기 전에 플러그인을 설정하고 테스트할 수 있습니다. 플러그인 페이지와 WooCommerce 페이지에 알림이 나타납니다. 기존 주문은 영향을 받지 않습니다. 이미 시작된 결제는 계속 확인되며, 환불도 작동합니다.

라이선스가 만료되어도 플러그인은 계속 작동하지만, 업데이트와 지원에는 갱신이 필요합니다. 상태는 백그라운드에서 자동으로 다시 확인됩니다.

문제 해결

체크아웃에 Razorpay가 표시되지 않음: 라이선스가 활성 상태인지, Enable/Disable이 켜져 있는지, 현재 모드에 두 키가 모두 있는지 확인하세요. 테스트 모드에서는 Test Key ID와 Test Key Secret, 운영 모드에서는 Live Key ID와 Live Key Secret이 필요합니다. 키가 없으면 설정 페이지에 알림이 표시됩니다.

결제는 완료되었지만 주문이 Pending payment 상태로 남아 있음: 웹훅이 작동하지 않습니다. Razorpay Dashboard에서 사용 중인 모드(테스트 또는 운영)에 웹훅이 있는지, URL이 설정에 표시된 것과 정확히 같은지, 그리고 다섯 개 이벤트가 모두 선택되어 있는지 확인하세요. Webhook Secret이 Razorpay의 시크릿과 같은지도 확인하세요. 고객이 주문 결제 페이지를 다시 열면 주문도 확인됩니다.

웹훅 응답이 Webhook secret not configured인 경우: Webhook Secret이 비어 있습니다. Razorpay 웹훅의 시크릿을 입력하세요. Razorpay는 나중에 이벤트를 다시 보냅니다.

웹훅 응답이 Invalid signature 또는 Missing signature인 경우: 설정의 시크릿이 Razorpay 웹훅의 시크릿과 다릅니다. 두 곳에 같은 시크릿을 입력하세요.

웹훅 응답이 Retry later인 경우: 플러그인이 Razorpay API로 캡처를 확인하지 못했거나, 같은 순간 다른 요청이 주문을 업데이트하고 있었습니다. Razorpay가 이벤트를 자동으로 다시 보냅니다.

주문이 On hold 상태인 경우: 주문 메모를 읽으세요. 결제가 승인만 되었거나(Capture Razorpay payment를 사용), 금액이나 통화가 주문과 일치하지 않았거나, 취소된 주문에 결제가 도착했거나, 그 시점에 Razorpay API로 확인할 수 없어 웹훅을 기다리는 상황입니다.

고객이 결제할 때 오류를 봄: 주문 메모를 열거나 WooCommerce > Status > Logs에서 소스 wcp_razorpay_payment를 확인하세요. Enable Logging이 꺼져 있어도 오류는 기록됩니다. 잘못된 키는 결제 수단을 지금 사용할 수 없다는 메시지를 보여 줍니다. Razorpay의 다른 사유는 Razorpay could not accept this payment: 뒤에 표시됩니다.

팝업이 열리지 않음: Razorpay Checkout 스크립트가 콘텐츠 차단기나 연결에 의해 차단되었습니다. 고객은 메시지를 보고 페이지를 새로 고칠 수 있습니다.

환불 실패: 환불은 결제가 이루어진 모드의 키를 사용합니다. 그 모드의 키가 입력되어 있는지 확인하고, 오류 메시지의 사유를 읽으세요.

라이선스 블록에 오류가 표시됨: 블록의 메시지를 따르세요. 예를 들어 키가 다른 도메인에서 이미 사용 중이라면, vibefox.net 계정에서 슬롯을 해제하고 Check now를 클릭하세요. 사이트 주소가 바뀌었다면 Check now를 클릭하여 새 도메인에 대해 키를 활성화하세요. 라이선스 서버에 연결할 수 없으면 플러그인은 마지막으로 확인된 상태로 계속 작동합니다.

삭제

플러그인을 비활성화해도 모든 데이터는 유지됩니다. 제거하려면 Plugins 페이지에서 비활성화한 후 삭제하세요. 이 플러그인의 라이선스 키와 라이선스 상태는 항상 제거됩니다. 게이트웨이 설정과 로그(순환된 로그 파일을 포함한 로그 파일과 데이터베이스의 로그 항목)는 Delete Data on Uninstall이 켜져 있었을 때에만 제거됩니다. 그렇지 않으면 나중에 다시 설치할 때를 위해 유지됩니다. 주문과 주문의 Razorpay 데이터는 절대 삭제되지 않습니다. 기존 주문은 결제 메모와 거래 ID를 유지합니다.

Razorpay는 해당 소유자의 상표입니다. 이 플러그인은 Razorpay와 제휴하거나 Razorpay의 승인을 받은 것이 아닙니다.