VibeFox Satispay for PrestaShop — 도움말
요구 사항
PrestaShop: 8.0 ~ 9.x.
PHP: OpenSSL 확장이 포함된 8.0 이상. 이전 버전의 PHP이거나 OpenSSL이 없으면 모듈이 설치되지 않습니다.
통화: EUR. Satispay는 유로만 청구하므로, 장바구니 통화가 EUR가 아니면 이 결제 수단이 표시되지 않습니다.
Satispay 계정: Satispay Business 계정. API 키는 복사할 필요가 없습니다. 모듈은 Satispay Business Dashboard에서 생성하는 일회용 활성화 코드로 연결됩니다(설정 참조). 테스트에는 Satispay에 개발자용으로 요청하는 Satispay 샌드박스 계정이 필요합니다.
공개 쇼핑몰: Satispay가 결제 상태가 바뀔 때 쇼핑몰을 호출할 수 있도록, 쇼핑몰이 인터넷에서 접근 가능해야 합니다. Satispay에서는 이를 위해 아무것도 설정할 필요가 없습니다.
VibeFox 라이선스 키: vibefox.net에서 구입합니다. 키 하나는 도메인 하나에서 작동합니다.
설치
1. 백오피스에서 Modules > Module Manager로 이동하여 Upload a module을 클릭합니다. 모듈의 ZIP 파일을 선택합니다.
2. 업로드가 끝나면 Configure를 클릭합니다. 나중에 찾으려면 모듈 목록에서 VibeFox Satispay Gateway를 찾아 Configure를 클릭합니다.
3. Configure 페이지 상단의 라이선스 블록에서 License key 필드에 VibeFox 라이선스 키를 입력하고 Activate를 클릭합니다(라이선스 키 참조).
4. 환경을 선택합니다. 테스트에는 Sandbox Mode를 켜고, 실제 결제에는 끈 상태로 둡니다.
5. 해당 환경의 활성화 코드를 Activation Code에 붙여 넣고 Save를 클릭합니다. 그러면 Status 필드에 Connected와 Key ID가 표시됩니다.
6. Enable/Disable을 켜고 Save를 클릭합니다. 샌드박스에서 결제를 테스트한 다음, Sandbox Mode를 끄고 운영 환경은 운영용 활성화 코드로 연결합니다.
설치할 때 모듈은 주문 상태 Satispay payment on hold를 생성합니다. PrestaShop은 모든 통화, 국가, 고객 그룹에 대해 새로운 결제 모듈을 제공합니다. 이 범위는 Payment > Preferences에서 제한할 수 있습니다. 그곳에서 이 모듈이 유로에 허용되어 있어야 합니다.
설정
모든 설정은 모듈 페이지에 있습니다: Modules > Module Manager > VibeFox Satispay Gateway > Configure. 각 섹션에는 자체 Save 버튼이 있으며, 이 버튼은 페이지 전체를 저장합니다.
체크아웃
고객이 결제 수단 목록에서 보는 내용입니다.
Enable/Disable: Enable Satispay payment는 결제 수단을 켜거나 끕니다. 기본값: off.
Title: 체크아웃에 표시되는 결제 수단 이름입니다. 주문에 저장되는 결제 수단 이름이기도 합니다. 기본값: Satispay. 필수.
Description: 체크아웃에서 결제 수단 아래에 표시되는 텍스트입니다. 기본값: Pay with the Satispay app: scan the QR code or confirm the payment on your phone.
Satispay 연결
Status: 두 환경의 상태입니다. 예를 들어 Key ID와 함께 Live: Connected 또는 Sandbox: Not connected, 그리고 현재 사용 중인 환경이 표시됩니다. 사용 중인 환경이 연결되지 않은 동안에는 이 필드에 Satispay is hidden at checkout until the environment in use is connected.가 표시됩니다.
Sandbox Mode: Satispay 샌드박스(테스트) 환경을 사용합니다. 샌드박스 결제에는 요금이 청구되지 않습니다. 기본값: off. 샌드박스와 운영 환경은 키가 별도이므로, 각 환경을 해당 환경의 활성화 코드로 연결하십시오. 샌드박스를 사용하는 동안 고객에게는 결제 수단 아래에 Sandbox mode: no real money is charged.가 표시됩니다.
Activation Code: 위에서 선택한 환경을 연결하려면, 새 6자리 활성화 코드를 붙여 넣고 Save를 클릭합니다. 운영 코드는 Satispay Business Dashboard의 Online shop 섹션에서 생성됩니다. 샌드박스 코드는 Satispay 샌드박스 계정과 함께 제공됩니다. 코드는 한 번만 사용되며 저장되지 않습니다. 현재 연결을 유지하려면 이 필드를 비워 두십시오.
코드와 함께 저장하면 모듈은 RSA 키 쌍을 생성하고, 공개 키와 코드를 Satispay로 보내며, Key ID와 해당 환경의 키를 쇼핑몰 설정에 저장합니다. 개인 키는 절대 표시되지 않습니다. 성공하면 페이지에 예를 들어 Satispay Live connected. Key ID:와 ID가 표시됩니다. Satispay가 코드를 거부하면 페이지에 Satispay activation failed:와 Satispay의 메시지가 표시되며, 코드가 이 환경의 것인지, 아직 사용되지 않았는지 확인하라는 안내가 나타납니다. 문자와 숫자가 아닌 문자가 포함된 코드는 아무것도 전송되기 전에 거부됩니다. 환경에 새 코드를 저장하면 그 환경의 이전 연결은 대체됩니다.
결제 알림
Satispay에서는 설정할 것이 없습니다. 모든 결제에는 자체 콜백 URL이 있으며, 결제가 바뀌면 Satispay가 이 URL을 호출합니다. 모듈은 주문을 생성하거나 변경하기 전에 Satispay API에서 결제를 다시 읽습니다. Callback URL 필드는 이 URL의 예시를 보여 줍니다. 친숙한 URL을 사용하면 다음과 같습니다: https://your-shop/module/wcp_satispay_gateway/callback?id_cart={cart}&payment_id={uuid}. 앞에 /en/ 같은 언어 코드가 붙을 수도 있습니다. 이 URL은 인터넷에서 접근 가능해야 하며, 앞단에 기본 인증(basic authentication)이 없어야 합니다. 콜백은 쇼핑몰이 유지 보수 모드일 때도 작동하며, 쇼핑몰의 국가 제한의 영향을 받지 않습니다.
고급
Debug log: API 호출과 결제 이벤트를 모듈 폴더의 logs/satispay_p_debug.log.php에 기록합니다. 이 파일은 웹에서 열 수 없습니다. 키와 고객 데이터는 기록되지 않습니다. 이 옵션이 꺼져 있어도 오류는 항상 기록됩니다. 기본값: off.
Log: 로그의 크기와 최근 항목을 표시합니다. Clear log를 클릭하면 로그를 비웁니다.
Delete data on uninstall: 켜져 있으면 모듈을 제거할 때 설정, 두 환경의 Satispay 키, 로그가 삭제됩니다. 주문에 저장된 Satispay 결제와 환불, 그리고 주문 상태 Satispay payment on hold는 항상 유지됩니다. 기본값: off.
체크아웃
결제 단계에서 고객은 결제 수단(기본값 Satispay)을 선택하고 주문을 확인합니다. 모듈은 장바구니 총액에 대해 유로로 된 Satispay 결제를 생성하며, 참조 번호로 장바구니 번호를 사용하고, 고객을 Satispay 결제 페이지로 보냅니다. 컴퓨터에서 고객은 Satispay 앱으로 QR 코드를 스캔합니다. 휴대폰에서 고객은 앱에서 결제를 확인합니다. 이 시점에는 아직 주문이 존재하지 않습니다.
결제 후 고객은 쇼핑몰로 돌아갑니다. 주문은 Satispay가 결제를 확인한 후에만 결제 완료로 표시됩니다. 모듈은 Satispay API에서 결제를 읽고, 그 결제가 이 장바구니를 위해 생성되었는지 확인하며, 상태, 금액(센트 단위), 통화를 장바구니와 비교합니다. 이는 Satispay가 콜백 URL을 호출할 때와 고객이 돌아올 때 모두 수행되며, 먼저 도착하는 쪽이 처리됩니다. 그런 다음 주문이 생성되고 고객은 표준 주문 확인 페이지를 봅니다. 고객이 돌아왔을 때 Satispay가 아직 결제를 확인하지 않았다면, Payment confirmation 페이지에 Satispay has not confirmed your payment yet. The order will be updated automatically as soon as the confirmation arrives.와 Check again 버튼이 표시됩니다. 콜백은 도착하는 즉시 주문을 생성합니다.
고객이 결제하지 않고 Satispay 페이지를 떠나면, 모듈은 Satispay에서 결제를 취소하므로 포기된 페이지는 더 이상 결제할 수 없습니다. 고객은 Your Satispay payment was cancelled and nothing was charged. You can try again or choose another payment method. 메시지와 함께 체크아웃으로 돌아갑니다. 고객이 앱에서 결제를 거절한 경우에도 같은 메시지가 표시됩니다. 장바구니는 유지됩니다.
같은 장바구니에 대해 새 Satispay 결제를 만들기 전에 이전 결제가 확인됩니다. 대기 중인 결제는 Satispay에서 취소되고, 이미 결제되었다면 주문이 그 결제로 생성되며 두 번째 결제는 이루어지지 않습니다.
결제를 시작할 수 없으면 고객은 짧은 메시지와 함께 체크아웃에 머무릅니다. 쇼핑몰이 연결되지 않았거나 Satispay가 키를 거부하면 Satispay is not available at the moment. Please choose another payment method.가, 다른 오류의 경우 Unable to create the Satispay payment. Please try again or choose another payment method.가 표시됩니다. 원인은 로그에 기록됩니다.
모듈은 유로로 된 일회성 결제만 받습니다. 구독, 저장된 결제 수단, 사전 승인, 식권은 지원하지 않습니다. 대기 중인 결제를 주기적으로 확인하는 기능은 없습니다. Satispay의 콜백도 고객의 복귀도 쇼핑몰에 도달하지 않으면 주문은 생성되지 않으며, 결제는 Satispay Dashboard에서만 볼 수 있습니다.
주문 및 환불
주문 상태
No order yet: 고객이 Satispay로 이동했지만 아직 결제하지 않았거나, Satispay가 아직 결제를 확인하지 않은 상태입니다. 장바구니와 모듈의 Satispay 결제만 존재합니다.
Payment accepted: 결제가 확인되었습니다. 결제는 Satispay 결제 ID를 거래 ID로 하여 기록되며, 메모에는 Satispay 결제, 금액, 확인 방식(callback, redirect or checkout)이 표시됩니다.
Satispay payment on hold: Satispay가 장바구니 총액과 다른 금액이나 통화를 보고한 경우(예: 결제가 시작된 후 다른 탭에서 장바구니가 변경된 경우), 또는 주문이 취소된 후에 결제가 승인된 경우입니다. 받은 금액은 주문에 기록되며, 메모가 이를 설명합니다. Satispay Dashboard에서 결제를 확인한 다음 주문을 처리하거나 결제를 환불하십시오. 같은 장바구니에 대해 올바른 금액의 다른 결제가 나중에 승인되면, 주문은 Payment accepted로 바뀝니다.
Refunded: 모듈을 통해 결제 전액이 환불되었습니다.
이미 결제된 주문에 두 번째 결제가 승인되더라도 주문은 변경되지 않습니다. 메모는 Satispay Dashboard에서 중복 결제를 환불하라고 안내합니다. 반복된 확인이 취소되었거나 환불된 주문을 다시 열지는 않습니다.
Satispay 결제 블록
주문 페이지에는 Satispay payment 블록이 표시되며, Satispay 결제 ID, 상태, 결제 및 환불 금액, 샌드박스 결제용 Sandbox 배지, 환불 내역, 각 결제 시도와 환경이 표시되는 Satispay payments of this cart 목록, 주문의 Satispay notes가 포함됩니다.
환불
Satispay payment 블록에 금액을 입력합니다(아직 환불되지 않은 금액이 자동으로 채워집니다). 필요하면 사유를 입력하고 Refund via Satispay를 클릭합니다. Refund this amount through Satispay? This cannot be undone. 질문을 확인하십시오. 전액 환불과 부분 환불을 지원합니다. 주문을 편집할 권한이 있어야 하며, Modules 페이지에 대한 접근 권한은 필요하지 않습니다. 환불은 Satispay가 해당 결제에 대해 청구한 금액으로 제한됩니다. 따라서 금액 불일치 후에는 주문 총액이 아니라 고객이 실제로 지불한 금액까지 환불할 수 있습니다. 환불은 결제가 이루어진 환경(운영 또는 샌드박스)으로 전송되므로, 해당 환경이 계속 연결되어 있어야 합니다. 환불은 Satispay가 승인해야만 완료된 것으로 간주됩니다. 성공한 환불은 Satispay 환불 ID와 사유와 함께 환불 내역과 메모에 추가됩니다. Satispay가 환불을 승인하지 않으면 블록에 오류가 표시되며 환불은 기록되지 않습니다. 전액 환불은 주문을 Refunded로 설정합니다. 부분 환불은 상태를 변경하지 않습니다.
모듈은 크레딧 슬립(credit slip)을 만들지 않습니다. 주문 페이지의 표준 PrestaShop 환불 버튼은 Satispay를 통해 돈을 돌려보내지 않습니다. Satispay Dashboard에서 한 환불은 PrestaShop에 기록되지 않습니다. 필요하면 주문을 수동으로 업데이트하십시오.
라이선스 키
이 모듈은 vibefox.net에서 받은 VibeFox 라이선스 키로 작동합니다. 라이선스 블록 License — VibeFox Satispay Gateway는 Modules > Module Manager > VibeFox Satispay Gateway > Configure 페이지에서 설정 위에 있는 첫 번째 블록입니다. License key에 키를 붙여 넣고 Activate를 클릭합니다. 그 후 블록에는 마스킹된 키, 상태(예: 라이선스가 유효한 날짜와 도메인), 그리고 상태를 다시 확인하는 Check now, 다른 키를 입력하는 Change key, 이 쇼핑몰에서 키를 제거하는 Remove key 버튼이 표시됩니다. 그 아래에는 Product: presta-payment-satispay 줄과 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 계정에서 슬롯을 해제하십시오.
활성 키가 없으면 체크아웃에서 고객에게 Satispay가 표시되지 않습니다. 그래도 결제가 시작되면 고객에게 This payment method is not available. Please choose another one.가 표시됩니다. PrestaShop 스토어프런트는 백오피스에 로그인했는지 알지 못하므로, 결제 수단은 귀하에게도 숨겨집니다. 키를 구매하기 전에 모듈을 설정할 수는 있지만, 체크아웃에서 테스트할 수는 없습니다. Modules > Module Manager의 Alerts 탭에 알림이 나타납니다. 기존 주문은 영향을 받지 않습니다. 이미 시작된 결제는 여전히 확인되며, 환불도 작동합니다.
라이선스가 만료되어도 모듈은 계속 작동하지만, 업데이트와 지원에는 갱신이 필요합니다. 백오피스에서 작업하는 동안 상태는 자동으로 다시 확인됩니다. 키를 입력한 후 처음 14일 동안은 하루에 한 번, 그 후에는 일주일에 한 번입니다. cron 작업은 필요하지 않습니다. 모듈을 제거하거나 초기화하면 라이선스 키와 라이선스 상태는 항상 삭제됩니다.
문제 해결
체크아웃에 Satispay가 나타나지 않습니다: 라이선스가 활성 상태인지, Enable/Disable이 켜져 있는지, 사용 중인 환경이 연결되어 있는지(Status 필드에 해당 환경의 Connected가 표시되는지), 장바구니 통화가 EUR인지 확인하십시오. Payment > Preferences에서 이 모듈이 유로, 고객의 국가, 고객 그룹에 대해 허용되어 있는지도 확인하십시오.
결제는 완료되었지만 주문이 생성되지 않았습니다: 주문은 Satispay가 쇼핑몰을 호출하거나 고객이 돌아올 때 생성됩니다. 쇼핑몰이 인터넷에서 접근 가능한지, 콜백 URL 앞에 기본 인증이 없는지 확인하고, Debug log를 켜서 Log 필드에서 콜백을 확인하십시오. 결제는 Satispay Dashboard에서 볼 수 있습니다.
콜백이 Payment status unavailable, retry later. 또는 Not configured.를 응답합니다: 모듈이 Satispay에서 결제를 읽지 못했거나, 결제의 환경이 연결되어 있지 않습니다. 주문은 변경되지 않습니다. Satispay가 다시 호출합니다. 연결 상태와 로그를 확인하십시오.
콜백이 Busy, retry later.를 응답합니다: 같은 시점에 다른 요청이 장바구니를 확인하고 있었거나, 주문을 생성할 수 없었습니다(예: 모듈이 비활성화된 경우). Satispay가 다시 호출합니다. 로그에 원인이 표시됩니다.
콜백이 Unknown payment. 또는 Missing or invalid payment_id.를 응답합니다: 이 결제는 이 쇼핑몰이 이 장바구니를 위해 만든 것이 아니거나, 요청이 Satispay 콜백이 아닙니다. 아무것도 변경되지 않습니다.
활성화가 실패합니다: 활성화 코드는 한 번만 사용할 수 있습니다. Sandbox Mode에서 선택한 환경의 코드인지 확인하십시오(운영에는 운영 코드, 샌드박스에는 샌드박스 코드). 새 코드를 생성하고 다시 저장하십시오. 페이지에 RSA 키 쌍을 생성할 수 없다고 나오면, 호스팅 업체에 PHP OpenSSL 확장을 활성화해 달라고 요청하십시오. Satispay에 연결할 수 없다면 서버가 외부로 HTTPS 연결을 열 수 있는지 확인하십시오.
샌드박스에서 운영으로 전환한 후 체크아웃에서 Satispay가 사라졌습니다: 샌드박스와 운영은 서로 다른 키를 사용합니다. Sandbox Mode를 끈 상태에서 운영 활성화 코드를 붙여 넣고 저장하십시오.
고객에게 This payment method is not available.가 표시됩니다: 이 결제 수단이 장바구니에 허용되지 않았거나(Payment > Preferences의 국가, 통화 또는 고객 그룹), 비활성화되었거나, 사용 중인 환경이 연결되지 않은 상태입니다.
결제 후 주문이 Satispay payment on hold 상태입니다: Satispay payment 블록의 메모를 읽고(주문 상태 참조), Satispay Dashboard에서 결제를 확인한 다음 주문을 처리하거나 결제를 환불하십시오.
환경이 더 이상 연결되지 않아 환불이 실패합니다: 결제는 운영 또는 샌드박스에서 이루어졌지만, 그 환경에는 이제 키가 없습니다. 활성화 코드로 다시 연결하거나, Satispay Dashboard에서 결제를 환불하십시오.
Satispay did not accept the refund 메시지와 함께 환불이 실패합니다: Satispay가 accepted가 아닌 상태를 반환했습니다. PrestaShop은 환불을 기록하지 않았으며, 메모에 이를 알려 줍니다. Satispay Dashboard에서 확인하십시오.
제거
Modules > Module Manager로 이동하여 VibeFox Satispay Gateway 옆의 메뉴를 열고 Uninstall을 선택합니다. 이 모듈의 라이선스 키와 라이선스 상태는 항상 제거됩니다. Delete data on uninstall이 켜져 있으면 설정, 두 환경의 Satispay 키, 로그가 제거됩니다. 꺼져 있으면 모든 설정과 키는 나중에 다시 설치할 수 있도록 보관됩니다. 주문에 저장된 Satispay 결제와 환불, 그리고 주문 상태 Satispay payment on hold는 항상 유지되므로, 환경이 다시 연결되면 재설치 후에도 이전에 결제된 주문을 환불할 수 있습니다. 기존 주문은 결제 메모와 거래 ID를 유지합니다.
Satispay는 각 소유자의 상표입니다. 이 모듈은 Satispay와 제휴하거나 Satispay의 승인을 받은 것이 아닙니다.
