Junyong
Junyong3y ago

브랜드페이 설정 openSettings() 실행하면 TypeError history.back is not a function 에러

브랜드페이 brandpay.openSettings()를 실행하면 TypeError: history.back is not a function 에러가 납니다. 어떤 상황에서 나는 에러인지, 어떻게 해결하면 되는지 알 수 있을까요?
36 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
이실장
이실장3y ago
openSetting실행시 historyback이 자동실행되도록 별도로 설정하셨을까요?
Junyong
JunyongOP3y ago
아니요 따로 설정하지 않았습니다
이실장
이실장3y ago
openSetting 실행 코드 한번 보여주실 수 있나요?
이실장
이실장3y ago
GitHub
brandpay-sample/quickstart/node at main · tosspayments/brandpay-sam...
브랜드페이 샘플 프로젝트. Contribute to tosspayments/brandpay-sample development by creating an account on GitHub.
이실장
이실장3y ago
더불어 샘플코드도 위에서 확인 가능합니다. 아 openSetting쪽은 샘플코드에 포함되어있지 않겠네요..
Junyong
JunyongOP3y ago
<button class="btn--pay-setting" @click="paySetting()">페이 설정</button> paySetting() { this.brandpay.openSettings() .then(function (result) { console.log(result) }) .catch(function (error) { console.log(error) if (error.code == "USER_CANCEL") { alert("창 닫음") } }) }, vue.js 이용하고 있습니다.
이실장
이실장3y ago
외부에서 접근가능한 사이트가 있나요?
Junyong
JunyongOP3y ago
실제 브랜드페이 위젯을 보여주고, 실제 결제되는 페이지에서 혹시 몰라서 똑같은 코드로 테스트 해봤을때는 되었는데 마이페이지와 같이 실 결제가 일어나는 페이지가 아니라 페이 설정을 관리하는 페이지에서 호출하면 저 에러가 나네요
이실장
이실장3y ago
콘솔 에러나는 창을 전체한번 캡처해주세요
Junyong
JunyongOP3y ago
저 에러가 나기 전에 sdk가 잠깐 실행되었다가(흰 화면만 잠깐 보임) 저 에러가 나면서 sdk 창이 종료됩니다
No description
이실장
이실장3y ago
위쪽 에러코드도 보여주실수 있난요?
Junyong
JunyongOP3y ago
No description
이실장
이실장3y ago
흰화면만 잠깐 보이면, 혹시 페이지에서 access-token 인증부분(redirectUrl)을 구현하셨나요?
Junyong
JunyongOP3y ago
네네 access token (redirectUrl) 호출은 됩니다
이실장
이실장3y ago
일단 에러메세지만 보면,
.catch(function (error) {
console.log(error)
.catch(function (error) {
console.log(error)
위부분에서 콘솔이 찍힌건데. 구현하신 페이지 어디선가 paySetting 호출시 history back해주는 function이 있는 것 같습니다.
실제 결제되는 페이지에서 혹시 몰라서 똑같은 코드로 테스트 해봤을때는 되었는데 마이페이지와 같이 실 결제가 일어나는 페이지가 아니라 페이 설정을 관리하는 페이지에서 호출하면 저 에러가 나네요
위에도 적어주셨듯이. openSetting에는 history back 해주는 코드는 별도로 없습니다~! 한번더 확인 부탁드리며, 이상없을경우 일반적인 상황이아니라 저희가 실제 확인가능한 사이트알려주시면 추가적으로 확인해드릴수 있을것같습니다
Junyong
JunyongOP3y ago
history back 을 직접적으로 하는 코드는 없는 것으로 확인됩니다. 따로 openSettings 성공시 redirect(location.href 등)을 사용하면 안된다는 말씀이신거죠?
이실장
이실장3y ago
네네
Junyong
JunyongOP3y ago
네 그러면 test id 만들어서 드리겠습니다. 잠시만 기다려주시면 감사하겠습니다
이실장
이실장3y ago
성공시 리다이렉트하는 부분이 있나요?
Junyong
JunyongOP3y ago
아니요 따로 없습니다!
유부장
유부장3y ago
location.href 사용하고 계신다면 location.replace 는 어떠신가요?
Junyong
JunyongOP3y ago
확인되면 말씀부탁드립니다!
유부장
유부장3y ago
공유주신 사이트를 확인 해 보았는데, const history = new Vue 내에서 함수를 method 에 넣어두시고 호출 하시는 것 같습니다 브랜드 페이 함수는 별도로 빼서 구현 해보실 수 있으실까요? 다른 함수들과 같이 묶여있어서, 예외 상황이 발생하고 있는듯 해서, 우선은 별도로 빼서 구현 가능하실지 확인 부탁 드립니다
Junyong
JunyongOP3y ago
네 알겠습니다. 해보고 다시 말씀드리겠습니다. javascript 로 구현해도 동일한 에러가 납니다ㅠ
유부장
유부장3y ago
음 새롭게 빼서 구현하신 부분은 공유주신 링크에서 확인 할 수 있나요? 해당 링크에서는 아직 const history = new Vue 내에 method 로 있는것 같아서요
Junyong
JunyongOP3y ago
다시 수정해놨습니다!
유부장
유부장3y ago
음.. 수정이 잘못 되신것 같아요 ㅜㅜ 브랜드페이 객체 초기화, clientKey, API Key 명시 등 을 const 밖으로 빼셔야 해당 함수가 이를 인지할 수 있을것 같습니다 그리고 현재 페이지 렌더도 누락된 부분이 있는것 같아요
Junyong
JunyongOP3y ago
브랜드페이 객체 초기화, clientKey, API Key 명시 등 을 const 밖으로 빼셔야... const history = new Vue({ ... }) var clientKey = .. var brandpay = BrandPay(clientKey, customerKey, {...}) 위와 같이 밖으로 빠져있습니다!
유부장
유부장3y ago
우선 페이지 렌더 부분도 봐주셔야 할것 같기는 한데, 그것과는 별개로 vue 로 브랜드페이 샘플 별도로 만들어서 전달 드려보겠습니다
Junyong
JunyongOP3y ago
네 감사합니다 🙂
유부장
유부장3y ago
Vue + Express 로 구현해서 전달 예정 입니다.
Junyong
JunyongOP3y ago
네 감사합니다!
유부장
유부장3y ago
안녕하세요 Vue + Express 로 구현 완료 하여서, 제가 진행한 것을 기준으로 설명 드려보려고 해요 우선 저는 아래와 같은 순서로 진행 했어요 Vue cli 3 프로젝트 생성 - Route는 사용하지 않음 별도 폴더에 Express 설치 vue 프로젝트 vue.config.js 에서, 프록시 설정 * 브랜드페이 SDK 호출시에 쿼리파람으로 받은 값 parse 해서 토큰 발급 위함 vue 프로젝트 public 에서 index 가 아닌 별도 html 생생 * 외부 스크립트 호출시에 고려해야 하는 부분이 많아서, 컴포넌트 vue 파일내 에서는 진행 하지 않았어요 html 에서 header 에 js SDK script 를 추가하고 body script 에 객체 초기화, 파라미터 설정 및 함수 호출을 넣었어요 express 에서는 url route 설정 해두고, routes 내 js 를 생성해서, * router get 을 통해서 값 parse 하고, axios post 를 통해서 access token 을 발급 받았어요 전에 공유주신 링크 기준으로 기억하기에는 html 상에서 다양한 js SDK 임포트 해서 사용하고 계셨던 것으로 기억하고 있어서, 브랜드페이도 동일하게, header 에 js SDK URL import, body script 에 객체 초기화, 파라미터 및 함수 설정 하시면 문제 없으실것 같아요
유부장
유부장3y ago
비슷하게 구성되어 있는 샘플 프로젝트 공유드릴게요 * node 이지만, 서버 사이드 처리는 동일하고 (express 를 사용하였으므로), vue 의 기능을 별도로 사용하는 것이 아니라서, html 참조 하시면 될거에요 https://github.com/tosspayments/brandpay-sample/tree/main/quickstart/node
GitHub
brandpay-sample/quickstart/node at main · tosspayments/brandpay-sam...
브랜드페이 샘플 프로젝트. Contribute to tosspayments/brandpay-sample development by creating an account on GitHub.
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.

Did you find this page helpful?