뒤로

VibeFox Razorpay for PrestaShop — 도움말

요구 사항

PrestaShop: 8.0 ~ 9.x.

PHP: 8.0 이상. 모듈은 이전 PHP 버전에서는 설치되지 않습니다.

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

VibeFox 라이선스 키: vibefox.net에서 구매합니다. 키 하나는 도메인 하나에서 사용할 수 있습니다.

설치

1. 백오피스에서 Modules > Module Manager로 이동하여 Upload a module을 클릭합니다. 모듈의 ZIP 파일을 선택합니다.

2. 업로드가 완료되면 Configure를 클릭하거나, 나중에 모듈 목록에서 VibeFox Razorpay Payment를 찾아 Configure를 클릭합니다.

3. Configure 페이지 상단의 라이선스 블록에 있는 License key에 VibeFox 라이선스 키를 입력하고 Activate를 클릭합니다(라이선스 키 참조).

4. Test Key ID와 Test Key Secret을 입력하고, Razorpay Dashboard에서 웹훅을 설정한 다음 그 secret을 입력합니다(설정 참조).

5. Enable/Disable을 켜고 Save를 클릭합니다. Test mode를 켠 상태에서 테스트 결제를 진행합니다. 준비가 되면 운영용 키를 입력하고 Test mode를 끕니다.

설치 시 모듈은 두 가지 주문 상태, Razorpay payment authorized와 Razorpay payment on hold를 만듭니다. PrestaShop은 모든 통화, 국가 및 고객 그룹에 대해 새 결제 모듈을 제공합니다. Payment > Preferences에서 이를 제한할 수 있습니다.

설정

모든 설정은 모듈 페이지에 있습니다: Modules > Module Manager > VibeFox Razorpay Payment > Configure. 각 섹션에는 자체 Save 버튼이 있으며, 이 버튼은 페이지 전체를 저장합니다. 입력란 위에는 알림이 표시됩니다. 현재 모드의 키가 없음(이 경우 Razorpay는 체크아웃에 표시되지 않습니다), 테스트 모드에서 Key ID가 rzp_test_로 시작하지 않음 또는 운영 모드에서 rzp_live_로 시작하지 않음, 테스트 모드가 켜져 있음, 웹훅 secret이 비어 있음, 쇼핑몰의 기본 통화가 INR이 아니어서 Razorpay 계정에서 International Payments가 필요함 등입니다. Key ID와 함께 붙여넣은 공백은 저장할 때 제거됩니다.

Razorpay

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

Title: 고객이 체크아웃에서 보는 결제 수단 이름입니다. 주문에 저장되는 결제 수단 이름이기도 합니다. 기본값: UPI, Cards, NetBanking. 필수: 비어 있으면 Enter a title for the payment method. 오류가 발생합니다.

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: 테스트 모드의 키를 사용하므로 실제 금액이 청구되지 않습니다. 기본값: 켬. 실제 결제를 받으려면 끄십시오. 주문의 결제, 캡처, 환불은 항상 해당 주문이 결제된 모드의 키를 사용하므로, 나중에 모드를 바꿔도 기존 주문에는 영향이 없습니다.

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입니다.

저장된 secret은 다시 표시되지 않습니다. 입력란은 비어 있으며 Saved — leave empty to keep it.을 표시합니다. 변경하려는 경우에만 새 값을 입력하십시오.

저장된 secret 지우기: Test Key Secret, Live Key Secret 또는 Webhook Secret을 선택하고 Save를 클릭하면 삭제됩니다. 입력란이 비어 있으면 저장된 값이 유지됩니다.

결제

Payment Action: 금액을 언제 청구할지 정합니다. 기본값: Authorize & Capture.

Authorize & Capture: 고객에게 즉시 청구됩니다. Razorpay가 승인된 결제를 보고하면 모듈이 이를 캡처합니다.
Authorize Only: 금액은 예약만 됩니다. 주문은 Razorpay payment authorized 상태로 생성되며, 나중에 주문 페이지의 Razorpay 블록에 있는 Capture Razorpay payment 또는 Razorpay Dashboard에서 결제를 캡처합니다. 제때 캡처되지 않은 승인 결제는 Razorpay가 자동으로 환불합니다.

웹훅

