VibeFox PayU for PrestaShop — 도움말
요구 사항
PrestaShop: 8.0 ~ 9.x.
PHP: 8.0 이상. 이전 PHP 버전에서는 모듈 설치가 거부됩니다.
통화: PLN, EUR, CZK, HUF, RON, BGN, GBP, USD, CHF, DKK, NOK, SEK, UAH 중 하나. 해당 통화는 PayU에서도 귀하의 판매 시점에 대해 활성화되어 있어야 합니다. 다른 통화의 경우 체크아웃에서 결제 옵션이 숨겨집니다.
쇼핑몰의 인터넷 접근: PayU는 결제 알림을 쇼핑몰로 보내므로, 쇼핑몰은 인터넷에서 접근 가능해야 합니다(HTTP 인증이나 방화벽 뒤에 있으면 안 됩니다). 알림이 없어도 고객이 PayU에서 돌아올 때 결제가 확인됩니다.
PayU 계정: 판매 시점(POS)의 키 네 개가 필요합니다: POS ID, Second key (MD5), OAuth client_id 및 OAuth client_secret. PayU 가맹점 패널의 Online payments > My shops > your shop > Points of sale (POS) > your POS > Configuration keys에서 확인할 수 있습니다. 샌드박스 키는 별도의 PayU 샌드박스 계정에서 발급됩니다.
VibeFox 라이선스 키: vibefox.net에서 구매합니다. 키 하나는 도메인 하나에서 작동합니다.
설치
1. 백오피스에서 Modules > Module Manager로 이동한 후 Upload a module을 클릭하십시오. 모듈 ZIP 파일을 선택하십시오.
2. 업로드가 완료되면 Configure를 클릭하거나, 나중에 모듈 목록에서 VibeFox PayU Payment를 찾아 Configure를 클릭하십시오.
3. Configure 페이지 상단의 라이선스 블록에서 License key 입력란에 VibeFox 라이선스 키를 입력하고 Activate를 클릭하십시오(라이선스 키 참조).
4. Sandbox 키 4개와 Live 키 4개를 입력하십시오(구성 참조). PayU에서 알림 URL을 설정할 필요는 없습니다.
5. Enable/Disable을 켜고 Save를 클릭하십시오. 테스트 결제를 마칠 때까지 Test Mode를 켜 두고, 이후 끄면 Live 키로 실제 결제를 받을 수 있습니다.
설치 시 모듈은 두 개의 주문 상태를 생성합니다: Awaiting PayU payment confirmation 및 PayU payment on hold. PrestaShop은 모든 통화, 국가 및 고객 그룹에 대해 새 결제 모듈을 활성화합니다. Payment > Preferences에서 이를 제한할 수 있습니다.
구성
모든 설정은 모듈 페이지에 있습니다: Modules > Module Manager > VibeFox PayU Payment > Configure. 각 섹션에는 개별 Save 버튼이 있으며, 이 버튼은 페이지 전체를 저장합니다. 샌드박스(테스트) 모드가 켜져 있는 동안(샌드박스(테스트) 모드가 켜져 있습니다: 결제는 PayU 샌드박스로 전송되며 실제 금액은 청구되지 않습니다. 테스트 모드에서 결제된 주문은 발송하지 마십시오.), 현재 모드의 키 네 개 중 하나가 없을 때, 그리고 PayU가 상점의 기본 통화를 허용하지 않을 때 페이지는 입력란 위에 경고를 표시합니다. 마지막 두 경우에는 체크아웃에서 PayU가 표시되지 않습니다.
저장하면 모든 키에서 공백과 줄바꿈이 제거됩니다. PayU 패널에서 복사할 때 이런 문자가 자주 포함되기 때문입니다. 비어 있는 Title은 저장되지 않으며, 페이지에 결제 수단의 제목을 입력하십시오.가 표시됩니다.
PayU
Enable/Disable: Enable PayU payment gateway는 결제 옵션을 켜거나 끕니다. 기본값: 꺼짐.
Title: 고객에게 표시되는 결제 수단 제목입니다. 주문에 저장되는 결제 수단 이름이기도 합니다. 기본값: PayU. 필수.
Description: 체크아웃에서 고객에게 표시되는 결제 수단 설명입니다. 기본값: Pay securely via PayU.
API 자격 증명
키는 PayU 가맹점 패널에서 찾을 수 있습니다: Online payments > My shops > your shop > Points of sale (POS) > your POS > Configuration keys. 샌드박스 키는 별도의 PayU 샌드박스 계정에서 발급됩니다. 모드의 키 네 개를 모두 입력해야 합니다.
Test Mode: PayU 샌드박스와 아래의 Sandbox 키를 사용합니다. 실제 금액은 청구되지 않습니다. 켜져 있는 동안 고객은 결제 옵션 아래에서 샌드박스 모드: 실제 결제가 이루어지지 않습니다.를 보게 됩니다. 실제 결제를 Live 키로 받으려면 끄십시오. 기본값: 켜짐.
Live POS ID: 운영 판매 시점의 POS ID(merchantPosId)입니다.
Live Second Key (MD5): PayU 알림의 서명을 확인하는 데 사용됩니다.
Live OAuth Client ID: 판매 시점의 OAuth client_id입니다.
Live OAuth Client Secret: 판매 시점의 OAuth client_secret입니다.
Sandbox POS ID: PayU 샌드박스 판매 시점의 POS ID입니다.
Sandbox Second Key (MD5): PayU 샌드박스 알림의 서명을 확인하는 데 사용됩니다.
Sandbox OAuth Client ID: 샌드박스 판매 시점의 OAuth client_id입니다.
Sandbox OAuth Client Secret: 샌드박스 판매 시점의 OAuth client_secret입니다.
저장된 Second Key와 client secret은 다시 표시되지 않습니다. 입력란은 비어 있고 저장됨 — 유지하려면 비워 두십시오.라고 표시됩니다. 값을 변경하려는 경우에만 새 값을 입력하십시오. POS ID와 client ID는 저장된 대로 표시됩니다.
Clear saved secrets: 비밀 값을 체크하고 Save를 클릭하면 삭제됩니다. 입력란이 비어 있으면 저장된 값이 유지됩니다.
모든 결제는 자신의 환경을 기억합니다. 결제의 알림, 상태 확인 및 환불은 항상 해당 환경의 키를 사용하므로, 모드를 전환한 후에도 이전 결제는 계속 작동합니다. 샌드박스 키로 서명된 알림은 실결제에 대해 절대 수락되지 않으며, 그 반대도 마찬가지입니다.
결제 알림
Notification URL: PayU가 알림을 보내는 주소를 표시합니다. 친숙한 URL을 사용하면 https://your-shop/module/wcp_payu_payment/webhook처럼 보이며, 언어 코드가 포함될 수도 있습니다. 모듈은 모든 결제와 함께 이 주소를 PayU에 전송하므로 PayU 패널에서 따로 설정할 필요가 없습니다. 인터넷에서 접근 가능한지 확인하십시오(방화벽이나 HTTP 인증으로 차단되지 않아야 합니다). 쇼핑몰이 유지 보수 모드에 있는 동안에도 알림은 작동하며, 쇼핑몰의 국가 제한에 의해 차단되지 않습니다.
고급
Receive payments automatically: 확인 대기 중인 결제를 자동으로 수취합니다. 이는 PayU 패널에서 해당 판매 시점의 자동 수취가 꺼져 있을 때만 의미가 있습니다. 그 경우 결제는 확인 대기(WAITING_FOR_CONFIRMATION) 상태가 됩니다. 이 옵션이 켜져 있으면 모듈은 즉시 이러한 결제를 수취하고, PayU가 결제 완료를 보고하면 주문을 생성합니다. 꺼져 있거나 수취에 실패하면, 주문은 Awaiting PayU payment confirmation 상태로 생성되며, 주문의 PayU 블록에 있는 버튼으로 결제를 수취하거나 취소합니다. 기본값: 켜짐.
Logging: 기술적 이벤트(장바구니 및 주문 번호, PayU 주문 ID, 상태, 오류; 키나 개인정보 제외)를 모듈 폴더의 logs/wc_pu_debug.log.php에 기록합니다. 이 파일은 웹에서 열 수 없습니다. 오류는 항상 기록되며, 다른 이벤트는 이 옵션이 켜져 있는 동안에만 기록됩니다. 기본값: 꺼짐.
Log: 로그의 크기와 최근 항목을 표시합니다. Clear log를 클릭하면 비워집니다.
Delete data on uninstall: 모듈을 제거할 때 모듈 설정과 로그를 삭제합니다. 주문 및 그 결제 데이터(PayU 거래, 환불, 주문 상태)는 절대 삭제되지 않습니다. 기본값: 꺼짐.
체크아웃
결제 단계에서 고객은 결제 옵션(기본값 PayU)을 선택하고, 설명과 결제를 완료하기 위해 PayU로 이동합니다(BLIK, 계좌 이체, 카드 및 기타 방식). 안내 문구를 봅니다. 확인하면 모듈은 장바구니 통화로 장바구니 합계 금액에 대한 PayU 주문을 생성하며, 설명에는 Cart #, 장바구니 번호 및 상점 이름이 포함되고, PayU 페이지 표시를 위해 상품, 배송비 및 선물 포장도 함께 전달됩니다. 고객의 이메일, 이름 및 전화번호가 PayU로 전달됩니다. PayU 페이지 언어는 PayU가 지원하는 경우 쇼핑몰 언어를 따르며, 그렇지 않으면 영어가 사용됩니다. 고객은 PayU 페이지로 이동하여 그곳에서 방식을 선택하고 결제합니다. 이 시점에서는 아직 주문이 존재하지 않습니다.
각 결제 시도마다 고유한 PayU 주문이 생성됩니다. 고객이 다시 시도하면, 장바구니의 이전 미완료 PayU 결제가 PayU에서 취소되므로 이전 결제 링크로 두 번 결제할 수 없습니다. 이전 결제가 이미 완료된 것으로 확인되면, 새 결제 대신 주문이 생성됩니다.
쇼핑몰로 돌아오는 것만으로는 주문이 결제되지 않습니다. 주문은 PayU가 확인한 후에만 결제 완료로 표시됩니다. 결제 환경의 Second Key로 서명된 알림을 받거나, 고객이 돌아올 때 서버에서 PayU 주문 상태를 확인하는 방식입니다(장바구니당 최대 10초에 한 번). PayU 주문은 이 장바구니를 위해 생성된 것이어야 하며, 금액과 통화가 일치해야 합니다. 모듈은 다음 PayU 상태를 처리합니다:
확인된 결제 후 고객은 표준 주문 확인 페이지를 봅니다. 확인 대기 중이거나 보류 중인 주문의 경우 페이지에 결제를 확인하고 있습니다. 확인이 완료되면 이메일로 알려 드리겠습니다.가 추가됩니다. 이후 이러한 주문의 결제가 취소되면 페이지에 PayU 결제가 완료되지 않았습니다. 이 주문에 대해 문의해 주십시오.가 표시됩니다.
고객이 돌아왔을 때 PayU가 아직 결제를 확인하지 않았다면, Payment confirmation 페이지에 PayU로부터 결제 확인을 아직 받지 못했습니다. 결제가 중단되었다면 다시 시도할 수 있습니다:(또는 PayU가 오류를 보고한 경우 결제가 완료되지 않았습니다. 다시 시도할 수 있습니다:)가 Pay again 및 Check again 버튼과 함께 표시됩니다. 알림이 도착하면 즉시 주문이 생성됩니다. 결제가 취소되었다면 고객은 결제가 완료되지 않았습니다. 다시 시도하거나 다른 결제 수단을 선택할 수 있습니다.와 함께 체크아웃으로 돌아갑니다. 장바구니는 유지됩니다.
PayU가 결제를 시작할 수 없으면 고객은 결제 오류입니다. 다시 시도하거나 다른 결제 수단을 선택하십시오.와 함께 체크아웃에 머무릅니다. 기술적 원인은 로그에 기록됩니다. 현재 모드의 키가 없으면 메시지는 결제 게이트웨이가 올바르게 구성되지 않았습니다. 관리자에게 문의하십시오.입니다.
결제와 확인 사이에 장바구니의 쿠폰이 더 이상 유효하지 않게 되면, 해당 쿠폰은 주문에서 제거됩니다. 그러면 고객이 할인된 가격을 지불했기 때문에, 주문은 쿠폰을 명시한 메모와 함께 PayU payment on hold 상태로 전환됩니다.
고객은 귀하의 체크아웃이 아닌 PayU 페이지에서 결제 방식을 선택합니다. 이 모듈에는 상점 내 카드 양식, 저장된 카드나 원클릭 결제, 정기결제, PayU 할부 또는 신용 위젯이 없습니다. 환경당 하나의 판매 시점을 사용합니다.
주문 및 환불
주문 상태
아직 주문 없음: 고객이 PayU로 이동했지만 결제하지 않았거나, PayU가 아직 결제를 확인하지 않은 상태입니다. 장바구니만 존재합니다.
Payment accepted: 결제가 확인되었습니다. 결제는 PayU 주문 ID를 거래 ID로 하여 기록되며, 메모에는 PayU 주문 ID, 금액, 환경(샌드박스 또는 live)이 표시됩니다.
Awaiting PayU payment confirmation: 결제가 승인되었으며 귀하의 처리를 기다리고 있습니다(자동 수취 꺼짐 또는 수취 실패). 아직 결제가 기록되지 않았습니다.
PayU payment on hold: 결제된 금액이나 통화가 장바구니와 일치하지 않았거나(주문은 결제 완료로 표시되지 않음), 쿠폰이 제거되었거나, 확인 대기 중인 결제의 금액이 달랐거나, 취소된 주문에 대해 결제가 완료되었습니다(결제는 기록됨). 메모에 해당 사유가 표시됩니다. 주문을 확인하여 처리하거나 결제를 환불하십시오.
Payment error: 확인 대기 중인 주문의 결제가 취소되었거나 거부되었습니다.
Refunded: 결제가 모듈을 통해 전액 환불되었습니다.
모든 알림은 한 번만 처리됩니다. 반복된 알림은 메모를 추가하거나 주문을 다시 변경하지 않습니다. 이미 결제되었거나 환불된 주문에 대해 다른 결제가 완료되면, 메모에서 PayU 패널에서 환불하라고 안내합니다. 이미 결제되었거나 마감된 주문의 확인 대기 결제는 돈이 두 번 청구되지 않도록 자동으로 취소됩니다.
PayU 결제 블록
주문 페이지에는 PayU 주문 ID, extOrderId, PayU 상태, 결제 및 환불된 금액, 샌드박스 결제용 Sandbox 배지, 환불 내역, 주문의 PayU notes가 포함된 PayU payment 블록이 표시됩니다. 이 블록의 작업에는 주문 편집 권한이 필요하며, Modules 페이지에 대한 접근 권한은 필요하지 않습니다.
확인 대기 중인 결제
확인 대기 중인 결제가 있는 주문의 경우 블록에 Receive PayU payment (waiting for confirmation)와 Cancel PayU payment (release the funds)가 표시됩니다. 질문을 확인하면 해당 작업은 결제 환경의 키로 PayU에 전송되고, 귀하의 이름과 함께 메모에 추가되며, 새로운 PayU 상태가 즉시 적용됩니다: 수취된 결제는 주문을 Payment accepted로, 취소된 결제는 Payment error로 설정합니다.
환불
PayU payment 블록에서 금액을 입력하고(아직 환불되지 않은 금액이 자동으로 채워집니다), 필요하면 사유를 입력한 후 Refund via PayU를 클릭하십시오. 이 금액을 PayU를 통해 환불하시겠습니까? 이 작업은 되돌릴 수 없습니다. 질문을 확인하십시오. 전액 및 부분 환불을 지원합니다. 환불은 실제로 결제된 PayU 주문을 대상으로, 결제 환경의 키를 사용하여 전송되므로 해당 키가 설정되어 있어야 합니다. 환불은 PayU가 청구한 금액과 통화로 이루어집니다. 따라서 금액이나 통화가 일치하지 않은 후에는 주문 합계가 아니라 고객이 실제로 결제한 금액까지 환불할 수 있습니다. 사유는 환불 설명으로 전송됩니다. PayU가 환불을 거부하면 블록에 PayU의 오류가 표시되며 환불은 기록되지 않습니다. 전액 환불은 주문을 Refunded로 설정합니다. 부분 환불은 상태를 변경하지 않습니다.
PayU에서 환불은 비동기로 처리됩니다. 모듈은 PayU 환불 ID와 상태가 포함된 메모를 즉시 추가합니다. 최종 상태는 나중에 PayU 알림으로 도착하며 메모와 환불 내역에 추가됩니다. PayU가 환불을 취소하면, 메모에 고객에게 금액이 반환되지 않았다고 표시되며 해당 금액은 다시 환불할 수 있습니다.
이 모듈은 신용 전표를 생성하지 않습니다. 주문 페이지의 표준 PrestaShop 환불 버튼은 PayU를 통해 금액을 반환하지 않습니다.
라이선스 키
이 모듈은 vibefox.net에서 발급받은 VibeFox 라이선스 키로 작동합니다. 라이선스 블록 License — VibeFox PayU Payment은 Modules > Module Manager > VibeFox PayU Payment > Configure의 첫 번째 블록으로, 설정 위에 있습니다. 키를 License key에 입력하고 Activate를 클릭하십시오. 그러면 블록에 키가 마스킹되어 표시되고, 상태(라이선스 유효 기간 날짜와 도메인 등)와 함께 상태를 다시 확인하는 Check now, 다른 키를 입력하는 Change key, 이 쇼핑몰에서 키를 제거하는 Remove key 버튼이 나타납니다. 그 아래에는 Product: presta-payment-payu 줄과 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 계정에서 슬롯을 해제하십시오.
활성 키가 없으면 체크아웃에서 고객에게 PayU가 표시되지 않습니다. 그래도 결제가 시작되면 고객에게 This payment method is not available. Please choose another one.가 표시됩니다. PrestaShop 스토어프런트는 백오피스에 로그인한 사실을 알지 못하므로, 결제 방식은 귀하에게도 숨겨집니다. 키를 구매하기 전에 모듈을 설정할 수는 있지만, 체크아웃에서 테스트할 수는 없습니다. Modules > Module Manager의 Alerts 탭에 알림이 나타납니다. 기존 주문은 영향을 받지 않습니다. 이미 시작된 결제는 알림을 통해 계속 확인되며, 환불도 작동합니다.
라이선스가 만료되어도 모듈은 계속 작동하지만, 업데이트와 지원에는 갱신이 필요합니다. 백오피스에서 작업하는 동안 상태는 자동으로 다시 확인됩니다: 키 입력 후 처음 14일 동안은 하루에 한 번, 그 이후에는 주 1회입니다. cron 작업은 필요하지 않습니다. 모듈을 제거하거나 재설정하면 라이선스 키와 라이선스 상태가 항상 삭제됩니다.
문제 해결
체크아웃에 PayU가 표시되지 않음: 라이선스가 활성 상태인지, Enable/Disable이 켜져 있는지, 그리고 현재 모드의 키 네 개가 모두 입력되었는지 확인하십시오: 샌드박스 모드에서는 Sandbox 키, 라이브 모드에서는 Live 키입니다. 장바구니 통화가 지원되는 통화 중 하나인지 확인하십시오. Payment > Preferences에서 장바구니 통화, 고객의 국가, 고객 그룹에 대해 모듈이 허용되어 있는지 확인하십시오. 설정 페이지는 키가 없거나 상점 통화가 지원되지 않을 때 경고를 표시합니다.
결제는 완료되었지만 주문이 생성되지 않음: PayU가 아직 알림을 보내지 않았고, 반환 페이지의 상태 확인에서도 완료된 결제가 보이지 않았습니다. 설정에 표시된 알림 URL이 인터넷에서 접근 가능한지 확인하십시오. Logging을 켜면 무엇이 도착했는지 확인할 수 있습니다. 고객은 Payment confirmation 페이지에서 Check again을 클릭할 수도 있습니다.
알림 응답이 Invalid signature: 알림이 두 환경 중 어느 쪽의 Second Key로도 서명되지 않았습니다. Live Second Key (MD5)와 Sandbox Second Key (MD5)를 확인하십시오. Invalid signature for this payment 응답은 알림이 결제 환경과 다른 환경의 키로 서명되었다는 의미입니다.
알림 응답이 Ignored: unknown PayU order: 이 PayU 주문은 이 쇼핑몰에서 생성되지 않았습니다. 예를 들어 같은 POS를 사용하는 다른 쇼핑몰입니다. PayU는 재시도를 중단합니다.
알림 응답이 Busy, retry later: 같은 시점에 다른 요청이 장바구니를 확인 중이었거나, 주문을 생성할 수 없었습니다(예: 모듈이 비활성화됨). PayU가 알림을 반복합니다. 원인을 확인하려면 Logging을 켜십시오.
알림 URL을 브라우저에서 열면 POST expected가 표시됨: 정상입니다. 이 URL은 PayU의 알림만 허용합니다.
고객이 PayU를 선택할 때 Payment error가 표시됨: Logging을 켜고 모듈 페이지의 Log 필드를 확인하십시오. 로그에는 HTTP 코드와 PayU 상태가 표시됩니다. PayU 인증에 실패했습니다(OAuth client ID / secret을 확인하십시오).는 현재 모드의 OAuth 키가 잘못되었다는 의미입니다.
주문이 PayU payment on hold 상태임: PayU payment 블록의 메모를 읽고(주문 상태 참조), 주문을 처리하거나 결제를 환불하십시오.
주문이 Awaiting PayU payment confirmation 상태임: 해당 판매 시점의 자동 수취가 꺼져 있어 결제가 귀하의 처리를 기다리고 있습니다. PayU 블록에서 Receive PayU payment 또는 Cancel PayU payment를 사용하십시오.
환불 실패: 이 주문에는 완료된 PayU 결제가 없습니다. 환불을 처리할 수 없습니다.는 PayU가 아직 이 주문의 결제를 완료하지 않았다는 의미입니다. Sandbox 또는 Live 키가 없다는 메시지는 결제가 해당 환경에서 이루어졌지만 그 키가 설정되어 있지 않다는 의미입니다. 키를 입력한 후 다시 시도하십시오.
제거
Modules > Module Manager로 이동하여 VibeFox PayU Payment 옆의 메뉴를 열고 Uninstall을 선택하십시오. 이 모듈의 라이선스 키와 라이선스 상태는 항상 제거됩니다. 캐시된 PayU 액세스 토큰은 항상 제거됩니다. Delete data on uninstall이 켜져 있으면 모듈 설정과 로그가 삭제됩니다. 꺼져 있으면 나중에 재설치할 수 있도록 모든 설정이 유지됩니다. PayU 거래와 환불, 그리고 Awaiting PayU payment confirmation 및 PayU payment on hold 주문 상태는 항상 유지되므로, 이전에 결제된 주문은 재설치 후에도 환불할 수 있습니다. 기존 주문은 결제 메모와 거래 ID를 유지합니다.
PayU는 해당 소유자의 상표입니다. 이 모듈은 PayU와 제휴하거나 PayU의 승인을 받지 않았습니다.
