VibeFox Stripe for PrestaShop — 도움말
요구 사항
PrestaShop: 8.0~9.x.
PHP: 8.0 이상. 모듈은 이전 PHP 버전에는 설치되지 않습니다.
Stripe 계정: Stripe 계정의 비밀 API 키와 Stripe Dashboard의 웹훅 엔드포인트가 필요합니다(설정 참조). 사용되는 것은 비밀 키와 웹훅 서명 시크릿뿐입니다. Stripe Checkout은 Stripe가 호스팅하는 페이지이므로 공개 가능 키(pk_...)는 필요하지 않습니다.
VibeFox 라이선스 키: vibefox.net에서 구매합니다. 키 하나는 도메인 하나에서만 작동합니다.
설치
1. 백오피스에서 Modules > Module Manager로 이동하여 Upload a module을 클릭합니다. 모듈의 ZIP 파일을 선택합니다.
2. 업로드가 끝나면 Configure를 클릭합니다. 또는 나중에 모듈 목록에서 VibeFox Stripe Gateway를 찾아 Configure를 클릭합니다.
3. Configure 페이지 상단의 라이선스 블록에 있는 License key 입력란에 VibeFox 라이선스 키를 입력하고 Activate를 클릭합니다(라이선스 키 참조).
4. Stripe 비밀 키를 붙여 넣고, Stripe Dashboard에서 웹훅을 설정한 뒤 서명 시크릿을 붙여 넣습니다(설정 참조).
5. Enable/Disable을 켜고 Save를 클릭합니다. 테스트 카드 4242 4242 4242 4242로 테스트 모드에서 결제를 시험한 뒤 Test Mode를 끕니다.
설치 시 모듈은 두 가지 주문 상태 Awaiting Stripe payment와 Stripe payment on hold를 만듭니다. PrestaShop은 새 결제 모듈을 모든 통화, 국가, 고객 그룹에 대해 활성화합니다. Payment > Preferences에서 이를 제한할 수 있습니다.
설정
모든 설정은 모듈 페이지에 있습니다: Modules > Module Manager > VibeFox Stripe Gateway > Configure. 각 섹션에는 자체 Save 버튼이 있으며, 이 버튼은 페이지 전체를 저장합니다. 입력란 위에서 페이지는 현재 모드에 비밀 키가 없으면(이 경우 결제 방법이 체크아웃에서 숨겨짐) 또는 웹훅 서명 시크릿이 없으면(이 경우 고객이 쇼핑몰로 돌아왔을 때만 주문이 확인됨) 경고를 표시합니다. 테스트 모드가 켜져 있는 동안에는 테스트 모드가 켜져 있습니다: 실제 결제는 이루어지지 않습니다.라고 표시됩니다.
Stripe Checkout
Enable/Disable: Enable Stripe Gateway는 결제 방법을 켜거나 끕니다. Default: off.
Title: 고객이 체크아웃에서 보는 결제 방법 이름입니다. 주문에 저장되는 결제 방법 이름이기도 합니다. Default: Stripe. 필수.
Description: 체크아웃에서 결제 방법 아래에 표시되는 텍스트입니다. Default: Pay securely with your credit or debit card via Stripe.
API 키
Stripe Dashboard > Developers > API keys에서 비밀 키를 복사합니다. 테스트 키와 라이브 키는 별도입니다. 테스트 모드는 테스트 키만, 라이브 모드는 라이브 키만 사용합니다. 저장할 때 값이 예상 접두사로 시작하지 않으면(예를 들어 비밀 키 대신 공개 가능 키를 붙여 넣은 경우) 모듈이 경고합니다.
Test Mode: Stripe 테스트 키를 사용합니다. 실제 금액은 청구되지 않으며, 4242 4242 4242 4242 같은 Stripe 테스트 카드로 결제하면 됩니다. Default: on. 실제 결제를 받으려면 끄십시오. 켜져 있는 동안 고객은 결제 방법 아래에 테스트 모드: 실제 결제는 이루어지지 않습니다.를 봅니다.
Test Secret Key: 테스트 모드의 비밀 키입니다. sk_test_로 시작합니다(제한된 키라면 rk_test_).
Test Webhook Secret: 테스트 모드에서 만든 웹훅 엔드포인트의 서명 시크릿(whsec_...)입니다.
Live Secret Key: 라이브 모드의 비밀 키입니다. sk_live_로 시작합니다(제한된 키라면 rk_live_).
Live Webhook Secret: 라이브 모드에서 만든 웹훅 엔드포인트의 서명 시크릿(whsec_...)입니다.
저장된 키와 시크릿은 다시 표시되지 않습니다. 입력란은 비어 있고 저장됨 — 그대로 두려면 비워 두십시오.를 표시합니다. 변경하려는 경우에만 새 값을 입력하십시오.
Clear saved secrets: 키나 시크릿에 체크하고 Save를 클릭하면 삭제됩니다. 빈 입력란은 저장된 값을 유지합니다.
Webhook
웹훅은 결제가 이루어졌음을 쇼핑몰에 알립니다. Stripe Dashboard > Developers > Webhooks에서 테스트 모드용 엔드포인트와 라이브 모드용 엔드포인트를 각각 추가합니다. 이 섹션의 Endpoint URL에 표시된 URL을 사용하십시오. 친숙한 URL을 사용하면 https://your-shop/module/wcp_stripe_gateway/webhook 형태이며, /en/ 같은 언어 코드가 포함될 수도 있습니다. Stripe는 리디렉션을 따르지 않으므로, 설정에 표시된 URL을 정확히 그대로 복사하십시오.
각 엔드포인트에 대해 다음 이벤트를 선택하십시오(이 섹션에도 나열되어 있습니다):
각 엔드포인트를 만든 후 Stripe에서 서명 시크릿(whsec_...)을 복사하여 Test Webhook Secret 또는 Live Webhook Secret에 붙여 넣으십시오. 유효한 서명이 없는 웹훅은 거부됩니다. 이벤트는 결제가 이루어진 모드의 시크릿으로 서명되어야 하므로, 테스트 시크릿이 실제 결제를 확인하는 일은 없습니다. 웹훅이 없으면 주문은 고객이 결제 후 쇼핑몰로 돌아왔을 때만 생성됩니다.
주문
Order Status After Payment: 결제 성공 후 설정되는 주문 상태입니다.
지연 결제는 Awaiting Stripe payment에서 대기합니다. 금액이나 통화가 일치하지 않는 경우에는 항상 Stripe payment on hold로 갑니다.
고급
Logging: Stripe 요청과 웹훅을 모듈 폴더의 logs/strg_debug.log.php에 기록합니다. 이 파일은 웹에서 열 수 없습니다. 키와 고객 데이터는 기록되지 않습니다. Default: off. 꺼져 있는 동안에는 아무것도 기록되지 않습니다.
Log: 로그의 크기와 최신 항목을 표시합니다. Clear log를 클릭하면 비워집니다.
Delete Data on Uninstall: 켜져 있으면 모듈을 제거할 때 게이트웨이 설정과 로그가 삭제됩니다. Stripe 거래와 환불, 그리고 모듈의 주문 상태는 항상 남아 있으므로 기존 주문은 계속 작동합니다. Default: off.
체크아웃
결제 단계에서 고객은 결제 방법(기본값은 Stripe)을 선택하고 안전한 결제를 위해 Stripe로 이동합니다.라는 안내를 봅니다. 확인 후 모듈은 장바구니 통화로 장바구니 금액에 대한 Stripe Checkout 세션을 만들고 고객을 Stripe 결제 페이지로 보냅니다. 고객은 그곳에서 신용카드 또는 체크카드로 결제합니다. 고객의 이메일은 Stripe에 전달되며, 결제는 Stripe 페이지에 Cart #과 장바구니 번호로 표시됩니다. 이 시점에는 아직 주문이 없습니다.
결제 후 고객은 쇼핑몰로 돌아옵니다. 주문은 Stripe가 확인한 후에만 결제 완료로 표시됩니다. 서명된 웹훅을 통해서이거나, 고객이 돌아올 때 Stripe에 보낸 서버 측 요청을 통해서입니다. 그다음 주문이 생성되고, 고객은 Stripe로 결제가 완료되었습니다.라는 표준 주문 확인 페이지를 봅니다. 지연 결제의 경우 페이지에 결제가 Stripe에서 확인 중입니다. 확인되면 이메일을 보내 드리겠습니다.가 표시됩니다. 지연 결제가 나중에 실패하면 페이지에 Stripe 결제가 완료되지 않았습니다. 이 주문에 대해 문의해 주십시오.가 표시됩니다. 고객이 돌아온 시점에 Stripe가 아직 결제를 확인하지 않았다면, Payment confirmation 페이지에 같은 문구와 Check again 버튼이 표시되며, 웹훅이 도착하는 즉시 주문이 생성됩니다.
고객이 Stripe 페이지에서 취소하면 Stripe 세션이 닫히고, 고객은 결제가 취소되었습니다. 다시 시도하거나 다른 결제 방법을 선택할 수 있습니다.가 표시된 체크아웃으로 돌아갑니다. 결제가 완료되지 않은 경우 메시지는 결제가 완료되지 않았습니다. 다시 시도하거나 다른 결제 방법을 선택할 수 있습니다.입니다. 장바구니는 유지됩니다. 새로운 시도마다 이전 Stripe 세션이 닫히므로, 같은 장바구니를 두 번 결제할 수 없습니다. 이전 세션이 이미 결제된 것으로 확인되면, 새로 결제하는 대신 주문이 생성됩니다.
Stripe가 결제를 시작할 수 없으면 고객은 체크아웃에 머무르며, 예를 들어 주문 금액이 이 통화에서 Stripe가 청구할 수 있는 최소 금액보다 낮습니다. 다른 결제 방법을 선택해 주십시오.와 같은 짧은 메시지를 봅니다. 기술적인 원인은 로그에 기록됩니다.
결제와 확인 사이에 장바구니의 쿠폰이 더 이상 유효하지 않게 되면, PrestaShop은 쿠폰을 주문에서 제거합니다. 고객은 할인된 가격으로 결제했으므로, 주문은 메모와 함께 Stripe payment on hold로 이동합니다.
웹훅은 쇼핑몰이 유지 보수 모드인 동안에도 작동하며, 쇼핑몰의 국가 제한에 의해 차단되지 않습니다.
이 모듈은 카드 결제만 받으며, 결제는 Stripe 페이지에서 즉시 청구됩니다. 저장된 카드, 구독이나 정기 결제, 사이트 내 카드 양식, 사이트의 Apple Pay 또는 Google Pay 버튼, 승인과 매입의 분리는 없습니다.
주문과 환불
주문 상태
아직 주문 없음: 고객이 Stripe로 이동했지만 아직 결제하지 않았거나, Stripe가 아직 결제를 확인하지 않았습니다. 장바구니만 존재합니다.
Payment accepted, Delivered or Stripe payment on hold: 결제가 확인되었습니다. 상태는 Order Status After Payment를 따릅니다. 결제는 Stripe 결제 ID(pi_...)를 거래 ID로 기록되며, 메모에는 Stripe 결제, 세션, 확인 방식(웹훅 또는 복귀)이 표시됩니다.
Awaiting Stripe payment: 고객이 지연 결제 방법으로 체크아웃을 완료했습니다. Stripe가 결제를 확인하면 주문은 결제 완료 상태로 바뀝니다.
Stripe payment on hold after payment: Stripe가 주문 합계와 다른 금액이나 통화를 보고했거나(예: 결제 시작 후 장바구니가 변경됨), 쿠폰이 제거되었거나, 주문이 취소된 뒤에 결제가 도착한 경우입니다. 메모에 이유가 설명되어 있습니다. 주문을 확인한 후 처리하거나 결제를 환불하십시오.
Payment error: 지연 결제가 실패했습니다.
Refunded: 결제가 모듈을 통해 전액 환불되었습니다.
이미 결제된 주문에 두 번째 결제가 도착하면 주문은 변경되지 않습니다. 메모에서 이를 확인하고 Stripe Dashboard에서 중복 결제를 환불하라고 안내합니다.
Stripe payment 블록
주문 페이지에는 Stripe payment 블록이 표시됩니다. 여기에는 Stripe 결제 ID(Stripe Dashboard의 결제로 연결), Checkout Session, 결제 상태, Stripe가 청구한 금액과 환불된 금액, 테스트 결제용 Test mode 배지, 환불 이력, 주문의 Stripe notes가 포함됩니다.
환불
Stripe payment 블록에서 금액을 입력합니다(아직 환불되지 않은 금액이 자동으로 채워짐). 필요하면 사유를 입력하고 Refund via Stripe를 클릭합니다. 이 금액을 Stripe를 통해 환불하시겠습니까? 이 작업은 취소할 수 없습니다. 확인 질문에 응답하십시오. 전액 환불과 부분 환불을 모두 지원합니다. 주문을 편집할 권한이 필요합니다. 환불은 Stripe가 청구한 금액과 통화로 처리되므로, 금액이나 통화가 일치하지 않은 후에는 주문 합계가 아니라 고객이 실제로 지불한 금액까지 환불할 수 있습니다. 환불은 결제가 이루어진 모드(테스트 또는 라이브)로 보내지므로, 해당 모드의 비밀 키가 설정되어 있어야 합니다. Stripe가 환불을 수락하지 않으면 블록에 오류가 표시되며 환불은 기록되지 않습니다. 성공한 환불은 Stripe 환불 ID와 함께 환불 이력과 메모에 추가됩니다. 전액 환불 시 주문은 Refunded 상태가 됩니다. 부분 환불은 상태를 바꾸지 않습니다. 환불은 Stripe가 결제를 확인한 후에 가능합니다.
이 모듈은 크레딧 슬립을 만들지 않습니다. 주문 페이지의 PrestaShop 표준 환불 버튼은 Stripe를 통해 돈을 돌려보내지 않습니다.
Stripe Dashboard에서 진행된 환불은 charge.refunded 웹훅을 통해 도착하며, Stripe에서 환불된 총액과 함께 메모에 추가됩니다. 주문 상태와 크레딧 슬립은 자동으로 바뀌지 않습니다. 필요하면 수동으로 갱신하십시오.
라이선스 키
이 모듈은 vibefox.net에서 받은 VibeFox 라이선스 키로 작동합니다. 라이선스 블록 License — VibeFox Stripe Gateway는 Modules > Module Manager > VibeFox Stripe Gateway > Configure 페이지에서 설정 위에 있는 첫 번째 블록입니다. 키를 License key에 붙여 넣고 Activate를 클릭합니다. 그러면 블록에 마스킹된 키, 상태(예: 라이선스가 유효한 날짜와 도메인), 그리고 상태를 다시 확인하는 Check now, 다른 키를 입력하는 Change key, 이 쇼핑몰에서 키를 제거하는 Remove key 버튼이 표시됩니다. 그 아래에는 Product: presta-payment-stripe 줄과 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 계정에서 해제하십시오.
활성 키가 없으면 체크아웃에서 고객에게 Stripe가 표시되지 않습니다. 그래도 결제가 시작되면 고객에게 This payment method is not available. Please choose another one.가 표시됩니다. PrestaShop 스토어프런트는 사용자가 백오피스에 로그인했는지 알 수 없으므로, 결제 방법은 사용자에게도 숨겨집니다. 키를 구매하기 전에 모듈을 설정할 수는 있지만, 체크아웃에서 테스트할 수는 없습니다. Modules > Module Manager의 Alerts 탭에 알림이 표시됩니다. 기존 주문에는 영향이 없습니다. 이미 시작된 결제는 여전히 확인되며, 환불도 작동합니다.
라이선스가 만료되어도 모듈은 계속 작동하지만, 업데이트와 지원에는 갱신이 필요합니다. 백오피스에서 작업하는 동안 상태가 자동으로 다시 확인됩니다. 키를 입력한 후 처음 14일 동안은 하루에 한 번, 그 후에는 일주일에 한 번입니다. cron 작업은 필요하지 않습니다. 모듈을 제거하거나 초기화하면 라이선스 키와 라이선스 상태는 항상 삭제됩니다.
문제 해결
체크아웃에 Stripe가 나타나지 않음: 라이선스가 활성 상태인지, Enable/Disable이 켜져 있는지, 현재 모드에 비밀 키가 있는지 확인하십시오. 테스트 모드에서는 Test Secret Key, 라이브 모드에서는 Live Secret Key입니다. 키가 없으면 설정 페이지에 경고가 표시됩니다. Payment > Preferences에서 장바구니 통화, 고객의 국가, 고객 그룹에 대해 모듈이 허용되어 있는지 확인하십시오.
결제는 완료되었으나 주문이 생성되지 않음: 웹훅이 작동하지 않습니다. Stripe Dashboard에서 사용 중인 모드(테스트 또는 라이브)에 엔드포인트가 있는지, URL이 Endpoint URL에 표시된 것과 정확히 같은지, 네 가지 이벤트가 모두 선택되어 있는지 확인하십시오. 해당 엔드포인트의 서명 시크릿이 올바른 입력란(Test Webhook Secret 또는 Live Webhook Secret)에 있는지도 확인하십시오. Stripe Dashboard에는 각 웹훅에 대한 쇼핑몰의 응답이 표시됩니다. 고객이 결제 후 쇼핑몰로 돌아와도 주문이 생성됩니다.
웹훅 응답이 Webhook secret not configured: 웹훅 시크릿이 하나도 설정되지 않았습니다. 서명 시크릿을 설정에 붙여 넣으십시오.
웹훅 응답이 Invalid signature: 서명 시크릿이 다른 엔드포인트나 다른 모드의 것이거나, 서버 시계가 잘못되었습니다. Stripe 서명은 서버 시간 기준 5분 이내에 한해 수락됩니다. 라이브 결제의 이벤트가 테스트 시크릿으로 서명되었거나 그 반대인 경우에도 응답은 Invalid signature입니다. 테스트 시크릿과 라이브 시크릿이 뒤바뀌지 않았는지 확인하십시오.
웹훅 응답이 Busy, retry: 같은 순간 다른 요청이 주문을 확인하고 있었거나, 주문을 생성할 수 없었습니다(예: 모듈이 비활성화된 경우). Stripe는 웹훅을 자동으로 다시 시도합니다. 이유를 보려면 Logging을 켜십시오.
브라우저에서 웹훅 URL이 Method not allowed를 표시함: 정상입니다. 이 URL은 Stripe의 요청만 받습니다.
저장 시 값이 올바르지 않아 보인다는 경고: 키가 잘못된 입력란에 붙여 넣어졌습니다. 비밀 키는 sk_test_ / rk_test_ 또는 sk_live_ / rk_live_로 시작하고, 웹훅 시크릿은 whsec_로 시작합니다.
고객이 Stripe를 선택할 때 오류를 봄: Logging을 켜고 모듈 페이지의 Log 항목을 확인하십시오. 잘못된 키는 결제 방법이 올바르게 구성되지 않았다는 메시지를 보여 줍니다. 통화별 Stripe 최소 금액보다 낮은 주문 합계(예: 0.50 EUR)는 Stripe로 결제할 수 없습니다.
테스트 결제가 라이브 결제를 확인하지 않음: 테스트 결제와 라이브 결제는 분리되어 있습니다. Test Mode를 사용하려는 모드로 전환하고 그 모드의 키와 웹훅을 사용하십시오.
결제 후 주문이 Stripe payment on hold 상태임: Stripe payment 블록의 메모를 읽은 뒤(주문 상태 참조) 주문을 처리하거나 결제를 환불하십시오.
모드와 관련된 메시지와 함께 환불이 실패함: 결제는 테스트 모드 또는 라이브 모드에서 이루어졌는데, 해당 모드의 비밀 키가 설정되어 있지 않습니다. 키를 입력한 후 다시 시도하십시오.
제거
Modules > Module Manager로 이동하여 VibeFox Stripe Gateway 옆의 메뉴를 열고 Uninstall을 선택합니다. 이 모듈의 라이선스 키와 라이선스 상태는 항상 삭제됩니다. Delete Data on Uninstall이 켜져 있으면 게이트웨이 설정과 로그가 삭제됩니다. 꺼져 있으면 나중에 다시 설치할 수 있도록 모든 설정이 유지됩니다. Stripe 거래와 환불, 그리고 Awaiting Stripe payment와 Stripe payment on hold 주문 상태는 항상 유지되므로, 이전에 결제된 주문은 다시 설치한 후에도 환불할 수 있습니다. 기존 주문은 결제 메모와 거래 ID를 유지합니다.
Stripe는 해당 소유자의 상표입니다. 이 모듈은 Stripe와 제휴하거나 Stripe의 승인을 받은 것이 아닙니다.