웹훅은 고객이 결제 직후 브라우저를 닫아도 결제를 확인하고, Razorpay Dashboard에서 이루어진 환불을 기록합니다. Razorpay Dashboard에서 Account & Settings > Webhooks로 이동하여 테스트 모드용 웹훅 하나와 운영 모드용 웹훅 하나를 추가합니다. 이 섹션의 Webhook URL에 표시된 URL을 사용하십시오. 친숙한 URL을 사용하는 경우 https://your-shop/module/wcp_razorpay_payment/webhook과 같은 형태이며, /en/ 같은 언어 코드가 포함될 수도 있습니다. 설정에 표시된 대로 정확히 복사하십시오. Razorpay에서 원하는 secret을 입력하고 다음 이벤트를 선택합니다(이 섹션에도 나열되어 있습니다):

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

Webhook Secret: 웹훅을 만들 때 입력한 secret입니다. 모듈에는 테스트와 운영용을 위한 입력란이 하나뿐이므로, 테스트 웹훅과 운영 웹훅에 같은 secret을 사용하십시오. 유효한 서명이 없는 웹훅은 거부됩니다. 웹훅이 없으면 고객이 팝업에서 돌아왔을 때 또는 고객이 같은 장바구니에 대해 나중에 결제를 다시 시작했을 때에만 결제가 확인됩니다.

고급

Enable Logging: 로그는 모듈 폴더의 logs/razorpay_p_debug.log.php에 기록됩니다. 이 파일은 웹에서 열 수 없습니다. 오류와 경고는 항상 기록됩니다. 이 옵션은 디버그 세부 정보를 추가합니다. 키, 서명, 고객 연락처 정보는 기록되지 않습니다. 기본값: 끔.

Log: 로그의 크기와 최근 항목을 표시합니다. Clear log를 클릭하면 비워집니다.

Delete Data on Uninstall: 켜면 모듈을 제거할 때 모듈 설정과 로그가 삭제됩니다. 주문, Razorpay 거래 및 환불, 모듈의 주문 상태는 항상 유지됩니다. 기본값: 끔.

체크아웃

결제 단계에서 고객은 결제 수단(기본값은 UPI, Cards, NetBanking)을 선택하고 확인합니다. 모듈은 장바구니 총액과 통화에 맞춰 Razorpay 주문을 만들고, 쇼핑몰의 Razorpay payment 페이지를 엽니다. 그 페이지에서 Razorpay Checkout 팝업이 자동으로 열리며, 고객의 이름, 이메일, 전화번호가 이미 입력되어 있습니다. Razorpay에는 결제가 Cart와 장바구니 번호로 표시됩니다. 이 단계에서는 아직 PrestaShop 주문이 없습니다. 팝업이 닫히면 고객은 Pay Now를 클릭해 팝업을 다시 열거나, Choose another payment method를 클릭해 체크아웃으로 돌아갈 수 있습니다. 장바구니는 유지됩니다. 테스트 모드에서는 페이지에 Razorpay Test mode: no real money will be charged.가 표시됩니다.

결제가 성공하면 고객에게 Please wait while we process your payment...가 표시됩니다. 모듈은 Razorpay 서명을 검증하고, Razorpay API에서 결제 정보를 가져와 금액과 통화를 장바구니와 비교합니다. Razorpay가 확인한 후에만 주문이 결제 완료로 표시됩니다. 그런 다음 주문이 생성되고, 고객은 표준 주문 확인 페이지를 보게 됩니다. 서명은 유효하지만 그 시점에 결제 정보를 가져올 수 없으면 주문은 Razorpay payment on hold 상태로 생성되며, 웹훅이 나중에 이를 확인합니다.

고객이 같은 장바구니에 대해 결제를 다시 시작하면, 금액, 통화, 모드가 바뀌지 않은 경우 모듈은 기존 Razorpay 주문을 재사용합니다. 그 Razorpay 주문이 이미 결제된 경우(예: 고객이 브라우저를 닫았고 웹훅이 없는 경우), 모듈은 두 번째 결제를 요청하는 대신 그 결제로 주문을 생성합니다. 장바구니 총액이 바뀌었다면 새 Razorpay 주문이 생성됩니다.

고객이 볼 수 있는 메시지:

