VibeFox PayU India for OpenCart — 도움말
요구 사항
OpenCart: 3.0.x(3.0.5.0에서 테스트됨) 또는 4.0.2 이상(4.1.0.3에서 테스트됨).
PHP: 8.0 이상.
통화: 인도 루피(INR). PayU India는 루피로만 청구합니다. 쇼핑몰에 INR 통화가 있어야 합니다(System > Localisation > Currencies). 다른 통화의 주문에서는 체크아웃에 이 결제 수단이 표시되지 않습니다.
전화번호: PayU는 모든 결제에 전화번호를 요구합니다. 주문에 전화번호가 포함되도록 체크아웃의 Telephone 필드를 유지하세요. OpenCart 4 체크아웃은 기본적으로 전화번호를 묻지 않습니다. 주문에 전화번호가 없으면, 확장 기능이 확인 단계에서 자체 Phone 필드를 표시합니다(「체크아웃」 참조).
PayU India 계정: PayU Dashboard > Payment Gateway > Key Salt Details의 Merchant Key와 Merchant Salt(v1)가 필요합니다. 테스트 키 쌍을 보려면 대시보드를 Test Mode로 전환하세요. Salt v2가 아니라 Salt v1을 사용합니다.
쇼핑몰의 인터넷 접근: 선택 사항인 웹훅에 필요합니다. 웹훅이 없으면 고객이 PayU에서 돌아올 때 주문이 확인됩니다.
VibeFox 라이선스 키: vibefox.net에서 구매합니다. 키 하나는 도메인 하나에서만 작동합니다.
설치
다운로드 파일은 두 OpenCart 버전용 패키지가 들어 있는 하나의 zip 파일입니다. 컴퓨터에서 압축을 푸세요. 여기에는 README.txt, OpenCart 3 패키지 wcp_payu_india_payment-oc3-(version).ocmod.zip, OpenCart 4 패키지 wcp_payu_india_payment.ocmod.zip이 들어 있습니다. 사용 중인 OpenCart 버전의 패키지만 설치하세요. 라이선스 키는 두 버전에서 같습니다.
OpenCart 3
1. 관리자 화면에서 Extensions > Installer로 이동하여 Upload를 클릭하고 wcp_payu_india_payment-oc3-(version).ocmod.zip 파일을 선택합니다. 이 확장 기능은 OCMOD 수정 사항이 없으므로 Extensions > Modifications를 새로 고칠 필요가 없습니다. 설치 도구 대신, 이 패키지의 upload 폴더 내용을 쇼핑몰의 루트 폴더에 복사할 수도 있습니다.
2. Extensions > Extensions로 이동하여 유형으로 Payments를 선택합니다. VibeFox PayU India Payment Gateway를 찾아 Install(초록색 + 버튼)을 클릭합니다. 관리자 사용자에게 결제 확장 기능 목록을 수정할 권한이 있어야 합니다.
3. Edit(연필 버튼)을 클릭하여 설정 페이지를 엽니다. 페이지 상단의 라이선스 블록에 있는 License key에 VibeFox 라이선스 키를 붙여 넣고 Activate를 클릭합니다(라이선스 키 참조).
4. 테스트용 Merchant Key와 Salt, 그리고 라이브용 Merchant Key와 Salt를 입력합니다(설정 참조).
5. 권장: PayU Dashboard > Webhooks에서, 성공 및 실패한 결제에 대해 설정 페이지에 표시된 웹훅 URL을 추가합니다.
6. Mode를 선택하고, Enable/Disable을 켠 다음 Save를 클릭합니다. Test 모드에서 결제를 테스트한 뒤 Live로 전환하세요.
OpenCart 4
1. 관리자 화면에서 Extensions > Installer로 이동하여 Upload를 클릭하고 wcp_payu_india_payment.ocmod.zip 파일을 선택합니다. 파일 이름을 바꾸지 마세요. OpenCart 4는 파일 이름에서 확장 기능 코드를 가져오므로, 이름을 바꾼 패키지는 작동하지 않습니다.
2. 설치된 확장 기능 목록의 같은 페이지에 패키지가 표시됩니다. 그 옆의 Install(초록색 + 버튼)을 클릭합니다.
3. Extensions > Extensions로 이동하여 유형으로 Payments를 선택합니다. VibeFox PayU India Payment Gateway를 찾아 Install(초록색 + 버튼)을 클릭한 다음 Edit(연필 버튼)를 클릭합니다.
4. OpenCart 3의 3~6단계와 같이 라이선스 키, PayU 자격 증명, 웹훅을 입력합니다. 설정 페이지와 입력란은 두 버전에서 같습니다. 반환 URL과 웹훅 URL만 다릅니다(「반환 URL 및 웹훅 URL」 참조).
새로 설치하면 결제 수단은 꺼진 상태이며 Test 모드가 선택되어 있습니다.
설정
모든 설정은 확장 기능 페이지에 있습니다: Extensions > Extensions > Payments > VibeFox PayU India Payment Gateway > Edit. 섹션은 왼쪽에 나열되며, 목록 아래의 Save 버튼은 페이지 전체를 저장합니다. 설정 위쪽에서는 현재 모드의 키나 salt가 없을 때 경고하고, Test 모드에서는 테스트 모드 활성: 결제는 test.payu.in으로 전달되며 실제 금액은 청구되지 않습니다.를 표시하며, 쇼핑몰의 기본 통화가 INR이 아니면 오류를 표시합니다. 이 경우 고객이 INR로 결제할 때에만 체크아웃에 게이트웨이가 표시됩니다. 확장 기능을 수정할 권한이 없으면 페이지에 설정은 표시되지만 저장할 수 없습니다.
저장할 때 Title은 비워 둘 수 없고 128자를 넘을 수 없으며, Sort Order는 정수여야 합니다(음수 허용). Total은 0 이상의 숫자여야 하며, 지역(Geo Zone)과 주문 상태가 존재해야 합니다. 그렇지 않으면 아무것도 저장되지 않습니다. 키와 salt에서는 공백과 줄 바꿈이 제거됩니다. 붙여 넣은 공백이 포함된 salt는 모든 PayU 응답의 검증을 실패하게 만들기 때문입니다. 현재 모드의 키와 salt 없이 결제 수단을 활성화하면, 저장 후 페이지가 경고합니다.
PayU India
이 섹션은 짧은 안내로 시작합니다. 카드, NetBanking, UPI, 전자지갑은 PayU가 호스팅하는 결제 페이지에서 이용할 수 있으며, 결과는 유효한 PayU 서명이 있을 때만 받아들여집니다. 루피만 지원합니다.
Enable/Disable: Enable PayU India Payment Gateway는 결제 수단을 켜거나 끕니다. 기본값: 꺼짐.
Title: 체크아웃 중 고객이 보는 결제 수단 제목입니다. 주문에 저장되는 결제 수단 이름이기도 합니다. 기본값: PayU India. 필수, 최대 128자.
Description: Confirm Order 단계에서 확인 버튼 위에 고객에게 표시되는 텍스트입니다. 기본값: Pay securely via Credit/Debit Card, NetBanking, UPI, or Wallets through PayU.
Sort Order: 체크아웃에서 결제 수단 목록 안의 PayU India 위치입니다. 비워 두거나 정수를 입력합니다.
Geo Zone: 선택한 지역 내의 결제 주소에 대해서만 PayU India를 제공합니다. 기본값: All zones. 지역은 System > Localisation > Geo Zones에서 설정합니다.
Total: PayU India를 제공하기 위해 주문이 도달해야 하는, 쇼핑몰 기본 통화 기준의 체크아웃 합계입니다. 비워 두면 모든 금액에 대해 PayU India를 제공합니다.
API 자격 증명
Merchant Key와 Merchant Salt(v1)는 PayU Dashboard > Payment Gateway > Key Salt Details에서 복사합니다. 테스트 키 쌍을 얻으려면 대시보드를 Test Mode로 전환하세요. 이 섹션에는 Open the PayU Dashboard 링크가 있습니다.
Mode: 새 결제가 사용하는 PayU 환경입니다.
이미 시작된 결제는 시작된 모드를 유지합니다. 그 결과는 해당 모드의 키와 salt로 확인되며, 환불도 해당 모드의 키와 salt로 전송됩니다. 모드를 전환한 후에도 마찬가지입니다.
Live Merchant Key: 라이브 PayU Merchant Key입니다.
Live Merchant Salt (v1): 라이브 PayU Merchant Salt(v1)입니다. 요청에 서명하고 PayU 응답을 검증하는 데 사용됩니다. 비밀로 유지하세요.
Test Merchant Key: 테스트용 PayU Merchant Key입니다. Test 모드에서만 사용됩니다.
Test Merchant Salt (v1): 테스트용 PayU Merchant Salt(v1)입니다. Test 모드에서만 사용됩니다.
저장된 salt는 다시 표시되지 않습니다. 필드는 비어 있으며 저장됨 — 유지하려면 비워 두세요.라고 표시됩니다. 값을 바꾸려는 경우에만 새 값을 입력하세요. 저장된 salt를 제거하려면 필드 아래의 Clear the saved salt on save에 체크한 뒤 Save를 클릭하세요.
반환 URL 및 웹훅 URL
Return URL: OpenCart 3에서는 https://your-store/index.php?route=extension/payment/wcp_payu_india_payment/back 형태이고, OpenCart 4에서는 https://your-store/index.php?route=extension/wcp_payu_india_payment/payment/wcp_payu_india_payment.back 형태입니다. 결제마다 자동으로 PayU에 전송되므로 설정할 것은 없습니다.
Webhook URL: OpenCart 3에서는 https://your-store/index.php?route=extension/payment/wcp_payu_india_payment/webhook 형태이고, OpenCart 4에서는 https://your-store/index.php?route=extension/wcp_payu_india_payment/payment/wcp_payu_india_payment.webhook 형태입니다. 선택 사항이지만 권장됩니다. 고객이 돌아오기 전에 브라우저를 닫아도 결제를 확인할 수 있습니다. 성공 및 실패한 결제에 대해 PayU Dashboard > Webhooks에 추가하세요. 설정 페이지에 표시된 그대로 URL을 복사하세요. 인터넷에서 접근 가능해야 합니다(기본 인증이나 방화벽 차단이 없어야 합니다). 쇼핑몰의 유지 보수 모드는 이를 차단하지 않습니다.
웹훅은 고객의 반환과 동일한 서명된 결과를 전달합니다. 유효한 PayU hash가 없는 웹훅은 거부됩니다.
주문
OpenCart는 Confirm Order 단계에서 상태 없이 주문(누락된 주문)을 만듭니다. 주문은 PayU가 올바르게 서명된 결과를 보낸 후에야 상태를 받습니다. 실패하거나 취소된 결제는 주문을 상태 없이 두며, 고객은 장바구니가 유지된 채 체크아웃으로 돌아갑니다. 아래의 각 필드에는 OpenCart 주문 상태가 나열됩니다.
Order Status After Payment: Verify Payment가 켜져 있을 때 verify_payment로 확인된, INR로 예상 금액과 일치하는 성공한 결제입니다. 기본값: Processing.
Awaiting PayU Payment Status: PayU가 결제를 보류 중으로 보고한 경우(UPI collect, NetBanking 진행 중)입니다. PayU가 확인하면 주문은 결제 후 상태를 받습니다. 기본값: Pending.
On Hold (Review) Status: PayU가 수동 검토가 필요한 성공한 결제를 보고한 경우입니다(주문 상태 참조). 기본값: Pending. OpenCart에는 On hold 상태가 없기 때문입니다. System > Localisation > Order Statuses에서 직접 상태를 만들고 여기서 선택할 수 있습니다.
Payment Error Status: 보류 중이던 결제가 이후 PayU에 의해 실패로 보고되었습니다. 기본값: Failed.
Refunded Status: 결제된 모든 금액이 주문 페이지에서 환불된 후 설정됩니다. 기본값: Refunded.
Cancelled Order Status: 쇼핑몰이 취소된 주문에 사용하는 상태입니다. 이러한 주문에 대해 받은 결제는 결제 완료로 표시되는 대신 검토 상태가 됩니다. 확장 기능은 이 상태를 설정하지 않습니다. 기본값: Canceled.
고급
Verify Payment: 성공한 모든 결제를 PayU verify_payment API로 다시 확인합니다. 권장됩니다. 확인을 완료할 수 없으면 주문은 결제 완료로 표시되지 않고 검토 상태가 됩니다. 기본값: 켜짐.
Enable Logging: 문제 해결을 위해 게이트웨이 이벤트를 OpenCart 로그 폴더(storage/logs)의 payu_p_debug.log.php에 기록합니다. 이 파일은 웹에서 열 수 없습니다. 오류와 경고는 항상 기록되며, 이 옵션은 모든 결제 양식과 모든 PayU 결과 같은 다른 이벤트를 추가합니다. 키, salt, 고객의 개인 데이터는 절대 기록되지 않습니다. 기본값: 꺼짐.
Log: 로그의 크기와 최신 항목을 보여 줍니다. Clear log를 클릭하면 로그가 비워집니다.
Delete data on uninstall: 확장 기능을 제거할 때 게이트웨이 설정과 로그를 삭제합니다. 주문과 PayU 거래 기록은 절대 삭제되지 않습니다. 기본값: 꺼짐.
가져오기 / 내보내기
Export: Download JSON은 설정을 JSON 파일로 저장합니다. salt는 내보내지 않습니다.
Import: 이전에 내보낸 JSON을 붙여 넣고 Import를 클릭하면 설정이 복원됩니다. 저장된 salt는 유지됩니다.
체크아웃
Payment Method 단계에서 고객은 결제 수단을 선택합니다(기본값은 PayU India). Confirm Order 단계에서 고객은 쇼핑몰의 설명을 봅니다. OpenCart는 이 단계에서 아직 상태가 없는 주문을 만듭니다. OpenCart 4에서는 고객이 결제 수단 블록의 Choose 버튼을 눌러 Payment method options 창에서 결제 수단을 선택하고, 체크아웃 페이지 하단의 Confirm Order를 클릭합니다. 주문에 전화번호가 없으면 OpenCart 4의 확인 블록에 Phone 필드도 표시되며, 안내 문구 PayU India requires the phone number of the payer.가 함께 나타납니다. 여기에 입력한 번호는 PayU로 전송되고 다음 시도를 위해 보관됩니다. 주문의 전화번호가 우선합니다. 고객이 Confirm Order를 클릭하면 확장 기능은 통화, 현재 모드의 자격 증명, 주문의 전화번호를 확인합니다. 전화번호가 없으면 고객은 PayU India에는 전화번호가 필요합니다. 전화번호를 입력한 후 다시 시도해 주세요.가 표시된 단계에 머뭅니다. 그렇지 않으면 확장 기능은 주문 합계에 대해 INR로 서명된 결제 요청을 만들고, 브라우저가 이를 즉시 PayU가 호스팅하는 결제 페이지로 보냅니다. 페이지에는 결제를 완료하기 위해 PayU로 이동합니다.가 표시되며, 브라우저가 자동으로 진행하지 않는 경우를 대비해 Pay with PayU 버튼이 나타납니다. PayU 페이지에서 고객은 카드, NetBanking, UPI 또는 전자지갑으로 결제합니다.
Confirm Order를 클릭할 때마다, 주문 번호로 시작하고 금액 및 모드와 함께 저장되는 고유한 PayU 거래 ID(txnid)로 새 시도가 시작됩니다. OpenCart 3에서는 Confirm Order 단계가 표시될 때마다 새 주문을 만들고, OpenCart 4에서는 체크아웃의 주문을 업데이트하므로, 그곳에서는 새 시도가 같은 주문을 결제합니다. 같은 주문의 이전 결제 페이지가 아직 열려 있는 상태에서 이루어진 결제도 계속 받아들여집니다. 같은 장바구니의 다른 주문이 이미 결제되었거나, PayU 대기 중이거나, 검토 중이면 고객은 바로 성공 페이지로 이동하며 새 결제 양식은 만들어지지 않습니다. 장바구니를 변경하면(수량 변경 포함) 새 장바구니로 간주되며, 자체 결제가 필요합니다.
PayU는 고객과 함께 결과를 반환하며, 설정되어 있다면 웹훅으로도 보냅니다. 결과는 결제가 시작된 모드의 키와 salt로 만든 유효한 PayU hash가 있고, 그 주문에 대해 발급된 거래 ID인 경우에만 받아들여집니다. Verify Payment가 켜져 있으면 성공한 결과는 PayU verify_payment API로도 확인됩니다. 결제된 금액은 시도의 금액 및 주문 합계와 INR 기준으로 paisa(파이사)까지 정확히 같아야 합니다. 주문은 PayU가 이 방식으로 확인한 후에만 결제 완료로 표시되며, 그 후 OpenCart의 표준 방식으로 상태를 받고, 일반 주문 이메일이 발송되며 재고가 업데이트됩니다. 확장 기능은 다음 PayU 결과를 처리합니다:
성공 또는 보류 중인 결제 후 고객은 OpenCart 주문 성공 페이지를 봅니다. 보류 중인 결제는 PayU 결제가 보류 중입니다. PayU가 결과를 확인하는 즉시 주문이 업데이트됩니다. 다시 결제하실 필요는 없습니다.를 추가하고, 검토 중인 주문에는 결제를 검토하고 있습니다. 추가로 필요한 것이 있으면 연락드리겠습니다.를 추가하며, 결제 오류 또는 취소 상태의 미결제 주문은 PayU 결제가 완료되지 않았습니다. 이 주문에 대해 문의해 주세요.를 표시합니다.
결제가 실패한 후 고객은 다음 메시지와 함께 체크아웃으로 돌아갑니다: 결제가 완료되지 않았습니다. 다시 시도하거나 다른 결제 수단을 선택해 주세요., 결제가 취소되었습니다. 다시 시도할 수 있습니다., 또는 결과를 확인할 수 없었던 경우 결제 결과를 확인할 수 없었습니다. 계좌에 청구가 되었다면, 다시 결제하기 전에 문의해 주세요. 고객이 돌아왔을 때 결과가 아직 처리 중이면, 페이지에 PayU 결제를 확인하고 있습니다. 결제를 완료하셨다면 주문이 곧 업데이트됩니다. 다시 결제하지 마세요.가 표시되며, Check again 및 Back to checkout 버튼이 나타납니다. OpenCart 4에서는 체크아웃 메시지가 체크아웃 페이지 상단에 표시됩니다.
OpenCart 4는 성공 페이지가 표시될 때까지 주문을 체크아웃에 유지합니다. 그 사이에 결제 없이 주문이 닫힌 경우(예: 보류 중이던 결제가 실패했거나 주문을 취소한 경우), 고객은 Your previous order was cancelled or its payment failed. Please confirm the order again. 메시지와 함께 체크아웃으로 돌아갑니다. 주문이 결제 완료된 후 스토어에서 취소되거나 환불된 경우, 메시지는 Your previous order was cancelled or refunded by the store. Please confirm the order again to pay with a new order.입니다. 주문이 이전 장바구니에 대해 이미 결제되었고 그 후 장바구니가 변경된 경우, 메시지는 Your previous order has already been paid. Your cart has changed since — please confirm the order again to pay for the current cart.입니다. 다음 Confirm Order에서 새 주문에 대한 결제가 이루어집니다. 닫힌 주문은 결제 완료된 것으로 표시되지 않습니다.
OpenCart는 결제 확장 기능의 요청을 통과시키므로, 쇼핑몰이 유지 보수 모드에 있을 때도 웹훅은 작동합니다(OpenCart 4에서는 확장 기능이 이를 위한 자체 시작 액션을 추가하며, 이를 통해 고객이 PayU에서 돌아오는 것도 허용됩니다).
이 확장 기능은 INR로만 청구하며 다중 통화 처리(MCP)를 지원하지 않습니다. 저장된 카드나 토큰화, 정기 결제, 사이트 내(seamless) 카드 양식, EMI 또는 혜택 관리, PayU 원클릭 결제는 없습니다.
주문 및 환불
주문 상태
상태 없음(누락된 주문): 고객이 PayU로 이동했지만 결제하지 않았거나, 결제가 실패했거나 취소되었거나, PayU가 아직 결제를 확인하지 않았습니다. Sales > Orders에서 이러한 주문은 Order Status 필터를 Missing Orders로 설정했을 때만 표시됩니다.
Order Status After Payment(기본값 Processing): 결제가 확인되었습니다. 메모에는 PayU payment successful. Transaction ID: …, Mode: …, Bank: …가 표시됩니다.
Awaiting PayU Payment Status(기본값 Pending): UPI 또는 NetBanking 결제가 아직 PayU에서 보류 중입니다. PayU가 확인하면 주문은 결제 완료 상태를 받습니다.
On Hold (Review) Status(기본값 Pending): 결제된 금액이나 통화가 주문과 다르거나, verify_payment API에 연결할 수 없거나 아직 결제를 확인하지 않았거나, Cancelled Order Status 상태의 주문에 대한 결제가 도착했습니다. 메모에 이유가 나타납니다. PayU Dashboard에서 거래를 확인한 후 결제 완료 상태를 설정하거나, 주문을 취소하고 결제를 환불하세요. 확인만 실패한 경우에는 다음 결과 전달 시 주문이 자동으로 결제 완료 처리됩니다.
Payment Error Status(기본값 Failed): 보류 중이던 결제가 이후 거부되었거나 취소되었습니다. 이후 성공한 결과가 오면 주문은 여전히 결제됩니다.
Refunded Status(기본값 Refunded): 결제된 모든 금액이 확장 기능을 통해 환불되었습니다.
이미 결제 완료된 주문에 대해 PayU가 또 다른 성공한 결제를 보고하면 주문은 변경되지 않고, 메모에서 중복 결제를 PayU Dashboard에서 환불하라고 요청합니다. 이미 결제된 장바구니의 다른 주문에 대한 결제는 해당 주문을 상태 없이 두며, 결제된 주문에 메모가 추가됩니다. 다른 결제 수단으로 전환된 주문에 대한 PayU 결제에는 메모만 추가됩니다.
메모는 주문의 History에 있는 항목이며, 고객에게는 보이지 않습니다.
VibeFox PayU India Payment Gateway 탭
Sales > Orders에서 PayU India로 결제된 주문을 엽니다. 주문 페이지 하단, History와 Additional 옆의 VibeFox PayU India Payment Gateway 탭에는 PayU transaction ID (mihpayid), Store transaction ID (txnid), 테스트 결제에 대한 Test mode 배지가 붙은 Environment, PayU Status, 결제의 Mode / bank, Paid / refund requested (INR) 금액, 환불 양식, 환불 기록, 주문의 PayU notes가 표시됩니다. 검토 중인 주문의 경우 결제를 검토하라는 알림이 표시됩니다. 이 탭은 확장 기능에 접근 권한이 있는 사용자에게 표시됩니다.
환불
VibeFox PayU India Payment Gateway 탭에서 Amount(아직 환불되지 않은 금액이 자동으로 채워짐)를 입력하고, 필요하면 Reason (optional)을 입력한 뒤 Refund via PayU를 클릭합니다. Refund this amount through PayU? This cannot be undone. 질문을 확인하세요. 전액 및 부분 환불을 지원하며, 금액은 0보다 커야 하고 PayU가 청구한 금액 중 남은 환불 가능액을 넘을 수 없습니다. 확장 기능을 수정할 권한이 필요합니다(System > Users > User Groups에서 설정). 환불은 결제가 이루어진 모드의 키와 salt로 PayU 환불 API를 통해 전송되므로, 해당 자격 증명이 설정되어 있어야 합니다. 주문당 한 번에 하나의 PayU 요청만 실행됩니다. PayU가 환불을 거부하면 탭에 PayU refund failed:와 PayU의 메시지가 표시되며, 환불은 기록되지 않습니다.
PayU는 환불을 대기열에 넣고 비동기로 처리합니다. 고객은 보통 5~7영업일 안에 돈을 받습니다. 환불 기록과 메모에는 금액, PayU 요청 ID, 사유가 표시됩니다. 전액 환불을 하면 고객에게 알리지 않고 상품을 재고로 되돌리지 않은 채, 수동 상태 변경과 마찬가지로 주문이 Refunded Status로 설정됩니다. 부분 환불은 상태를 바꾸지 않습니다. 환불은 PayU가 결제의 거래 ID를 보고한 후에 사용할 수 있습니다. 확장 기능은 나중에 환불 상태를 확인하지 않습니다.
Sales > Returns의 상품 반품은 PayU를 통해 돈을 돌려주지 않습니다. PayU Dashboard에서 한 환불은 OpenCart에 동기화되지 않습니다.
라이선스 키
이 확장 기능은 vibefox.net에서 받은 VibeFox 라이선스 키로 작동합니다. License — VibeFox PayU India Payment Gateway 라이선스 블록은 Extensions > Extensions > Payments > VibeFox PayU India Payment Gateway > Edit의 첫 번째 블록이며, 설정 위에 있습니다. 키를 License key에 붙여 넣고 Activate를 클릭합니다. 그 후 블록에는 마스킹된 키, 상태(예: 라이선스 유효 기간 종료일과 도메인), 그리고 다음 버튼이 표시됩니다: 상태를 다시 확인하는 Check now, 다른 키를 입력하는 Change key, 이 쇼핑몰에서 키를 제거하는 Remove key. 그 아래에는 Product: opencart-payment-payu-india 줄과, vibefox.net 계정을 여는 Manage licenses and domains in your account 링크가 있습니다. 키를 변경할 수 있는 사람은 이 확장 기능의 Modify 권한이 있는 관리자 사용자뿐입니다. 블록의 텍스트는 관리자 화면의 언어를 따릅니다(영어와 러시아어 포함).
키가 받아들여지지 않으면 블록에 이유가 표시됩니다. 예: Key not found, This key belongs to another product, Domain limit reached, 또는 날짜가 붙은 License expired on. 쇼핑몰 주소가 바뀐 후, 또는 계정에서 도메인 슬롯을 해제한 후에는 Check now를 클릭하세요. 라이선스 서버에 연결할 수 없으면 확장 기능은 마지막으로 확인된 상태로 계속 작동합니다.
키 하나는 도메인 하나에서 작동합니다. 즉, OpenCart 설정의 쇼핑몰 주소입니다. 쇼핑몰에서 키를 제거해도 도메인 슬롯은 해제되지 않습니다. vibefox.net 계정에서 슬롯을 해제하세요.
유효한 키가 없으면 체크아웃에서 PayU India가 고객에게 표시되지 않습니다. 그래도 결제가 시작되면 고객은 This payment method is not available. Please choose another one.를 봅니다. 같은 브라우저에서 관리자 화면에 로그인한 관리자 사용자에게는 쇼핑몰에서 결제 수단이 (unlicensed — visible to admins only) 표시와 함께 계속 보이므로, 키를 구매하기 전에 확장 기능을 설정하고 테스트할 수 있습니다. OpenCart 4에서는 이 미리보기를 사용할 수 없습니다. 스토어는 관리자 로그인을 확인하지 않으므로, 활성 키가 없으면 결제 수단은 모든 사용자에게 숨겨집니다. Edit 페이지를 한 번 열면 관리자 Dashboard에 알림이 나타납니다. ×로 닫으면 7일 동안 숨겨집니다. 기존 주문에는 영향이 없습니다. 이미 시작된 결제는 여전히 확인되며, 환불도 작동합니다.
라이선스가 만료되어도 확장 기능은 계속 작동하지만, 업데이트와 지원에는 갱신이 필요합니다. 관리자 Dashboard 또는 Edit 페이지를 열면 상태가 자동으로 다시 확인됩니다. 키를 입력한 후 처음 14일 동안은 하루에 한 번, 그 후에는 일주일에 한 번 확인합니다. cron 작업은 필요하지 않습니다. 확장 기능을 제거하면 라이선스 키와 라이선스 상태는 항상 삭제됩니다.
문제 해결
PayU India가 체크아웃에 표시되지 않음: 라이선스가 활성 상태인지, Enable/Disable이 켜져 있는지, 선택된 Mode의 키와 salt가 입력되었는지 확인하세요. 고객이 INR로 결제하는지, 결제 주소가 선택된 Geo Zone에 속하는지, 주문이 설정의 Total에 도달했는지 확인하세요. 설정 페이지는 자격 증명이 없거나 쇼핑몰 통화가 INR이 아닐 때 경고를 표시합니다.
결제는 완료되었지만 주문에 상태가 없음: 고객이 쇼핑몰로 돌아오지 않았고 웹훅도 도착하지 않았습니다. 설정 페이지의 웹훅 URL을 성공 및 실패한 결제에 대해 PayU Dashboard > Webhooks에 추가하고, 인터넷에서 접근 가능한지 확인하세요.
웹훅이 invalid_signature로 응답함: PayU hash가 일치하지 않았습니다. 결제 모드의 키와 salt가 올바른지, 그리고 Salt v2가 아니라 Salt v1을 사용하고 있는지 확인하세요. 테스트 salt로 서명된 실결제 결과나 그 반대의 경우도 거부됩니다. 아무것도 변경되지 않습니다.
웹훅이 not_configured로 응답함: 결제가 시작된 모드의 키나 salt가 없습니다. 입력하세요. PayU가 웹훅을 다시 시도합니다.
웹훅이 verify_unavailable로 응답함: verify_payment API가 아직 결제를 확인하지 못했습니다. 주문은 검토 상태가 되며, 다음 전달 때 다시 확인합니다.
웹훅이 busy 또는 retry로 응답함: 같은 장바구니에 대한 고객의 반환이 같은 순간에 처리 중이었거나, 주문 상태를 설정할 수 없었습니다. PayU가 웹훅을 다시 시도합니다. 이유는 로그에 기록됩니다.
웹훅이 ignored_unknown_txnid로 응답함: 이 거래는 이 쇼핑몰이 시작한 것이 아닙니다. 예를 들어 같은 PayU 계정을 사용하는 다른 쇼핑몰입니다. 아무것도 변경되지 않습니다.
고객이 PayU India에는 전화번호가 필요하다는 메시지를 봄: 주문에 전화번호가 없습니다. 체크아웃의 Telephone 필드를 유지하세요. OpenCart 4에서는 고객이 확인 블록의 Phone 필드에 번호를 입력할 수 있습니다.
고객이 This payment method is not available. Please reload the checkout page.:를 봄: 그 사이 결제 수단이 꺼졌거나, 자격 증명이 없거나, 체크아웃이 주문과 더 이상 일치하지 않습니다. 고객은 체크아웃을 새로 고쳐야 합니다.
주문이 검토 상태임: VibeFox PayU India Payment Gateway 탭의 메모를 읽으세요. 이유는 금액이나 통화 불일치, 실패하거나 보류 중인 검증, 또는 취소된 주문에 대한 결제입니다.
환불이 실패함: PayU transaction ID not found for this order.는 주문에 아직 PayU 결제가 없다는 뜻입니다. This payment was made in Test mode, but the Merchant Key/Salt of that mode are not set.(또는 Live mode)는 먼저 그 모드의 자격 증명을 입력해야 한다는 뜻입니다. Invalid refund amount: at most … INR can be refunded.는 금액이 결제의 남은 금액을 초과했다는 뜻입니다.
로그에 정보가 너무 적음: 오류와 경고는 항상 기록됩니다. 모든 결제 양식과 PayU 결과도 보려면 Enable Logging을 켜세요.
개발자용: 결제 요청에 서명하기 전에, 확장 기능은 요청 필드와 주문을 담아 OpenCart 이벤트 payu_p_request_fields를 발생시킵니다. 이 이벤트로 키, 거래 ID, 금액, 반환 URL을 바꿀 수는 없습니다.
제거
Extensions > Extensions로 이동하여 유형으로 Payments를 선택하고, VibeFox PayU India Payment Gateway 옆의 Uninstall(빨간색 − 버튼)을 클릭합니다. 이 확장 기능의 라이선스 키와 라이선스 상태는 항상 제거됩니다. OpenCart는 확장 기능 자체의 설정을 항상 제거합니다: Enable/Disable, Sort Order, Geo Zone, Total, 그리고 Orders 섹션의 주문 상태(재설치 시 기본값으로 돌아감). 확장 기능의 OpenCart 이벤트도 제거됩니다(OpenCart 4에서는 이벤트와 시작 액션도 제거되며, 시작 액션은 유지 보수 모드에서도 웹훅과 고객의 복귀를 허용합니다). Delete data on uninstall이 켜져 있으면 나머지 게이트웨이 설정(제목, 설명, 모드, 키, salt, 결제 검증, 로깅)과 로그가 삭제됩니다. 꺼져 있으면 나중에 재설치할 때를 위해 보관됩니다. PayU 거래 기록과 환불 요청은 항상 보관되므로, 재설치 후에도 이전에 결제된 주문을 환불할 수 있습니다. 기존 주문은 결제 메모를 유지합니다.
OpenCart 4에서 확장 기능 파일까지 제거하려면, 제거 후 Extensions > Installer로 이동하여 설치된 확장 기능 목록에서 VibeFox PayU India Payment Gateway 옆의 Uninstall(주황색 − 버튼)을 클릭한 다음, 업로드한 패키지를 삭제하려면 Delete(빨간색 휴지통 버튼)를 클릭합니다.
PayU는 해당 소유자의 상표입니다. 이 확장 기능은 PayU와 제휴하거나 PayU의 승인을 받은 것이 아닙니다.
