뒤로

VibeFox Cashfree for PrestaShop — 도움말

요구 사항

PrestaShop: 8.0 ~ 9.x.

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

HTTPS: Cashfree는 https:// 주소로만 웹훅을 전송합니다. HTTPS가 없어도 고객이 쇼핑몰로 돌아올 때 결제는 확인되지만, 운영을 시작하기 전에 HTTPS를 활성화하십시오.

Cashfree 계정: Cashfree 계정의 App ID와 Secret Key가 필요하며, 테스트(샌드박스)와 운영 환경 각각에 대해 따로 준비해야 합니다. 또한 Cashfree Merchant Dashboard에 웹훅을 등록해야 합니다(구성 참조). Secret Key는 웹훅 검증에도 사용되므로 별도의 웹훅 시크릿은 없습니다. 장바구니 통화는 Cashfree 계정에서 활성화되어 있어야 합니다.

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

설치

1. 관리자 페이지에서 Modules > Module Manager로 이동하여 Upload a module을 클릭합니다. 모듈의 ZIP 파일을 선택합니다.

2. 업로드가 끝나면 Configure를 클릭하거나, 나중에 모듈 목록에서 VibeFox Cashfree Payments를 찾아 Configure를 클릭합니다.

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

4. Sandbox App ID와 Sandbox Secret Key를 입력하고, Cashfree Merchant Dashboard에 웹훅을 추가한 다음(구성 참조), Enable/Disable을 켜고 Save를 클릭한 후 결제를 테스트합니다.

5. 준비가 되면 운영용 App ID와 Secret Key를 입력하고, Sandbox Mode를 끈 다음 Save를 클릭합니다.

설치 시 모듈은 주문 상태 Cashfree payment on hold를 생성합니다. PrestaShop은 모든 통화, 국가, 고객 그룹에 대해 새 결제 모듈을 제공합니다. 이러한 설정은 Payment > Preferences에서 제한할 수 있습니다.

구성

모든 설정은 모듈 페이지에 있습니다: Modules > Module Manager > VibeFox Cashfree Payments > Configure. 각 섹션에는 전체 페이지를 저장하는 자체 Save 버튼이 있습니다. 입력란 위에는 Cashfree가 결제를 확인한 후에만 주문이 생성된다는 설명이 표시됩니다. 결제 방법이 활성화되어 있으면 선택한 모드의 API 키가 없을 때 페이지가 경고를 표시하며(이 경우 결제 방법은 체크아웃에서 숨겨집니다), 샌드박스 모드가 켜져 있는 동안에는 Sandbox mode is on: customers see a test checkout and no real money is charged.가 표시됩니다. 선택한 모드의 키 없이 활성화된 결제 방법을 저장하면, 키를 입력하기 전까지 체크아웃에서 숨겨진 상태로 남는다는 경고가 표시됩니다.

Cashfree Payments

Enable/Disable: Enable Cashfree Payments는 결제 방법을 켜거나 끕니다. 기본값: off.

Title: 고객이 체크아웃에서 보는 결제 방법 이름입니다. 주문에 저장되는 결제 방법 이름이기도 합니다. 기본값: Cashfree Payments. 필수.

Description: 체크아웃에서 결제 방법 아래에 표시되는 문구입니다. 기본값: Pay securely via Card, UPI, Net Banking, Wallet via Cashfree.

Mode and API keys

App ID와 Secret Key는 Cashfree Merchant Dashboard의 Developers > API Keys에서 확인할 수 있습니다. 테스트 키와 운영 키는 서로 다릅니다.

Sandbox Mode: 테스트에 Cashfree 샌드박스를 사용합니다. 실제 금액은 청구되지 않으며, 체크아웃의 결제 방법 아래에 SANDBOX MODE - no real payments will be processed.가 표시됩니다. 기본값: on. 실제 결제를 위해서는 끄십시오.

Sandbox App ID: Cashfree 테스트 환경의 App ID입니다.

Sandbox Secret Key: Cashfree 테스트 환경의 Secret Key입니다.

App ID: Cashfree 운영 환경의 App ID입니다.