Your session has expired. Please click "Pay Now" to try again.
We could not verify your payment. 금액이 청구되었다면 Razorpay가 결제를 확인하는 즉시 주문이 자동으로 업데이트된다는 내용이 추가됩니다.
This payment method is not available right now. Please choose another payment method. 키가 없거나 잘못되었습니다.
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. 팝업 스크립트가 차단되었습니다. 메시지는 연결을 확인하고, 콘텐츠 차단기를 끄고, 페이지를 다시 로드하라고 요청합니다.

웹훅은 쇼핑몰이 유지 보수 모드인 동안에도 작동하며, 쇼핑몰의 국가 제한에 의해 차단되지 않습니다.

모듈은 일회성 결제만 지원합니다. 구독이나 정기 결제, 저장된 카드, Razorpay Magic Checkout, Payment Links 또는 Route(분할 결제)를 지원하지 않으며, 혜택 또는 부담 가능성 위젯도 지원하지 않습니다.

주문 및 환불

주문 상태

No order yet: 고객이 결제하지 않았거나 Razorpay가 아직 결제를 확인하지 않았습니다. 장바구니만 존재합니다. 결제 시도가 실패해도 주문은 생성되지 않으며, 고객은 다시 결제할 수 있습니다.

Payment accepted: 결제가 캡처되고 확인되었습니다. 결제는 Razorpay 결제 ID(pay_...)를 거래 ID로 하여 기록되며, 메모에는 결제 ID, 금액, 확인 방법(callback, webhook, sync 또는 admin)이 표시됩니다.

Razorpay payment authorized: 결제는 승인만 되었습니다(Authorize Only). 주문을 완료하려면 캡처하십시오.

Razorpay payment on hold: 다음 경우에 설정되며, 각 경우에 메모가 함께 기록됩니다. 결제된 금액 또는 통화가 장바구니와 일치하지 않는 경우(예: 결제를 시작한 후 장바구니가 변경됨), 취소된 주문에 대해 결제가 캡처된 경우, 또는 그 시점에 Razorpay API로 결제를 검증할 수 없는 경우입니다. 주문 통화로 결제된 금액은 주문에 기록됩니다. 주문을 확인한 후 처리하거나 결제를 환불하십시오.

Cancelled: 취소된 주문에 대해 나중에 도착한 결제는 주문을 자동으로 다시 열지 않습니다. 승인된 결제는 캡처되지 않고 메모만 추가되며, 캡처된 결제는 주문을 Razorpay payment on hold 상태로 둡니다. 이미 결제된 주문에 대해 같은 결제의 반복 알림이 도착해도, 주문을 그 후에 취소했더라도 아무것도 변경되지 않습니다.

Refunded: 결제가 전액 환불되었습니다.

이미 결제된 주문에 추가 결제가 들어오면 주문은 변경되지 않습니다. 의도한 것이 아니라면 메모가 Razorpay Dashboard에서 환불하라고 안내합니다. 결제된 주문에 대해 늦게 도착한 payment.failed는 메모만 추가합니다.

Razorpay 결제 블록

주문 페이지에는 Razorpay payment 블록이 표시되며, 여기에는 Razorpay 결제 ID, Razorpay 주문, 결제 상태, Paid / refunded(Razorpay가 청구한 금액과 환불된 금액), 테스트 결제용 Test mode 배지, 환불 내역, 주문의 Razorpay notes가 포함됩니다. 캡처와 환불에는 주문을 편집할 권한이 필요하며, 모듈 설정에 접근할 권한은 필요하지 않습니다.

캡처(Authorize Only)

Razorpay payment authorized 상태의 주문을 열고, Razorpay 블록에서 Capture Razorpay payment를 클릭한 후 확인합니다. 결제는 승인된 모드에서 캡처되며, 주문은 Payment accepted가 됩니다. Razorpay가 거부하면 블록과 메모에 사유와 함께 Razorpay capture failed:가 표시됩니다. Razorpay Dashboard에서 이루어진 캡처는 웹훅을 통해 주문을 완료합니다.

환불

