VibeFox dLocal for PrestaShop — 도움말
요구 사항
PrestaShop: 8.0부터 9.x까지.
PHP: 8.0 이상. 모듈은 이전 PHP 버전에서는 설치되지 않습니다.
쇼핑몰 접근: dLocal Go가 결제 알림을 보낼 수 있도록 쇼핑몰은 인터넷에서 접근 가능해야 하며, 운영 환경에서는 HTTPS를 사용해야 합니다.
dLocal Go 계정: dLocal Go 대시보드의 Payment integration 섹션에서 API 키와 API 시크릿이 필요합니다. 샌드박스는 dashboard-sbx.dlocalgo.com, 운영은 dashboard.dlocalgo.com입니다. 샌드박스와 운영은 서로 다른 자격 증명을 사용합니다. 엔터프라이즈용 dLocal Payments API(X-Login / X-Trans-Key 자격 증명)는 별개의 제품이며 지원되지 않습니다.
국가 및 통화: 모듈은 이를 제한하지 않습니다. 고객의 국가와 장바구니 통화에 대해 어떤 결제 수단을 제공할지는 dLocal Go가 결정합니다. PrestaShop의 결제 제한만 적용됩니다.
VibeFox 라이선스 키: vibefox.net에서 구매합니다. 키 하나는 도메인 하나에서 작동합니다.
설치
1. 백오피스에서 Modules > Module Manager로 이동하여 Upload a module을 클릭합니다. 모듈의 ZIP 파일을 선택합니다.
2. 업로드가 끝나면 Configure를 클릭하거나, 나중에 모듈 목록에서 VibeFox dLocal Payment를 찾아 Configure를 클릭합니다.
3. VibeFox 라이선스 키를 Configure 페이지 상단 라이선스 블록의 License key에 붙여 넣고 Activate를 클릭합니다(라이선스 키 항목 참조).
4. Environment를 선택하고 해당 환경의 API 키와 API 시크릿을 붙여 넣습니다(설정 항목 참조).
5. Enable/Disable을 켜고 Save를 클릭합니다. 샌드박스에서 테스트 결제를 한 다음 Environment를 Production으로 전환합니다.
설치 시 모듈은 주문 상태 dLocal payment on hold를 생성합니다. PrestaShop은 모든 통화, 국가, 고객 그룹에 대해 새 결제 모듈을 제공합니다. Payment > Preferences에서 이를 제한할 수 있습니다.
설정
모든 설정은 모듈 페이지에 있습니다: Modules > Module Manager > VibeFox dLocal Payment > Configure. 각 섹션에는 자체 Save 버튼이 있으며, 이 버튼은 페이지 전체를 저장합니다. 첫 번째 섹션의 제목에는 SANDBOX 또는 PRODUCTION이 표시됩니다. 선택한 환경의 API 키와 시크릿을 입력하기 전까지는 체크아웃에서 결제 수단이 숨겨진다는 경고가 페이지에 표시됩니다. 예를 들어 Enter the sandbox API key and secret: until then the payment method is hidden at checkout. 샌드박스가 선택되고 결제 수단이 활성화되어 있으면 Sandbox mode is active: payments are simulated, no money is charged.가 표시됩니다.
dLocal Go
Enable/Disable: Enable dLocal Go는 결제 수단을 켜거나 끕니다. 기본값: 끔.
Title: 고객이 체크아웃에서 보는 결제 수단 이름입니다. 주문에도 결제 수단 이름으로 저장됩니다. 기본값: dLocal Go. 필수.
Description: 체크아웃에서 결제 수단 아래에 표시되는 텍스트입니다. 기본값: Pay with local cards, bank transfer or cash via dLocal Go.
API 자격 증명
dLocal Go 대시보드의 Payment integration에서 API 키와 API 시크릿을 복사합니다: dashboard-sbx.dlocalgo.com(샌드박스) 또는 dashboard.dlocalgo.com(운영). 이 섹션에는 두 대시보드로 가는 링크가 있습니다.
Environment: 새 결제에 사용할 자격 증명과 dLocal Go 서버를 정합니다.
결제의 환불과 알림은 항상 해당 결제가 이루어진 환경의 자격 증명을 사용합니다. 따라서 다른 환경의 결제가 아직 진행 중이거나 환불될 수 있는 동안에는 그 환경의 자격 증명을 유지하세요.
Sandbox API Key: dLocal Go 샌드박스 API 키입니다.
Sandbox API Secret: dLocal Go 샌드박스 API 시크릿입니다.
Production API Key: dLocal Go 운영 API 키입니다.
Production API Secret: dLocal Go 운영 API 시크릿입니다.
저장된 키와 시크릿은 다시 표시되지 않습니다. 필드는 비어 있으며 Saved — leave empty to keep it.이 표시됩니다. 변경하려는 경우에만 새 값을 입력하세요.
Clear saved credentials: 키 또는 시크릿에 체크하고 Save를 클릭하면 삭제됩니다. 빈 필드는 저장된 값을 유지합니다.
결제
Default country: dLocal Go는 고객 국가의 결제 수단을 표시합니다. 국가는 청구지 주소에서 가져오고, 없으면 배송지 주소에서 가져옵니다. 장바구니에 둘 다 없으면 이 국가를 사용합니다. 기본값: Uruguay.
Auto-complete orders: 결제된 주문을 Payment accepted 대신 Delivered로 설정합니다. 상태는 한 번의 상태 변경으로 즉시 설정됩니다. 기본값: 끔.
Notifications (IPN): 알림은 결제나 환불이 변경되었음을 쇼핑몰에 알려 줍니다. 모듈은 결제와 환불마다 알림 URL을 dLocal Go에 전송하므로 dLocal Go 대시보드에서 따로 설정할 것이 없습니다. 이 필드에는 두 URL이 표시됩니다:
알림은 API 시크릿(HMAC-SHA256)으로 검증됩니다. 유효한 서명이 없는 알림은 거부됩니다. 알림은 결제가 이루어진 환경의 자격 증명으로 서명되어야 합니다. 그 후에는 결제의 상태, 금액, 통화를 항상 dLocal Go API에서 다시 읽어오며, 알림의 내용은 신뢰하지 않습니다. 알림이 없으면 고객이 쇼핑몰로 돌아왔을 때만 주문이 생성됩니다.
고급
Debug log: dLocal Go 요청과 알림을 모듈 폴더의 logs/dlocal_p_debug.log.php에 기록합니다. 이 파일은 웹에서 열 수 없습니다. API 자격 증명과 개인 데이터는 기록되지 않습니다. 오류와 경고는 항상 기록되며, 그 밖의 항목은 이 옵션이 켜져 있는 동안에만 기록됩니다. 기본값: 끔.
Log: 로그의 크기와 최근 항목을 표시합니다. Clear log를 클릭하면 로그를 비울 수 있습니다.
Delete data on uninstall: 켜면 모듈을 제거할 때 게이트웨이 설정과 로그가 삭제됩니다. 주문의 결제 데이터(dLocal 결제 및 환불)와 dLocal payment on hold 주문 상태는 항상 유지되므로 기존 주문은 계속 작동합니다. 기본값: 끔.
체크아웃
결제 단계에서 고객은 결제 수단(기본값 dLocal Go)을 선택합니다. 샌드박스 모드에서는 체크아웃에서 결제 수단 아래에 Sandbox mode: no real payment is made.가 표시됩니다. 확인 후 모듈은 장바구니 통화로 장바구니 총액에 대한 dLocal Go 결제를 생성합니다. 이때 고객의 국가, 이름, 이메일, 전화번호를 함께 전달하며, 고객을 dLocal Go 결제 페이지로 보냅니다. 고객은 그곳에서 자국의 결제 수단으로 결제합니다. dLocal Go 페이지에서 결제는 Order #와 장바구니 번호로 표시됩니다. 이 시점에는 아직 주문이 존재하지 않습니다.
결제 후 고객은 쇼핑몰로 돌아옵니다. 주문은 dLocal Go가 확인한 후에만 결제 완료로 표시됩니다. 서명된 알림을 통해서, 또는 고객이 돌아올 때 서버 측에서 dLocal Go API에 요청하여 확인합니다. 그런 다음 주문이 생성되고, 고객은 Your payment with dLocal Go has been received.가 표시된 표준 주문 확인 페이지를 봅니다. 주문이 보류되었다면 페이지에 Your dLocal Go payment has been received and is being reviewed by the store. You will be informed when your order is confirmed.가 표시됩니다. dLocal Go가 아직 결제를 확인하지 않았다면(예: 아직 지불되지 않은 현금 결제 바우처, 또는 dLocal Go에 연결할 수 없는 경우), Payment confirmation 페이지가 고객에게 다시 결제하지 말라고 안내하며 Check again과 Back to checkout을 제공합니다. dLocal Go가 결제를 확인하는 즉시 주문이 생성됩니다.
고객이 결제하지 않고 dLocal Go 페이지를 떠나면 체크아웃으로 돌아와 The payment at dLocal Go was not completed. You can try again or choose another payment method.를 봅니다. 결제가 거절되었거나 만료되었다면 메시지는 Your dLocal payment was not completed: it was declined or it expired. Please try again or choose another payment method.입니다. 장바구니는 유지됩니다. 새로 시도할 때마다 새 dLocal Go 결제가 생성되며, 같은 장바구니의 이전 결제 링크도 여전히 결제할 수 있고 그 경우 주문이 생성됩니다.
dLocal Go가 결제를 시작할 수 없으면 고객은 체크아웃에 머무르며 dLocal could not start the payment: 같은 짧은 메시지와 함께 dLocal이 알려준 사유를 보게 됩니다. 고객의 국가와 장바구니 통화가 dLocal Go 계정에서 활성화되어 있지 않은 경우에도 같은 상황이 발생합니다. dLocal Go가 자격 증명을 거부하면 고객은 This payment method is temporarily unavailable. Please choose another payment method or contact us.를 봅니다. 기술적인 사유는 로그에 기록됩니다.
알림은 쇼핑몰이 유지 보수 모드에 있는 동안에도 작동하며, 쇼핑몰의 국가 제한에 의해 차단되지 않습니다.
모듈은 dLocal Go 페이지에서의 일회성 결제만 받습니다. 쇼핑몰 사이트에는 카드 입력 양식, 저장된 카드, 구독, 승인과 캡처의 분리가 없습니다.
주문 및 환불
주문 상태
아직 주문 없음: 고객이 dLocal Go로 이동했지만 결제하지 않았거나, 결제가 dLocal Go에서 아직 대기 중입니다. 장바구니만 존재합니다.
Payment accepted or Delivered: 결제가 확인되었습니다. 주문은 결제 수락 상태가 되며, Auto-complete orders가 켜져 있으면 배송 완료 상태가 됩니다. 결제는 dLocal 결제 ID를 거래 ID로 하여 기록되며, 메모에 환경과 결제 ID가 표시됩니다.
dLocal payment on hold: dLocal Go가 장바구니 총액과 다른 금액이나 통화를 보고했거나(예: 결제를 시작한 뒤 다른 탭에서 장바구니가 변경됨), 주문이 취소된 후 결제가 도착했습니다. 메모에 이유가 설명되어 있습니다. dLocal Go 대시보드와 대조한 뒤 주문을 처리하거나 결제를 환불하세요.
Refunded: 결제가 모듈을 통해 전액 환불되었습니다.
거절되거나, 만료되거나, 취소된 결제는 기존 주문을 절대 변경하지 않습니다. 이미 결제된 주문에 두 번째 결제가 도착하더라도 주문은 변경되지 않습니다. 메모에서 중복 결제를 dLocal Go 대시보드에서 환불하라고 안내합니다.
dLocal Go 결제 블록
주문 페이지에는 dLocal Go payment 블록이 표시되며, dLocal 결제 ID, 환경(테스트 결제에는 Sandbox 배지 표시), 결제 상태, dLocal Go가 청구한 금액과 환불된 금액, 환불 양식, 환불 내역, 주문의 dLocal Go notes가 포함됩니다.
환불
dLocal Go payment 블록에서 금액을 입력합니다(아직 환불되지 않은 금액이 자동으로 채워집니다). 필요하면 사유를 입력하고 Refund via dLocal Go를 클릭합니다. Refund this amount through dLocal Go? This cannot be undone. 확인 질문에 동의하세요. 전액 및 부분 환불이 지원됩니다. 주문을 편집할 권한이 필요하며, Modules 페이지에 접근할 필요는 없습니다. 환불은 dLocal Go가 청구한 금액과 통화로 이루어집니다. 따라서 금액이나 통화가 어긋난 경우에는 주문 총액이 아니라 고객이 실제로 결제한 금액까지 환불할 수 있습니다. 환불은 결제가 이루어진 환경으로 해당 환경의 자격 증명을 사용하여 전송됩니다. dLocal Go가 환불을 수락하지 않으면 블록에 오류가 표시되며 환불은 기록되지 않습니다. 수락된 환불은 환불 ID, 상태, 사유와 함께 환불 내역과 메모에 추가됩니다. 전액 환불은 주문을 Refunded 상태로 설정합니다. 부분 환불은 상태를 변경하지 않습니다.
이후 dLocal Go는 환불 알림으로 최종 환불 상태를 전달하며, 이 내용이 메모에 추가됩니다. dLocal Go가 나중에 수락했던 환불을 거절하거나 취소하면, 메모에 돈이 고객에게 반환되지 않았다는 경고가 표시됩니다. 고객에게 다시 환불하거나 다른 방법으로 환불하세요.
모듈은 크레딧 슬립을 만들지 않습니다. 주문 페이지의 표준 PrestaShop 환불 버튼은 dLocal Go를 통해 돈을 돌려보내지 않습니다. dLocal Go 대시보드에서 이루어진 환불은 PrestaShop에 환불로 기록되지 않으며, 보통 메모도 추가되지 않습니다. 필요하면 주문을 수동으로 업데이트하세요.
라이선스 키
모듈은 vibefox.net에서 받은 VibeFox 라이선스 키로 작동합니다. License — VibeFox dLocal Payment 라이선스 블록은 Modules > Module Manager > VibeFox dLocal Payment > Configure 페이지에서 설정 위쪽에 있는 첫 번째 블록입니다. License key에 키를 붙여 넣고 Activate를 클릭합니다. 그러면 블록에 키가 가려진 상태로 표시되고, 상태(예: 라이선스가 유효한 날짜와 도메인)와 함께 상태를 다시 확인하는 Check now, 다른 키를 입력하는 Change key, 이 쇼핑몰에서 키를 제거하는 Remove key 버튼이 나타납니다. 그 아래에는 Product: presta-payment-dlocal 줄과 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 계정에서 슬롯을 해제하세요.
활성 키가 없으면 체크아웃에서 고객에게 dLocal Go가 표시되지 않습니다. 그럼에도 결제가 시작되면 고객은 This payment method is not available. Please choose another one.를 보게 됩니다. PrestaShop 스토어프런트는 백오피스에 로그인했는지 알지 못하므로, 결제 수단은 관리자에게도 숨겨집니다. 키를 구매하기 전에 모듈을 설정할 수는 있지만 체크아웃에서 테스트할 수는 없습니다. Modules > Module Manager의 Alerts 탭에 알림이 표시됩니다. 기존 주문은 영향을 받지 않습니다. 이미 시작된 결제는 여전히 확인되며, 환불도 작동합니다.
라이선스가 만료되어도 모듈은 계속 작동하지만, 업데이트와 지원에는 갱신이 필요합니다. 백오피스에서 작업하는 동안 상태는 자동으로 다시 확인됩니다. 키를 입력한 후 처음 14일 동안은 하루에 한 번, 그 후에는 일주일에 한 번 확인합니다. cron 작업은 필요하지 않습니다. 모듈을 제거하거나 초기화하면 라이선스 키와 라이선스 상태는 항상 삭제됩니다.
문제 해결
체크아웃에 dLocal Go가 나타나지 않음: 라이선스가 활성 상태인지, Enable/Disable이 켜져 있는지, 선택한 Environment의 API 키와 API 시크릿이 설정되어 있는지 확인하세요. 설정 페이지는 이들이 없으면 경고를 표시합니다. Payment > Preferences에서 모듈이 장바구니 통화, 고객의 국가, 고객 그룹에 대해 허용되어 있는지 확인하세요.
결제는 완료되었으나 주문이 생성되지 않음: dLocal Go가 알림 URL에 도달하지 못했고(방화벽, 기본 인증, 공개 주소 없음), 고객이 쇼핑몰로 돌아오지 않았습니다. Debug log를 켜고, Log 필드를 확인한 다음 dLocal Go 대시보드에서 결제를 확인하세요. 알림이 도착하거나 고객이 Check again을 열면 주문이 생성됩니다.
알림 응답이 Missing signature 또는 Invalid signature: 설정의 API 키와 시크릿이 알림을 보낸 계정의 것이 아닙니다. 알림은 결제 환경의 자격 증명으로 검증되므로, Environment를 바꾸기 전에 시작된 결제는 해당 환경의 자격 증명이 설정에 남아 있는 한 계속 확인됩니다.
알림 응답이 Gateway not configured: 결제 환경의 자격 증명이 없습니다. 입력하세요. dLocal Go가 알림을 다시 시도합니다.
알림 응답이 API verification failed: 결제를 읽기 위해 dLocal Go API에 연결할 수 없었습니다. dLocal Go가 알림을 다시 시도합니다.
알림 응답이 Temporarily unavailable: 같은 시점에 다른 요청이 주문을 확인하고 있었거나, 주문을 만들 수 없었습니다(예: 모듈이 비활성화됨). dLocal Go가 알림을 다시 시도합니다. 이유는 로그에 있습니다.
알림 응답이 Order not found: 이 결제는 이 쇼핑몰의 장바구니에 속하지 않습니다. 예를 들어 같은 dLocal Go 계정을 사용하는 다른 사이트에서 만들어졌을 수 있습니다.
고객이 This payment method is temporarily unavailable을 봄: dLocal Go가 API 키 또는 시크릿을 거부했습니다. 선택한 환경의 자격 증명을 확인하세요.
고객이 Payment gateway is not properly configured를 봄: 선택한 환경의 자격 증명이 없습니다.
결제 후 주문이 dLocal payment on hold 상태: dLocal Go payment 블록의 메모를 읽으세요. 결제된 금액이나 통화가 장바구니와 달랐거나, 주문이 취소된 후 결제가 도착했습니다. 주문을 처리하거나 결제를 환불하세요.
자격 증명이 없다는 메시지와 함께 환불이 실패: 결제는 다른 환경에서 이루어졌고, 그 환경의 자격 증명이 설정되어 있지 않습니다. 자격 증명을 입력한 뒤 다시 시도하세요.
개발자를 위해 말씀드리면, 모듈 문서에 actionWcpDlocalPaymentData와 actionWcpDlocalCurrencyDecimals 훅이 나와 있습니다.
제거
Modules > Module Manager로 이동하여 VibeFox dLocal Payment 옆의 메뉴를 열고 Uninstall을 선택합니다. 이 모듈의 라이선스 키와 라이선스 상태는 항상 삭제됩니다. Delete data on uninstall이 켜져 있으면 게이트웨이 설정과 로그가 삭제됩니다. 꺼져 있으면 나중에 재설치할 수 있도록 모든 설정이 유지됩니다. 주문의 dLocal 결제와 환불, 그리고 dLocal payment on hold 주문 상태는 항상 유지되므로, 이전에 결제된 주문은 재설치 후에도 환불할 수 있습니다. 기존 주문은 결제 메모와 거래 ID를 그대로 유지합니다.
dLocal은 해당 소유자의 상표입니다. 이 모듈은 dLocal과 제휴하거나 dLocal의 승인을 받은 것이 아닙니다.