Secret Key: Cashfree 운영 환경의 Secret Key입니다.

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

Clear saved secrets: Secret Key를 체크하고 Save를 클릭하면 삭제됩니다. 입력란을 비워 두면 저장된 값이 유지됩니다.

결제는 생성된 환경을 그대로 유지합니다. 해당 결제의 웹훅은 그 환경의 키로 검증되고, 상태 확인과 환불 요청도 그 환경의 키로 전송됩니다. 따라서 운영으로 전환한 후 샌드박스 결제가 정산될 때까지 샌드박스 키를 계속 입력해 두십시오.

Webhook

웹훅은 결제가 완료되었는지, 실패했는지, 환불되었는지를 쇼핑몰에 알려줍니다. Cashfree Merchant Dashboard에서 Developers > Webhooks로 이동하여, 이 섹션의 Webhook URL에 표시된 주소를 Payment 및 Refund 이벤트와 함께 추가하십시오. 친숙한 URL을 사용하면 다음과 같은 형태입니다: https://your-shop/module/wcp_cashfree_payment/webhook. 설정에 표시된 주소를 정확히 그대로 복사하십시오. HTTPS를 사용하는 쇼핑몰에서는 모듈이 결제할 때마다 이 주소를 Cashfree에도 전달합니다. 쇼핑몰이 HTTPS를 사용하지 않으면 이 섹션에 경고가 표시됩니다.

모듈은 다음 이벤트를 처리합니다(이 섹션에도 나열되어 있습니다):

PAYMENT_SUCCESS_WEBHOOK: 결제가 성공했습니다. 금액 및 통화 확인 후 주문이 생성됩니다.
PAYMENT_FAILED_WEBHOOK: 결제가 실패했습니다. 주문은 생성되지 않으며, 고객은 다시 결제할 수 있습니다.
PAYMENT_USER_DROPPED_WEBHOOK: 고객이 결제를 중단했습니다. 주문은 생성되지 않으며, 고객은 다시 결제할 수 있습니다.
REFUND_STATUS_WEBHOOK and AUTO_REFUND_STATUS_WEBHOOK: 환불 상태가 변경되었습니다. 환불 ID, 금액, 상태가 포함된 메모가 추가되며, 환불 내역에 새 상태가 표시됩니다.

Cashfree는 모든 웹훅을 Secret Key로 서명합니다. 유효한 서명이 없는 웹훅은 거부됩니다. 웹훅은 결제가 이루어진 환경의 Secret Key로 서명되어야 하므로, 샌드박스 키로 운영 결제가 확인되는 일은 없습니다. 이 쇼핑몰에서 시작하지 않은 결제(예: 같은 Cashfree 계정의 다른 쇼핑몰)에 대한 서명된 웹훅은 수신 확인 후 무시됩니다. 웹훅이 없으면 주문은 고객이 결제 후 쇼핑몰로 돌아왔을 때에만 생성됩니다. 고객이 결제 후 브라우저를 닫으면, 웹훅(또는 같은 장바구니에 대한 다음 결제 시도)만 주문을 생성할 수 있습니다.

Advanced

API Version: 사용할 Cashfree API 버전입니다.

v1 (2022-09-01): 기본값.
v2 (2023-08-01): 최신 API 버전.

Order ID prefix: Cashfree 주문 ID는 접두사 + PrestaShop 장바구니 ID로 만들어집니다. 같은 장바구니에 대한 새 시도에는 끝에 번호가 붙습니다(예: 123-2). 필드 설명에 표시된 이 쇼핑몰의 자동 접두사를 사용하려면 비워 두십시오. 같은 Cashfree 계정에 연결된 쇼핑몰마다 서로 다른 접두사를 사용하십시오. 영문자, 숫자, "_", "-"만 사용할 수 있으며 최대 20자입니다. 그 밖의 문자는 저장할 때 경고와 함께 제거됩니다.

Debug log: 오류는 항상 기록됩니다. 켜면 Cashfree API 호출과 웹훅도 모듈 폴더의 logs/cashfree_p_debug.log.php에 기록됩니다. 이 파일은 웹에서 열 수 없습니다. 키와 고객 데이터는 절대 기록되지 않습니다. 기본값: off.