Razorpay 블록에 금액을 입력합니다(아직 환불되지 않은 금액이 자동으로 채워집니다). 필요하다면 사유를 입력하고 Refund via Razorpay를 클릭합니다. Refund this amount through Razorpay? This cannot be undone. 질문을 확인하십시오. 전액 및 부분 환불이 지원됩니다. 환불은 Razorpay가 청구한 금액과 통화로 이루어지므로, 금액 불일치가 있었다면 주문 총액이 아니라 고객이 실제로 결제한 금액까지 환불할 수 있습니다. 더 큰 금액을 입력하면 Invalid refund amount: at most와 함께 그 상한 금액이 표시됩니다. 환불은 결제가 이루어진 모드의 키로 전송됩니다. Razorpay가 환불을 수락하지 않으면 블록에 Razorpay refund failed:와 사유가 표시되며, 환불은 기록되지 않습니다. 환불이 성공하면 Razorpay 환불 ID, 금액, 상태와 함께 환불 내역과 메모에 추가됩니다. 전액 환불은 주문을 Refunded로 설정합니다. 부분 환불은 상태를 바꾸지 않습니다. 환불은 결제가 캡처된 후에 가능합니다.

모듈은 크레딧 슬립을 만들지 않습니다. 주문 페이지의 PrestaShop 표준 환불 버튼은 Razorpay를 통해 금액을 돌려주지 않습니다.

Razorpay Dashboard에서 이루어진 환불은 웹훅으로 도착하며, 환불 내역과 메모에 한 번만 기록됩니다. 주문이 전액 환불되면 상태는 Refunded가 됩니다. 다른 통화의 Dashboard 환불이거나 환불 가능 금액을 초과한 경우에는 자동으로 기록되지 않으며, 메모가 수동으로 기록하라고 안내합니다.

라이선스 키

모듈은 vibefox.net에서 받은 VibeFox 라이선스 키로 작동합니다. 라이선스 블록 License — VibeFox Razorpay Payment은 Modules > Module Manager > VibeFox Razorpay Payment > Configure 페이지에서 설정 위에 있는 첫 번째 블록입니다. License key에 키를 붙여넣고 Activate를 클릭합니다. 그 후 블록에는 키가 마스킹되어 표시되고, 상태(예: 라이선스가 유효한 날짜와 도메인)와 함께 상태를 다시 확인하는 Check now, 다른 키를 입력하는 Change key, 이 쇼핑몰에서 키를 제거하는 Remove key 버튼이 나타납니다. 그 아래에는 Product: presta-payment-razorpay 줄과 vibefox.net 계정을 여는 Manage licenses and domains in your account 링크가 있습니다. 모듈의 Configure 권한이 있는 직원만 키를 변경할 수 있습니다. 블록의 텍스트는 백오피스 언어를 따릅니다(영어와 러시아어 포함).

키가 허용되지 않으면 블록에 이유가 표시됩니다. 예: Key not found, This key belongs to another product, Domain limit reached, 또는 날짜와 함께 License expired on. 쇼핑몰 주소를 변경한 후나 계정에서 도메인 슬롯을 해제한 후에는 Check now를 클릭하십시오. 라이선스 서버에 연결할 수 없으면 모듈은 마지막으로 확인된 상태로 계속 작동합니다.

키 하나는 도메인 하나에서 작동합니다. 멀티스토어 설정에서도 메인 쇼핑몰의 도메인입니다. 쇼핑몰에서 키를 제거해도 도메인 슬롯은 해제되지 않습니다. vibefox.net 계정에서 슬롯을 해제하십시오.

활성 키가 없으면 체크아웃에서 고객에게 Razorpay가 표시되지 않습니다. 그래도 결제가 시작되면 고객에게 This payment method is not available. Please choose another one.가 표시됩니다. PrestaShop storefront는 백오피스에 로그인한 사실을 알지 못하므로, 결제 수단은 본인에게도 숨겨집니다. 키를 구매하기 전에 모듈을 설정할 수는 있지만 체크아웃에서 테스트할 수는 없습니다. Modules > Module Manager의 Alerts 탭에 알림이 표시됩니다. 기존 주문은 영향을 받지 않습니다. 이미 시작된 결제는 여전히 확인되며, 캡처와 환불도 계속 작동합니다.

