VibeFox Yoco for PrestaShop — 도움말
요구 사항
PrestaShop: 8.0~9.x.
PHP: 8.0 이상. 모듈은 이전 PHP 버전에는 설치되지 않습니다.
쇼핑몰 통화: 남아프리카 랜드(ZAR). Yoco는 ZAR만 받습니다. 다른 통화에서는 체크아웃에 결제 수단이 표시되지 않습니다. 주문 합계는 최소 R2.00이어야 합니다.
Yoco 계정: 온라인 결제가 가능한 Yoco 계정. 필요한 것은 그 비밀 키로, Yoco Business Portal의 Selling Online > Payment Gateway에서 찾을 수 있습니다. 비밀 키만 입력합니다. 웹훅은 모듈이 등록하며, 서명 시크릿은 자동으로 입력됩니다.
공개 사이트: Yoco가 쇼핑몰로 웹훅을 보내므로 인터넷에서 접근 가능해야 합니다. 웹훅 URL은 리디렉션 없이 POST를 받아야 합니다.
VibeFox 라이선스 키: vibefox.net에서 구매합니다. 키 하나는 도메인 하나에서 작동합니다.
설치
1. 관리자 페이지에서 Modules > Module Manager로 이동한 뒤 Upload a module을 클릭합니다. 모듈의 ZIP 파일을 선택합니다.
2. 업로드가 끝나면 Configure를 클릭하거나, 나중에 모듈 목록에서 VibeFox Yoco Pay Gateway를 찾아 Configure를 클릭합니다.
3. Configure 페이지 상단의 라이선스 블록에 있는 License key에 VibeFox 라이선스 키를 입력하고 Activate를 클릭합니다(라이선스 키 참조).
4. 테스트 비밀 키(sk_test_...)를 붙여넣고, 준비가 되면 라이브 비밀 키(sk_live_...)를 붙여넣습니다. Save를 클릭합니다. 키가 있는 모드마다 웹훅이 등록됩니다.
5. Enable/Disable을 켜고 Save를 클릭합니다. Test mode가 켜진 상태에서 Yoco 테스트 카드로 테스트 결제를 진행한 다음, 실제 결제를 받으려면 Test mode를 끕니다.
설치 시 모듈은 주문 상태 Yoco payment on hold를 만듭니다. PrestaShop은 새 결제 모듈을 모든 통화, 국가 및 고객 그룹에 대해 활성화합니다. Payment > Preferences에서 이를 제한할 수 있습니다.
설정
모든 설정은 모듈 페이지에 있습니다: Modules > Module Manager > VibeFox Yoco Pay Gateway > Configure. 각 섹션에는 자체 Save 버튼이 있으며, 페이지 전체를 저장합니다. 필드 위에서 페이지는 쇼핑몰 통화가 ZAR이 아닐 때(이 경우 체크아웃에서 Yoco가 제공되지 않음)와 현재 모드에 비밀 키가 없을 때, 예를 들어 Enter the test secret key to offer Yoco at checkout (test mode).를 경고합니다. 저장하면 모듈은 키와 웹훅 시크릿을 확인하고 웹훅을 등록합니다. 이에 관한 메시지는 페이지 상단에 나타납니다.
Yoco
Enable/Disable: Enable Yoco는 결제 수단을 켜거나 끕니다. 기본값: 끔.
Title: 고객이 체크아웃에서 보는 결제 수단 이름입니다. 주문에 저장되는 결제 수단 이름이기도 합니다. 기본값: Card or Instant EFT (Yoco).
Description: 체크아웃에서 결제 수단 아래에 표시되는 텍스트입니다. 기본값: You will be redirected to the secure Yoco page to pay by card or Instant EFT.
API 키
Yoco Business Portal의 Selling Online > Payment Gateway에서 비밀 키를 복사합니다. Yoco는 두 모드에 대해 하나의 API를 제공합니다. 결제가 테스트인지 실제인지는 키가 결정합니다. 테스트 모드는 테스트 키만, 라이브 모드는 라이브 키만 사용합니다.
Test mode: 테스트 비밀 키를 사용합니다. 실제 금액은 청구되지 않으며, Yoco 테스트 카드로 결제합니다. 기본값: 켬. 실제 결제를 받으려면 끕니다. 켜져 있는 동안 고객은 결제 수단 아래에서 Test mode — use a Yoco test card; no real money is charged.를 봅니다.
Test secret key: 테스트 모드의 비밀 키입니다. sk_test_로 시작합니다.
Live secret key: 라이브 모드의 비밀 키입니다. sk_live_로 시작합니다.
예상되는 접두사로 시작하지 않는 키는 저장되지 않습니다. 페이지에 오류가 표시됩니다. 예: Yoco: the test secret key must start with sk_test_ — the previous value was kept. 웹훅 등록 중 Yoco가 키가 다른 모드에 속한다고 보고하면 페이지에 그 사실이 표시됩니다.
저장된 키와 시크릿은 다시 표시되지 않습니다. 필드는 비어 있으며 Saved — leave empty to keep it.를 표시합니다. 값을 바꾸고 싶을 때만 새 값을 입력합니다.
웹훅
Yoco는 결제와 환불을 이 섹션의 Webhook URL에 표시된 URL로 확인합니다. 친숙한 URL을 사용하면 https://your-shop/module/wcp_yoco_pay/webhook처럼 보이며, /en/ 같은 언어 코드가 붙을 수 있습니다. Yoco 포털에서 웹훅을 만들 필요는 없습니다. 설정을 저장하면 모듈은 비밀 키는 있지만 웹훅 시크릿은 없는 각 모드에 대해 URL을 Yoco에 등록하고, 서명 시크릿을 해당 모드의 필드에 저장합니다. 해당 모드의 비밀 키나 웹훅 URL이 바뀌면 다시 등록합니다. URL이 바뀌면 이전 등록은 제거됩니다.
각 모드(Test 및 Live)에 대해 이 섹션은 웹훅 상태를 표시합니다:
모듈은 다음 이벤트를 처리합니다(이 섹션에도 나열되어 있습니다):
유효한 서명이 없는 웹훅은 거부됩니다. 이벤트는 결제가 이루어진 모드의 시크릿으로 서명되어야 하므로, 테스트 시크릿이 라이브 결제를 확인하는 일은 없습니다. 설정에 표시된 그대로 URL을 정확히 복사하십시오. 웹훅은 리디렉션 없이 쇼핑몰에 도달해야 합니다.
Test webhook secret: 웹훅을 등록할 때 자동으로 채워집니다. 웹훅 URL을 직접 등록한 경우에만 시크릿(whsec_...)을 붙여넣으십시오.
Live webhook secret: 웹훅을 등록할 때 자동으로 채워집니다. 비우고 저장하면 웹훅을 다시 등록합니다.
웹훅 시크릿은 whsec_ 다음에 base64 텍스트가 오는 형식이어야 합니다. 다른 값은 저장되지 않으며 이전 값이 유지됩니다.
Clear saved secrets: 키나 시크릿을 체크하고 Save를 클릭하면 삭제됩니다. 빈 필드는 저장된 값을 유지합니다. 웹훅 시크릿을 지우고 저장하면 웹훅을 다시 등록합니다.
고급
Debug log: Yoco 요청과 웹훅을 모듈 폴더의 logs/yoco_p_debug.log.php에 기록합니다. 이 파일은 웹에서 열 수 없습니다. 오류와 경고(예: Yoco로의 실패한 요청, 거부된 웹훅)는 항상 기록됩니다. 키, 웹훅 시크릿, 이메일 주소는 마스킹됩니다. 기본값: 끔.
Log: 로그의 크기와 최신 항목을 표시합니다. Clear log를 클릭하면 비워집니다.
Delete data: 켜져 있으면 모듈을 제거할 때 설정, 로그, 그리고 모듈이 Yoco에 등록한 웹훅이 삭제됩니다. 주문 데이터(Yoco 체크아웃 및 결제 ID, 환불)와 주문 상태 Yoco payment on hold는 환불에 필요하므로 항상 유지됩니다. 기본값: 끔.
체크아웃
결제 단계에서 고객은 결제 수단(기본값 Card or Instant EFT (Yoco))을 선택하고 확인합니다. 모듈은 장바구니 합계 금액(센트 단위)에 대한 Yoco 체크아웃을 만들고, 고객을 Yoco 결제 페이지로 보냅니다. 고객은 그곳에서 카드 또는 Instant EFT로 결제합니다. 이 시점에는 아직 주문이 없습니다.
결제 후 고객은 쇼핑몰로 돌아옵니다. Yoco가 확인한 뒤에야 주문이 결제 완료로 표시됩니다. 모듈은 고객이 돌아올 때 체크아웃을 Yoco에 요청하고, 서명된 웹훅이 도착할 때 다시 요청합니다. 그런 다음 주문이 생성되고, 고객은 표준 주문 확인 페이지에서 Your payment with Yoco has been received.를 봅니다. 고객이 돌아왔을 때 Yoco가 아직 결제를 확인하지 않았다면, Payment confirmation 페이지에 We are waiting for Yoco to confirm your payment. The order will be updated automatically — please do not pay again.와 Check again 버튼이 표시됩니다. 웹훅이 도착하는 즉시 주문이 생성됩니다.
고객이 Yoco 페이지에서 취소하면, The Yoco payment was cancelled. Your cart is saved — you can pay again or choose another payment method.와 함께 체크아웃으로 돌아옵니다. 결제가 실패하면 메시지는 The Yoco payment was not successful. Please try again or choose another payment method.입니다. 장바구니는 유지됩니다.
같은 장바구니에 대해 새 결제 시도를 하기 전에 모듈은 이전 결제를 Yoco에서 확인합니다. 이미 결제되었다면 결제 페이지 없이 주문이 생성됩니다. 같은 금액으로 아직 열려 있고 30분 이내에 만들어졌다면, 고객은 같은 Yoco 페이지를 다시 받습니다. 그렇지 않으면 새 Yoco 체크아웃이 생성됩니다.
Yoco가 결제를 시작할 수 없으면 고객은 Yoco could not start the payment. Please try again in a moment or choose another payment method.와 함께 체크아웃에 머물고, 이유는 로그에 기록됩니다. R2.00 미만의 주문에는 Yoco requires an order total of at least R2.00.가 표시됩니다.
웹훅은 쇼핑몰이 유지 보수 모드인 동안에도 작동하며, 쇼핑몰의 국가 제한에 의해 차단되지 않습니다.
결제는 Yoco 페이지에서 즉시 청구됩니다. 모듈에는 저장된 카드, 구독 또는 정기 결제, 사이트 내 카드 입력 양식, 별도의 승인 및 캡처가 없으며, ZAR 이외의 통화에서는 작동하지 않습니다.
주문 및 환불
주문 상태
No order yet: 고객은 Yoco로 이동했지만 결제하지 않았거나, Yoco 페이지에서 취소했거나, Yoco가 아직 결제를 확인하지 않았습니다. 장바구니만 존재합니다.
Payment accepted: 결제가 확인되었습니다. 결제는 Yoco 결제 ID를 거래 ID로 하여 기록되며, 메모에는 금액, Yoco 결제 및 체크아웃 ID, 모드, 그리고 결제가 어떻게 확인되었는지(고객의 복귀, 웹훅, 또는 새 결제 시도 전 확인)가 표시됩니다.
Yoco payment on hold: Yoco가 장바구니 합계와 다른 금액이나 통화를 보고했습니다. 예를 들어 결제 시작 후 다른 탭에서 장바구니가 변경된 경우입니다. 결제는 기록되지 않으며, 메모에 이유가 설명되고, 고객은 We received your payment and are reviewing it. We will contact you if anything else is needed.를 봅니다. 배송 전에 결제를 확인하십시오. 고객이 다른 시도로 올바른 금액을 결제하면 주문은 Payment accepted로 바뀝니다.
Cancelled or Refunded: 이런 주문에 들어온 결제는 주문을 바꾸지 않습니다. 메모는 Yoco 포털에서 결제를 환불하거나 주문을 수동으로 복구하도록 요청합니다. 고객은 Your payment was received after the order had been cancelled. Please contact us — do not pay again.를 봅니다.
이미 결제된 주문에 두 번째 결제가 들어오면 주문은 바뀌지 않습니다. 메모는 Yoco 포털에서 환불하도록 요청합니다.
Yoco 결제 블록
주문 페이지에는 Yoco payment 블록이 표시되며, Yoco 결제 및 체크아웃 ID, 상태, 결제 금액과 환불 금액, 테스트 결제를 위한 Test mode 배지, 환불 내역, 장바구니의 결제 시도(한 번 이상인 경우), 주문의 Yoco notes가 포함됩니다.
환불
Yoco payment 블록에서 금액을 입력합니다(아직 환불되지 않은 금액이 자동으로 채워집니다). 선택적으로 사유를 입력하고 Refund via Yoco를 클릭합니다. Refund this amount through Yoco? This cannot be undone. 질문을 확인합니다. 전액 및 부분 환불을 지원합니다. 주문을 편집할 권한이 필요합니다. 환불은 Yoco가 청구한 금액을 기준으로 이루어지므로, 주문이 나중에 수정되었더라도 고객이 실제로 결제한 금액까지만 환불할 수 있습니다. 환불은 결제가 이루어진 모드(테스트 또는 라이브)로 전송되므로, 해당 모드의 비밀 키가 설정되어 있어야 합니다. 응답이 유실된 뒤 반복한 환불은 두 번 지급되지 않습니다.
환불이 성공하면 Yoco 환불 ID와 함께 환불 내역과 메모에 추가됩니다. 전액 환불은 주문을 Refunded로 설정합니다. 부분 환불은 상태를 바꾸지 않습니다. Yoco가 환불을 거부하면 블록에 사유와 함께 Yoco refused the refund:가 표시되며 환불은 기록되지 않습니다. Yoco가 환불을 보류 중으로 보고하면 블록에 아직 보류 중이라고 표시됩니다. 반복하지 마십시오. Yoco가 웹훅으로 확인하면 기록됩니다. 환불은 Yoco 체크아웃으로 결제된 주문에 사용할 수 있습니다. Yoco payment on hold 상태의 주문에는 환불할 결제 완료 체크아웃이 없으므로 Yoco 포털에서 환불하십시오.
모듈은 크레딧 슬립을 만들지 않습니다. 주문 페이지의 PrestaShop 표준 환불 버튼은 Yoco를 통해 돈을 돌려주지 않습니다.
Yoco 포털에서 진행한 환불은 refund.succeeded 웹훅으로 도착하며, 환불 내역과 메모에 기록됩니다. 결제 금액에 도달하면 주문이 Refunded로 설정됩니다. 남은 환불 가능 금액을 초과하는 환불은 기록되지 않으며, 메모는 주문을 확인하도록 요청합니다. 실패한 환불은 고객에게 돈이 돌려지지 않았다는 메모를 추가합니다.
라이선스 키
모듈은 vibefox.net의 VibeFox 라이선스 키로 작동합니다. 라이선스 블록 License — VibeFox Yoco Pay Gateway는 Modules > Module Manager > VibeFox Yoco Pay Gateway > Configure의 맨 위, 설정 위에 있는 첫 번째 블록입니다. License key에 키를 붙여넣고 Activate를 클릭하십시오. 그 후 블록에는 마스킹된 키, 상태(예: 라이선스가 유효한 날짜와 도메인), 그리고 Check now(상태 다시 확인), Change key(다른 키 입력), Remove key(이 쇼핑몰에서 키 제거) 버튼이 표시됩니다. 그 아래에는 Product: presta-payment-yoco 줄과 Manage licenses and domains in your account 링크가 있으며, 이 링크는 vibefox.net 계정을 엽니다. 이 모듈의 Configure 권한이 있는 직원만 키를 변경할 수 있습니다. 블록의 텍스트는 백오피스 언어를 따릅니다(영어와 러시아어 포함).
키가 받아들여지지 않으면 블록에 이유가 표시됩니다. 예: Key not found, This key belongs to another product, Domain limit reached, 또는 날짜와 함께 License expired on. 쇼핑몰 주소를 바꾼 후, 또는 계정에서 도메인 슬롯을 해제한 후에는 Check now를 클릭하십시오. 라이선스 서버에 연결할 수 없으면 모듈은 마지막으로 확인된 상태로 계속 작동합니다.
키 하나는 도메인 하나에서 작동합니다. 다중 스토어 구성에서도 메인 쇼핑몰의 도메인입니다. 쇼핑몰에서 키를 제거해도 도메인 슬롯은 해제되지 않습니다. vibefox.net 계정에서 슬롯을 해제하십시오.
활성 키가 없으면 체크아웃에서 고객에게 Yoco가 표시되지 않습니다. 결제가 그래도 시작되면 고객은 This payment method is not available. Please choose another one.를 봅니다. PrestaShop 스토어프런트는 백오피스에 로그인되어 있다는 것을 알지 못하므로, 결제 수단은 본인에게도 숨겨집니다. 키를 구매하기 전에 모듈을 설정할 수는 있지만, 체크아웃에서 테스트할 수는 없습니다. Modules > Module Manager의 Alerts 탭에 알림이 표시됩니다. 기존 주문은 영향을 받지 않습니다. 이미 시작된 결제는 계속 확인되며, 환불도 작동합니다.
라이선스가 만료되어도 모듈은 계속 작동하지만, 업데이트와 지원에는 갱신이 필요합니다. 백오피스에서 작업하는 동안 상태는 자동으로 다시 확인됩니다. 키를 입력한 후 처음 14일 동안은 하루에 한 번, 그 후에는 주 1회입니다. cron 작업은 필요하지 않습니다. 모듈을 제거하거나 초기화하면 라이선스 키와 라이선스 상태는 항상 삭제됩니다.
문제 해결
체크아웃에 Yoco가 나타나지 않음: 라이선스가 활성 상태인지, Enable/Disable이 켜져 있는지, 현재 모드에 비밀 키가 있는지 확인하십시오. 테스트 모드에서는 Test secret key, 라이브 모드에서는 Live secret key입니다. 장바구니 통화는 ZAR이어야 하며, 주문 합계는 최소 R2.00이어야 합니다. 키가 없거나 쇼핑몰 통화가 ZAR이 아니면 설정 페이지에 경고가 표시됩니다. Payment > Preferences에서 모듈이 ZAR, 고객의 국가, 고객의 그룹에 대해 허용되는지 확인하십시오.
결제는 완료되었으나 주문이 생성되지 않음: 웹훅이 작동하지 않습니다. 설정의 Webhooks 섹션을 열고 사용 중인 모드의 상태를 확인하십시오. 등록되지 않았거나 다른 URL에 등록되어 있다면 설정을 저장하십시오. 등록이 실패하면 페이지에 이유가 표시됩니다. 시크릿을 직접 입력했다면, 이 URL과 이 모드의 웹훅에 속하는지 확인하십시오. 주문은 고객이 결제 후 쇼핑몰로 돌아왔을 때, 그리고 고객이 다시 결제를 시도했을 때도 생성됩니다.
웹훅을 등록할 수 없음: 고객이 쇼핑몰로 돌아오면 결제는 여전히 확인됩니다. 메시지에 표시된 이유를 해결하십시오. 예를 들어 쇼핑몰은 HTTPS로 인터넷에서 접근 가능해야 합니다. 그런 다음 다시 저장하십시오. URL을 직접 등록하고 서명 시크릿을 붙여넣을 수도 있습니다.
웹훅이 거부됨: 거부된 웹훅은 로그에 기록됩니다. webhook secret not configured는 두 웹훅 시크릿이 모두 설정되지 않았다는 뜻입니다. invalid signature는 시크릿이 다른 등록 또는 모드에 속한다는 뜻입니다. timestamp outside the tolerance는 서버 시계가 잘못되었다는 뜻입니다. 서명은 서버 시간 기준 5분 이내만 허용됩니다. checkout not completed yet — retry와 could not confirm the checkout with Yoco — retry는 일시적이며, Yoco가 웹훅을 다시 보냅니다.
브라우저에서 웹훅 URL에 POST만 표시됨: 정상입니다. 이 URL은 Yoco의 요청만 받습니다.
저장할 때 「The secret key must start with sk_test_ / sk_live_」 오류: 키가 잘못된 필드에 붙여넣어졌습니다. 테스트 키는 sk_test_로, 라이브 키는 sk_live_로 시작합니다. 이전 값은 유지되었습니다.
고객이 Yoco를 선택할 때 오류가 표시됨: 모듈 페이지의 Log 필드를 확인하십시오. Yoco is not available at the moment. Please choose another payment method.는 현재 모드에 비밀 키가 없다는 뜻입니다.
고객에게 결제를 검토해야 한다고 안내됨: 시도가 다른 금액으로 결제되었거나, 주문이 취소된 후에 결제되었습니다. Yoco payment 블록의 메모를 읽고 주문을 처리하거나 Yoco 포털에서 결제를 환불하십시오.
모드 관련 메시지와 함께 환불이 실패함: 결제는 테스트 또는 라이브 모드에서 이루어졌고, 해당 모드의 비밀 키가 설정되지 않았습니다. 키를 입력하고 다시 시도하십시오.
No answer from Yoco와 함께 환불이 실패함: PrestaShop에는 아무것도 기록되지 않았습니다. Yoco가 환불을 처리했다면 같은 환불을 반복하십시오. 두 번 환불되지는 않습니다.
개발자: 훅 actionYocoPCheckoutPayload는 다른 모듈이 Yoco 체크아웃을 만드는 요청을 변경할 수 있게 합니다.
제거
Modules > Module Manager로 이동하여 VibeFox Yoco Pay Gateway 옆의 메뉴를 열고 Uninstall을 선택합니다. 이 모듈의 라이선스 키와 라이선스 상태는 항상 삭제됩니다. Delete data가 켜져 있으면 설정, 로그, 그리고 모듈이 Yoco에 등록한 웹훅이 삭제됩니다. 꺼져 있으면 나중에 다시 설치할 수 있도록 모든 설정이 유지됩니다. Yoco 체크아웃과 환불, 그리고 주문 상태 Yoco payment on hold는 항상 유지되므로, 이전에 결제된 주문은 다시 설치한 뒤에도 환불할 수 있습니다. 기존 주문은 결제 메모와 거래 ID를 유지합니다.
Yoco는 해당 소유자의 상표입니다. 이 모듈은 Yoco와 제휴되어 있지 않으며 Yoco의 승인을 받지 않았습니다.