Log: 로그의 크기와 최신 항목을 표시합니다. Clear log를 클릭하면 로그를 비울 수 있습니다.

Delete Data on Uninstall: 켜면 모듈을 제거할 때 Cashfree 설정과 모듈 로그가 삭제됩니다. 주문, 해당 주문의 Cashfree 거래 및 환불, 그리고 Cashfree payment on hold 주문 상태는 항상 유지되므로 기존 주문은 계속 작동합니다. 기본값: off.

체크아웃

결제 단계에서 고객은 결제 방법(기본값 Cashfree Payments)을 선택하고 확인합니다. 모듈은 장바구니 합계에 대해 장바구니 통화로 Cashfree 주문을 생성하고, Redirecting to Cashfree for payment...를 표시하는 결제 페이지를 열어 Cashfree 체크아웃을 불러옵니다. 자동으로 열리지 않으면 고객은 Pay Now를 클릭할 수 있습니다. Cashfree 체크아웃에서 고객은 Cashfree 계정에서 활성화된 모든 방법(예: 카드, UPI, 넷뱅킹, 전자지갑)으로 결제합니다. 고객의 이메일과 청구 전화번호가 Cashfree로 전달됩니다. 이 시점에는 아직 주문이 존재하지 않습니다.

결제 후 고객은 쇼핑몰로 돌아옵니다. 주문은 Cashfree가 결제를 확인한 후에만 결제 완료로 표시됩니다. 서명된 웹훅을 통해서든, 고객이 돌아올 때 서버에서 Cashfree로 보내는 요청을 통해서든 확인됩니다. 그 후 주문이 생성되고, 고객은 표준 주문 확인 페이지를 봅니다. UPI 앱에서 돌아오는 경우처럼 다른 브라우저에서 돌아와도 작동합니다. 은행이 아직 결제를 확인하지 않았다면 Payment confirmation 페이지에 Your payment is being processed by the bank. We will update the order as soon as Cashfree confirms it — please do not pay again.와 Check again 버튼이 표시되며, 은행이 결제를 확인하는 즉시 웹훅이 주문을 생성합니다.

결제가 실패하거나 고객이 결제하지 않고 Cashfree 페이지를 떠나면, 고객은 체크아웃으로 돌아가 The Cashfree payment was not completed. Please try again or choose another payment method.를 보게 됩니다. 장바구니는 유지됩니다. 고객이 다시 시도하면 열려 있는 Cashfree 결제가 재사용됩니다. 장바구니 합계가 바뀌었거나 세션이 곧 만료되는 경우 이전 Cashfree 주문이 닫히고 새 주문이 생성되므로, 장바구니가 두 번 결제될 수 없습니다. 장바구니가 Cashfree에서 이미 결제되었지만 기록되지 않았다면, 다음 시도에서 다시 청구하는 대신 주문이 생성됩니다.

Cashfree가 결제를 시작할 수 없으면 고객은 체크아웃에 머무르며 We could not start the Cashfree payment. Please try again or choose another payment method.를 보게 됩니다. 기술적인 원인은 로그에 기록됩니다. Cashfree 최소 금액(통화 1단위. BHD, JOD, KWD, OMR은 0.01, TND는 0.1)보다 낮은 장바구니 합계는 Cashfree로 결제할 수 없으며, 해당 장바구니에는 결제 방법이 표시되지 않습니다.

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

이 모듈은 Cashfree 체크아웃에서의 일회성 결제만 처리합니다. 저장된 카드, 구독 또는 정기 결제, 별도의 승인 및 캡처, Cashfree 오퍼 위젯, Cashfree를 통한 COD 또는 결제 링크는 지원하지 않으며, 통화 환전도 없습니다. 장바구니는 장바구니 통화로 청구됩니다.

주문 및 환불

Order statuses

No order yet: 고객이 Cashfree로 이동했으나 결제하지 않았거나, 결제가 실패했거나, 은행에서 결제가 아직 대기 중인 경우입니다. 장바구니만 존재합니다.