라이선스가 만료되어도 모듈은 계속 작동하지만, 업데이트와 지원에는 갱신이 필요합니다. 상태는 백오피스에서 작업하는 동안 자동으로 다시 확인됩니다. 키를 입력한 후 처음 14일 동안은 하루에 한 번, 그 후에는 일주일에 한 번입니다. 크론 작업은 필요하지 않습니다. 모듈을 제거하거나 초기화하면 라이선스 키와 라이선스 상태는 항상 삭제됩니다.

문제 해결

체크아웃에 Razorpay가 나타나지 않음: 라이선스가 활성 상태인지, Enable/Disable이 켜져 있는지, 현재 모드에 두 키가 모두 있는지 확인하십시오. 테스트 모드에서는 Test Key ID와 Test Key Secret, 운영 모드에서는 Live Key ID와 Live Key Secret이 필요합니다. 키가 없으면 설정 페이지에 알림이 표시됩니다. Payment > Preferences에서 장바구니 통화, 고객의 국가, 고객 그룹에 대해 모듈이 허용되어 있는지 확인하십시오.

결제는 완료되었지만 주문이 생성되지 않음: 웹훅이 작동하지 않습니다. Razorpay Dashboard에서 사용 중인 모드(Test 또는 Live)에 웹훅이 있는지, URL이 Webhook URL에 표시된 것과 정확히 같은지, 그리고 다섯 개 이벤트가 모두 선택되어 있는지 확인하십시오. Webhook Secret이 Razorpay의 secret과 같은지도 확인하십시오. 고객이 팝업에서 돌아왔거나 같은 장바구니에 대해 결제를 다시 시작하면 주문이 생성됩니다.

웹훅이 Webhook secret not configured로 응답함: Webhook Secret이 비어 있습니다. Razorpay 웹훅의 secret을 입력하십시오. Razorpay는 나중에 이벤트를 다시 보냅니다.

웹훅이 Invalid signature 또는 Missing signature로 응답함: 설정의 secret이 Razorpay 웹훅의 secret과 다릅니다. 테스트 웹훅과 운영 웹훅 모두에 대해 두 곳에 같은 secret을 입력하십시오.

웹훅이 Retry later로 응답함: 모듈이 Razorpay API로 캡처를 확인하지 못했거나, 주문을 생성할 수 없었거나(예: 모듈이 비활성화됨), 또는 같은 시점에 다른 요청이 장바구니를 업데이트하고 있었습니다. Razorpay는 이벤트를 자동으로 다시 보냅니다. 사유는 Log에 있습니다.

브라우저에서 웹훅 URL이 Method not allowed를 표시함: 정상입니다. 이 URL은 Razorpay의 요청만 받습니다.

주문이 Razorpay payment on hold 상태임: Razorpay 블록의 메모를 확인하십시오. 금액 또는 통화가 장바구니와 일치하지 않았거나, 결제가 취소된 주문에 대해 도착했거나, 그 시점에 Razorpay API로 검증할 수 없어 웹훅을 기다리고 있는 상태입니다.

고객이 결제 시 오류를 봄: 모듈 페이지의 Log 필드를 확인하십시오. Enable Logging이 꺼져 있어도 오류는 기록됩니다. 잘못된 키는 해당 결제 수단을 지금 사용할 수 없다는 메시지를 표시합니다. Razorpay의 다른 사유는 Razorpay could not accept this payment: 뒤에 표시됩니다.

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

캡처 또는 환불이 모드 관련 메시지와 함께 실패함: 결제는 테스트 모드 또는 운영 모드에서 이루어졌지만, 해당 모드의 키가 설정되지 않았습니다. 키를 입력한 다음 다시 시도하십시오.

제거

Modules > Module Manager로 이동하여 VibeFox Razorpay Payment 옆의 메뉴를 열고 Uninstall을 선택합니다. 이 모듈의 라이선스 키와 라이선스 상태는 항상 삭제됩니다. Delete Data on Uninstall이 켜져 있으면 모듈 설정과 로그가 삭제됩니다. 꺼져 있으면 나중에 다시 설치할 수 있도록 모든 설정이 보관됩니다. Razorpay 거래와 환불, 그리고 Razorpay payment authorized 및 Razorpay payment on hold 주문 상태는 항상 유지되므로, 이전에 결제된 주문도 다시 설치한 후 캡처하고 환불할 수 있습니다. 기존 주문은 결제 메모와 거래 ID를 유지합니다.

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