Payment accepted: 결제가 확인되었습니다. 결제는 Cashfree 결제 ID를 거래 ID로 하여 기록되며, 메모에 거래 ID와 결제 수단 그룹(예: upi 또는 credit_card)이 표시됩니다.

Cashfree payment on hold: Cashfree가 장바구니 합계와 다른 결제 금액 또는 통화를 보고했습니다(예: 결제 시작 후 다른 탭에서 장바구니가 변경된 경우). 메모에는 예상 금액과 실제 수신 금액, 거래 ID가 표시됩니다. Cashfree 대시보드에서 결제를 확인한 다음, 주문을 처리하거나 결제를 환불하십시오.

Refunded: 모듈을 통해 결제가 전액 환불되었습니다.

주문이 취소된 후 도착한 결제도 기록되며, 금액이 청구되었기 때문에 주문은 다시 결제 완료 상태가 됩니다. 결제 완료된 주문은 이후 실패한 결제로 인해 되돌아가지 않습니다.

Cashfree payment block

주문 페이지에는 거래 ID, Cashfree 주문, 결제 상태, 결제 금액과 환불 금액, 샌드박스 결제에 대한 Sandbox 배지, 환불 내역, 주문의 Cashfree notes가 포함된 Cashfree payment 블록이 표시됩니다.

Refunds

Cashfree payment 블록에 금액을 입력하고(아직 환불되지 않은 금액이 자동으로 채워집니다), 필요하면 사유를 입력한 다음 Refund via Cashfree를 클릭합니다. Refund this amount through Cashfree? This cannot be undone. 질문에 확인하십시오. 전액 및 부분 환불이 지원됩니다. 주문을 편집할 권한이 필요하며, 모듈 페이지에 접근할 권한은 필요하지 않습니다. 환불은 Cashfree가 청구한 금액과 통화로 이루어집니다. 따라서 금액 불일치 후에는 주문 합계가 아니라 고객이 실제로 결제한 금액까지만 환불할 수 있습니다. 환불은 결제가 이루어진 환경(샌드박스 또는 운영)의 결제 완료된 Cashfree 주문으로 전송되므로, 해당 환경의 키가 입력되어 있어야 합니다. Cashfree가 환불을 수락하지 않거나 취소 또는 거부된 것으로 보고하면, 블록에 오류가 표시되고 환불은 기록되지 않습니다. 시작된 환불은 환불 ID, 금액, 상태와 함께 환불 내역과 메모에 추가됩니다. 전액 환불 시 주문은 Refunded 상태가 됩니다. 부분 환불은 상태를 바꾸지 않습니다. 환불은 Cashfree가 결제를 확인한 후에만 가능합니다.

최종 환불 상태는 환불 웹훅을 통해 도착하며 메모에 추가됩니다. 모듈은 크레딧 전표를 만들지 않습니다. 주문 페이지의 PrestaShop 표준 환불 버튼은 Cashfree를 통해 금액을 돌려주지 않습니다.

라이선스 키

이 모듈은 vibefox.net에서 받은 VibeFox 라이선스 키로 작동합니다. License — VibeFox Cashfree Payments 라이선스 블록은 Modules > Module Manager > VibeFox Cashfree Payments > Configure 페이지에서 설정 위에 있는 첫 번째 블록입니다. 키를 License key에 붙여 넣고 Activate를 클릭하십시오. 그러면 블록에 키가 마스킹되어 표시되고, 상태(예: 라이선스가 유효한 날짜와 도메인)와 함께 Check now(상태 다시 확인), Change key(다른 키 입력), Remove key(이 쇼핑몰에서 키 제거) 버튼이 나타납니다. 그 아래에는 Product: presta-payment-cashfree 줄과 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 계정에서 슬롯을 해제하십시오.

활성 키가 없으면 체크아웃에서 고객에게 Cashfree가 표시되지 않습니다. 그래도 결제가 시작되면 고객은 This payment method is not available. Please choose another one.를 보게 됩니다. PrestaShop 스토어프런트는 관리 패널에 로그인해 있다는 것을 알지 못하므로, 결제 수단은 본인에게도 숨겨집니다. 키를 구매하기 전에 모듈을 설정할 수는 있지만, 체크아웃에서 테스트할 수는 없습니다. Modules > Module Manager의 Alerts 탭에 알림이 나타납니다. 기존 주문은 영향을 받지 않습니다. 이미 시작된 결제는 계속 확인되며, 환불도 작동합니다.

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

문제 해결

Cashfree가 체크아웃에 나타나지 않음: 라이선스가 활성 상태인지, Enable/Disable이 켜져 있는지, 현재 모드에 키가 있는지 확인하십시오. 샌드박스 모드에서는 Sandbox App ID와 Sandbox Secret Key, 운영 모드에서는 App ID와 Secret Key가 필요합니다. 키가 없으면 설정 페이지에 경고가 표시됩니다. 장바구니 합계가 Cashfree 최소 금액보다 낮으면 결제 방법도 숨겨집니다. Payment > Preferences에서 장바구니 통화, 고객의 국가, 고객 그룹에 대해 모듈이 허용되어 있는지 확인하십시오.

결제는 완료되었으나 주문이 생성되지 않음: 웹훅이 작동하지 않습니다. 쇼핑몰이 HTTPS를 사용하는지, Developers > Webhooks의 주소가 Webhook URL에 표시된 주소와 정확히 일치하는지, Payment 이벤트가 선택되어 있는지 확인하십시오. 설정의 Secret Key가 결제가 이루어진 환경의 키인지 확인하십시오. Cashfree 대시보드에는 웹훅마다 쇼핑몰의 응답이 표시됩니다. 주문은 고객이 결제 후 쇼핑몰로 돌아왔을 때, 그리고 같은 장바구니에 대한 다음 결제 시도에서도 생성됩니다.

웹훅이 Missing signature 또는 Invalid signature를 응답함: 호출에 유효한 Cashfree 서명이 없었거나, 설정의 Secret Key가 결제가 이루어진 환경과 일치하지 않습니다. 샌드박스 키와 운영 키가 바뀌지 않았는지 확인하십시오.

웹훅이 Ignored를 응답함: 웹훅은 올바르게 서명되었지만, 이 쇼핑몰에서 시작하지 않은 결제에 관한 것입니다(예: 같은 Cashfree 계정의 다른 쇼핑몰). 각 쇼핑몰에 고유한 Order ID prefix를 지정하십시오.

웹훅이 Busy, retry later를 응답함: 같은 순간에 다른 요청이 주문을 생성하고 있었거나, 주문을 생성할 수 없었습니다(예: 모듈이 비활성화된 경우). Cashfree는 웹훅을 다시 시도합니다. 원인을 확인하려면 Debug log를 켜십시오.

고객이 The Cashfree payment page could not be loaded를 봄: 브라우저에서 Cashfree 스크립트를 불러올 수 없었습니다(예: 차단 프로그램 때문). 고객은 Pay Now를 다시 클릭하거나 Choose another payment method를 클릭할 수 있습니다.

고객이 We could not start the Cashfree payment를 봄: 모듈 페이지의 Log 필드를 확인하십시오. 일반적인 원인은 선택한 모드에 맞지 않는 키이거나, Cashfree 계정에서 활성화되지 않은 통화를 사용하는 경우입니다.

고객이 We could not verify the payment를 봄: 복귀 링크가 장바구니와 일치하지 않았습니다. 금액이 청구되었다면 웹훅이 여전히 주문을 생성합니다. 고객이 다시 결제하기 전에 Cashfree 대시보드에서 결제를 확인하십시오.

결제 후 주문이 Cashfree payment on hold 상태임: Cashfree payment 블록의 메모를 읽은 다음(Order statuses 참조), 주문을 처리하거나 결제를 환불하십시오.

샌드박스 또는 운영 모드와 관련된 메시지와 함께 환불이 실패함: 결제는 해당 환경에서 이루어졌으며, 그 환경의 API 키가 입력되어 있지 않습니다. 키를 입력한 후 다시 시도하십시오.

제거

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

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