Cntanz

새글쓰기

개발 일지 - 문제해결중심
Kginicis에서 해외 카드 이용에 관한 특약이 이루어졌다. 해외에서 결제할 때 미국달라로 계산되기를 원한다. 혹시 저 쪽에서 결제할 때 지금 지원가능 화폐는 원화라고 되어 있는데 달라가 원화로 당시 환율로 자동 계산되어 결제되는 것을 뜻하는건지. 현재 탄쯔 홈페이지 해외 거래는 달라로 결제할 수 있는 단위로 작성되어 있는 상황이다. KGinicis결제연동 오류 메세지 20211229 홈페이지 접속해서 결제를 하려고 하면 뜨는 메시지이다. KGINICIS Standard Pay Call Failed V023 : 파라미터의 데이터 설정이 잘못되었습니다.[closeUrl의 domain이 요청페이지의 domain과 다름] 이 메시지에 대해 아임포트는 KGinicis의 웹표준key를 자사의 지정위치에 입력하면 된다고 한다. kginicis PC결제 오류 - 해결(정보입력문제) KGinicis > 상점정보>부가정보 웹결제 signkey상성조회 해서 key를 아임포트에 가서 시스템설정 기본 PG사 웹표준결제 signkey를 붙여줘서 오류 해결 그렇다면 이전 홈페이지에서는 어떻게 해서 되었을까?. kakaopay pc해결 kakaopay pc는 cid를 live로 수정하니까 된다.kakaopay_approval.aspx.cs line.60과 line75체크 49서버로 복사 49서버에 있는 2019실행.NET Framework 4.71이 필요하다고 함. -.NET Framework 4.71없어서 인스톨(바깥에서 받아 서버로 카피해 설치하니 문제 해결) 데이터베이스 AspNetUsers는 놓아두고 다 지움. 지우는 순서는 1.TanzMemberPurchaseSum 2.TanzMemberMileageSum 3.TanzMemberMileage 4.TanzMemberCoupon 5.TanzMemberCouponState 6.OrderLine 7.Order 8.AnotherAddress 9.ShippingDetails 10.TanzMemberSeccssion 11.TanzMemberQna 12.AspNetUsers 결제 Sandbox를 실결제로 수정 KGinicis PC, INIStdPayRequest.aspx.cs line.56 MOBILE, mx_startweb.asp line.209 이것은 payco까지 수정되는 효과가 있을 것이다. 왜냐하면 payco는 KGinicis의 다이렉트 버전을 이용하므로 kakaopay kakaopay.aspx.cs line.59 toss tosspay.aspx.cs line. 57 이렇게 해서 실결제로 모두 바꾸었다. 이제 아직 하지 못한 것들 예를 들면 소셜 인증은 뺀다. 소셜인증은 뺀체로 facebook의 경우 가입해서 회원정보를 입력하는 것으로 유도하는 작업 일반인이 가입하고 이메일 인증을 받지 않은 경우 이메일 인증을 받을 수 있게 하는 것. 수동으로 처리는 가능할 것임 무통장 입금시 무통장 입금 정보가 쓰이도록 하는 것. 이런 일들이 남아 있다. 장바구니로 넘길 때 상품선택이 되지 않으면 선택하라는 경구문 뛰우기 레디오 버튼, javascript로 해결. 20211225 twilio Develop Phone Numbers Manage Verified Caller IDs 로 가서 확인한 결과 ㅏMy first Twilio account의 Verified Caller IDs를 등록해서 사용했을 때와 달리 console tanz.co.kr에서는 Verified Caller IDs에 내 번호가 기재되어 있다. 일단 번호를 다 지워버리면 될 거 같다. 다 지워버렸더니 안된다. trial오류가 뜬다. 가비아에서 sms충전 끝났을 때 뜬 메시지와 똑같다. 이젠된다. trial에서 billing 서비스에 현대카드로 20불 차지는10불이 되면 자동으로 20불로 만드는 식으로 크리스마스날 오늘 했다. 이제 어느 정도 안심이다. 야 돈 버는 방법은 엘론머스크나 트윌리오처럼 페이팔이나 이런 프레임워크를 만드는 것이 이제는 돈을 버는 세상이 됐다. 기억하자. identityconfig.sys 에 인증번호 쓰라는 메시지, 이메일 쓰라는 메시지 기록되어 있다. 사용. - SQL 연계 Gabia databse hosting사용/이름. tanzseason4 20211211 - Support AfterService action을 TanzMac EmailService를 모방해 붙임. 그동안 javascript로 유효성검사 실행했던 것은 쓸모없게 되었다. 데이터베이스 테이블 중 TanzNoneMemberEmailSupport도 필요없게 되었다. 20211224 checkout과 nonecheckout이 있다. checkout에서는 쿠폰과 마일리지를 사용하여 할인 받을 수 있다. 할인된 가격에 realpayment 라는 아이디를 주었다. 그 값은은 post 로 넘긴다. checkout actionresult에 param을지정하지 않아도 post는 request.querystring[realpayment] 로해서 값이 전달된다.

PC - 4단, CP- flow Horizontal swipe image on mobile
PC에서는 4단인데 CP에서는 Flow로 보이게 하기 horizontal scroll https://discourse.webflow.com/t/horizontal-swipe-image-on-mobile/137167 You could try setting overflow-x to scroll. Keep the images the size you want inside the overflow block, and they should shoot off your page, and then they can be scrolled left to right.

모바일에서 옆으로 스크롤이 되는 부분과 그렇지 않은 부분의 분리 css, Horizontal scrolling in mobile how to
for bootstrap users < meta name="viewport" content="width=device-width, initial-scale = 1.0,maximum-scale=1.0, user-scalable=no" > Actions that might cause unwanted horizontal scrolling on mobile devices and how to avoid this issue.

[TIP] horizontal scroll section, https://codepen.io/hanieldaniel/pen/oVVwYv
마우스를 스크롤하면 어느 섹션에서부터 상하에서 좌우 스크롤로 전환된다.

CSS단위 VH와 VW, VERTICAL HEIGHT, VERTICAL WIDTH / https://webclub.tistory.com/356
vh & vw (vertical height & vertical width) 반응형 웹디자인 테크닉은 퍼센트 값에 상당히 의존하고 있습니다. 하지만 CSS의 퍼센트 값이 모든 문제를 해결할 좋은 방법은 아닙니다. CSS의 너비 값은 가장 가까운 부모 요소에 상대적인 영향을 받습니다. 만약 타켓 요소의 너비값과 높이값을 뷰포트의 너비값과 높이값에 맞게 사용할 수 있다면 어떨까요? 바로 vh와 vw 단위가 그런 의도에 맞는 단위이고 vh 요소는 높이값의 100분의 1의 단위입니다. 예를 들어 브라우저 높이값이 900px일때 1vh는 9px이라는 뜻이 되지요. 그와 유사하게 뷰포트의 너비값이 750px이면 1vw는 7.5px이 됩니다. 이 규칙에는 무궁무진한 사용방법이 있습니다. 예를 들면, 최대 높이값이나 그의 유사한 높이값의 슬라이드를 제작할때 아주 간단한 CSS만 입력하면 됩니다. CSS .slide { height: 100vh; } 스크린의 너비값에 꽉 차는 헤드라인을 만든다고 가정해 봅니다. vw로 폰트 사이즈를 지정하면 쉽게 달성할 수 있습니다. 해당 사이즈는 브라우저의 너비에 맞춰 변할 것입니다. (브라우저 크기를 늘였다 줄였다 해보세요) 출처: https://webclub.tistory.com/356 [Web Club]

Navbar menu text-alignment
@media (max-width: 768px) { .main-navigation .main-nav ul li a { text-align: center; } }

Memberinformation.cs 수정 요함
class memberinformation이 static으로 되어 있으며 그 아래 메쏘드 모두 static으로 설정되어 있다. static을 이해하지 못하고 사용한 것으로 오류가 날 수 있다. 수정할 것

Bootstrap: how do I change the width of the container?
@media (min-width: 1200px) { .container{ max-width: 970px; } }

jsutify-content-between 지정시 화면을 줄이면 사라지는 오른쪽 왼쪽 content를 어떻게 보이게 할 것인가?

X-scroll barre 대신 화살표로 스크롤하게 하기
참고 : https://stackoverflow.com/questions/57856494/hide-scrollbar-and-add-arrows-instead

Swany 구매하기 만들기
간단하다고 생각했으나 쉽지 않았다. 그렇다고 복잡하거나 어렵다고 볼 이유도 그리 크진 않다. 스와니 네 가지 상품 중에서 선택한다.(네가지 벽부형1단, 벽부형2단, 바닥형1단, 바닥형2단 중) 손잡이 재질을 선택한다.(.나무, 스틸 중) 길이를 선택한다.(몇 미터) 설치방법(자가, 의뢰)을 선택한다. 예)벽부형 1단 나무 13미터 의뢰하는 고객이 있다고 가정하자. 필요한 수량 산출식 선택한 길이 계산 13 / 1.8 = 7.2 예)13미터라면 1.8미터 마다 벽부형 1단 모듈이 필요하므로 13/1.8=7.2로 무조건 한 개 추가한다. 결과여덟개로 나뉜다. 나무손잡이봉 8개 벽부형1단모듈 9개(나무손잡이봉 갯수 + 1개) 구매하기 버튼을 누르면 손잡이봉 8개 벽부형 1단 모듈 9개 설치의뢰비용 1 식 이상이 장바구니에 기록되어야 한다. 이 식이 어떻게 가능하지? 현재 CartController의 AddToCart로 값을 전달하는건데 하나의 상품에 수량이 넘어가는 거였어서 한 꺼번에 넘어가는 것에 대한 알고리듬이 필요한 상황이 되었다. 즉 손잡이봉은 8개, 벽부형1단모듈은 9개, 설치의뢰비용 1식 이 세 가지가 장바구니로 전달되어야 한다. 그러고 나서 구매하기 버튼을 누르고 계산하게 된다.

주소자동입력 개발키 juso.go.kr
개발승인키는 여기서 받는다. juso.go.kr 개발 승인키는 어디로. devU01TX0FVVEgyMDIxMTIxMTEyMDEwOTExMjAxNzc= 개발 ( 사용기간 : 2021-12-11 ~ 2022-03-11 ) @charset "UTF-8"; /***************************************************/ /* 이미지 */ /***************************************************/ /* 바탕 배경 이미지 최적의 이미지 크기는 468 * 251px */ .pop-address-search { background-image: url(이용기관사이트 이미지 url); } /* 회사 로고 이미지 이미지 크기는 149 * 14px */ .pop-address-search .logo { background: url(이용기관사이트 로고 이미지 url) no-repeat; background-position:center; } /***************************************************/ /* 배경색상 */ /***************************************************/ /* 바탕 배경색상 */ .pop-address-search { background-color:#ECECEC; } /* 검색창 색상 */ .pop-address-search .pop-address-search-inner .wrap input { background-color:#FFFFFF; } /* 검색버튼 색상 */ .pop-address-search .pop-address-search-inner .wrap { background-color:#FFFFFF; } /* 본문 배경색(홀수) */ .pop-address-search .pop-address-search-inner .result table.data-col tbody tr:nth-child(odd) td {background:#FFFFFF} /* 본문 배경색(짝수) */ .pop-address-search .pop-address-search-inner .result table.data-col tbody tr:nth-child(even) td {background:#FFFFFF} /***************************************************/ /* 글자색상 */ /***************************************************/ /* 검색 결과 글자색상 */ table.data-col { color:#FFFFFF; } table.data-col tbody tr td.subj { color:#333333; } /* 검색창 글자 색상 */ .pop-address-search .pop-address-search-inner .wrap input { color:#222222; }

외부인증 서비스 / Twitter, Facebook,/ developer.facebook.com, developer.twitter.com / 둘 다 peter@barreinabag.com 으로 가입
https://docs.microsoft.com/ko-kr/aspnet/web-api/overview/security/external-authentication-services https://docs.microsoft.com/ko-kr/aspnet/mvc/overview/security/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on 자료 https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/external-authentication-services 목적 소셜미디어를 사용하는 사용자들이 자사 웹어플리케이션에 들어왔을 때 소셜미디어 계정으로 인증하게 하는 것. 사전 준비물 가입을 위해 사전에 A developer account with the application identifier and secret key for one of the following social media authentication services: 함. Twitter / peter@bar~bag.com , _weare~D_01~3_ Twitter authentication requires you to create a developer account, and it requires a consumer key and consumer secret in order to function. -consumer key -consumer secret consumer key와 secret 얻기 https://support.yapsody.com/hc/en-us/articles/360003291573-How-do-I-get-a-Twitter-Consumer-Key-and-Consumer-Secret-key- 위 페이지로 가 소개된 방법 Go to https://dev.twitter.com/apps/new and log in, if necessary Supply the necessary required fields, accept the Terms Of Service, and solve the CAPTCHA. Submit the form Go to the API Keys tab, there you will find your Consumer key and Consumer secret keys. Copy the consumer key (API key) and consumer secret from the screen into our application. Twitter Developer Portal에서 아래와 같은 사항을 확인할 수 있다. - application이 우선은 개발중인 cn.tanz.co.kr에 대한 인증으로 만드므로 오픈시 www.tanz.co.kr로 바꾸어 주어야 한다. Terms of Service 페이지 https://cn.tanz.co.kr/policy/termsofservice Privacy Policy https://cn.tanz.co.kr/policy/privacypolicy 등이 있어야 한다. consumer key (API key) and consumer secret 를 어디서 볼 수 있는가? Projects & Apps> OverView 클릭하면 우측에 만든 어플들이 있고 로고로 기어와 열쇠 아이콘이 있는데 해당 Apps 의 열쇠 아이콘을 누르면 된다. 20211212 현재 API key API key Secret facebook : twitter계정과 똑같은 아이디와 비번 사용 Using Facebook authentication requires you to create a Facebook developer account, and your project will require an application ID and secret key from Facebook in order to function. For information about creating a Facebook developer account and obtaining your application ID and secret key, 문제 - 페북 디벨로퍼 계정에 들어가 보니 The deadline for Data Use Checkup has passed. To reactivate API access for OauthFoCnTanzCoKr, you or another app admin must complete the checkup now to avoid any further disruption. Learn More 시정은 체크만 이어서 하면 되어서 체크로 시정 완료하고 App ID와 App Secret는 Dashboard Settings Basic에서 확인이 된다.

외부인증과 회원 가입 유도까지-쇼핑사이트에 외부인증, 즉 소셜네트워크서비스를 통해 회원인증을 한 경우 이 사용자가 상품을 구매하려고 할 때 거쳐야 하는 추가 정보 입력단계로의 유도에 관해
쇼핑사이트에 외부인증, 즉 소셜네트워크서비스를 통해 회원인증을 한 경우 이 사용자가 상품을 구매하려고 할 때 거쳐야 하는 추가 정보 입력단계로의 유도에 관해 외부인증자인지를 확인하는 방법은? how to check external login asp.net identity 확인이 될 경우 쇼핑버튼, 내정보 버튼을 누르면 회원 정보를 입력하게 유도한다. 특정사이트에 아래 문서 내용 " 그리고, 사용자의 프로필 데이터를 추가하는 방법과 멤버십 API를 사용해서 역할을 추가하는 방법에 대해서도 살펴보도록 하겠습니다. * 이 기사는 Rick Anderson (Twitter: @RickAndMSFT)에 의해서 작성되었습니다 아쉽지만 본문에서는 이 설명과는 달리 멤버십 API를 사용해서 역할을 추가하는 방법에 대해서는 다루고 있지 않습니다. 원문의 저자가 실수로 누락시킨 것으로 보입니다. " 을 보면 나와 같은 고민을 누구라도 하고 있는 것으로 보인다. 프로그래머는 각자의 역량에 따라 이와 같은 문제를 해결해야 하는 상황이다.

gabia. 메시징 서비스, https://message.gabia.com/api/documentation/
1. XML RPC(구API)를 다운로드 받다. 2. 다운로드 받은 집을 풀면 bin folde에 CookComputing.XmlRpcV2가 있다. 3. 이것을 Referencing DLLs Procedure In the Solution Explorer pane, right-click your project, then click Add Reference. In the Add Reference window, click the Browse tab. In the drop-down list, find the folder for FileNet.Api.dll. For the default location of FileNet.Api.dll, see Prerequisites. Select the DLL file. Click OK. 출처: https://www.ibm.com/docs/en/filenet-p8-platform/5.5.x?topic=setup-configuring-visual-studio-project 위 과정을 통해 등록하고 SmsXmlRpcClass.cs에 using CookComputing.XmlRpc를 추가한다. 신기한 건 뒤 V2는 빼야한다는 사실이다.

비밀번호찾기 - 어이 없는 실수 tanzkorea@gmail.com ->tanskorea@gmail.com 찾아 봐. z 와 s는 다르쟎아. 이런 식이다. 오류가...
https://docs.microsoft.com/en-us/aspnet/identity/overview/features-api/account-confirmation-and-password-recovery-with-aspnet-identity Account confirmation and password recovery with ASP.NET Identity (C#)에 관한 내용이 있다. 오류 내용이 5.7.0 Authentication Required. Learn more at 였으므로 구글링을 통해 아래 주소를 발견 https://stackoverflow.com/questions/59632655/the-server-response-was-5-7-0-authentication-required-learn-more-at 그리고 거기에 있는 답의 내용을 확인한 결과 대부분의 실수는 gmail을 smtp로 사용할 경우 https://myaccount.google.com/lesssecureapps 의 세팅 단계를 낮추거나 높였을 때 구글지메일을 smtp로 사용하거나 그렇지 못하거나로 구분이 되는 것이었다. As a start, I would try changing the settings of your gmail account to use "Less Secure App Access" - see https://myaccount.google.com/lesssecureapps and see if this works. If this works, then you can try perhaps accessing gmail in a more secure way - perhaps enabling 2 factor authentication and using app passwords - see https://support.google.com/accounts/answer/185833?hl=en

Asp.net identity 데이터베이스 디자인은 어떻게 시작되나? 처음엔 없다. 만들고 나면 데이터베이스가.
cn.tanz.co.kr에 이미 있던 것을 가져와 만들었다.

이단계 이메일 인증을 사용할 것인가?
identityConfig.cs 라인119에 20210414 이메일컨펌을 막기 위해 일시 주석처리한다는 내용 이하 내용을 활성화 하느냐에 달렸다.

SNS인증앱 만들기 자료
https://docs.microsoft.com/ko-kr/aspnet/mvc/overview/security/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on

SQL query Results row number
How to Return the Number of Rows in a Query Result in SQL Server Example – Count All Rows in a Table Here’s an example of using the COUNT() function to return the total number of rows in a table: SELECT COUNT(*) FROM Tasks; Result: 6 select count(*) from AnotherAddress where Id= '26a0c9a6-89b8-499b-9367-aef98b62dd0c' Linq query to get Count -> https://dotnettutorials.net/lesson/linq-count-method/ var QSCount = (from num in intNumbers where num > 40 select num).Count();

Razor 문법, @ 중첩

twilio 새로 가입
새로 가입하고 api를 하나 tanz.co.kr로 만들었다. accountSid와 AUTH TOKEN그리고 그 쪽 전화번호 하나 이렇게 세 개의 정보를 web.config에 입력하니 sms verify가 진행이 된다. 일단 비용은 trial이 14.453이다. 내일 등록하지 않은 번호로 되면 되는 것이다.

결제 오류 발생과 해결기 - KGINICIS Standard Pay Call Failed V023 : 파라미터의 데이터 설정이 잘못되었습니다.[closeUrl의 domain이 요청페이지의 domain과 다름]
역시 결제 연동이 문제다. 1. KGinicis PC결제 오류 - 아예실행이 안되는 스크린 오류와 파라미터값이 잘못됐다고 close url 등등.. 원인은 INIStdPayRequest.aspx.cs Line 56. strMid설정 실거래용으로 바꾸었으나 Line.121 가맹점확인을 위한 signkey를 실거래용으로 바꾸지 않은 것이 우선 첫째이유 그렇게 하자 옐로 스크린 오류는 사라지고 파라미터 값오류가 떳다. 주소가 잘못되었다는 것이다. 웹주소는 이전 홈페이지와 동일한 주소를 사용하므로 그럴리가 없는데 하고 KGinicis에 문의하자 이것은 ImPort의 문제일거라고 이야기 해주어 ImPort로 전화한 결과 아임포느에 웹표준 결제키(PG설정(일번결제및정기결제-기본PG사 KG이니시스-웹표준사인키에 Kginicis의 해당 키 : 상점정보-부가정보-웹결제signkey생성조회 클릭하면 나오는 key값)) 을 적어줌으로써 해결됐다. 이로써 ImPort를 의지하는 것이 얼마나 불편한지가 다시금 판명됐다. 애초에 스스로 했어야 한다. 비용이 들더라도 비용 이상으로 불편하다. 2.KakaoPay - 모바일과 피시 모두 예로스크린 원인은 kakaoPay-approval.aspx.cs line.60, 74 에 테스트,키를 라이브키로 바꾸어 주자 해결됐다. 3.KGinicis Mobile결제 마지막에 취소되는 것은 mx_rnext.asp line.54 P.MID를 테스트용으로 유지한 것이 문제였음. mx_startweb.asp line206에서는 .P_MID를 실거래용으로 제대로 바꾸었음. 결국 두 개의 파일. mx_startweb.asp와 이어서 mx_rnext.asp도 P_MID를 테스트용에서 실거래 용으로 바꾸어 주어야 함. 3.가상계좌입금문제 가상계좌 입금통보설정 https://service.iamport.kr/inicis_payments/notice_vbank * 가상계좌 입금이 실제 이루어졌을 때, "KG이니시스" > "아임포트 서버" > "가맹점 서버"로 통지가 차례로 이루어집니다. * "아임포트 서버" > "가맹점 서버"로 이루어지는 통지는 "결제 직후 Notification URL"을 사용해 이루어지게 됩니다. * "KG이니시스" > "아임포트 서버"로 이루어지는 통지는 KG이니시스 상점관리자 페이지에서 다음과 같은 추가 설정이 필요합니다. * "상점정보" > "결제수단정보" 메뉴에서, "입금통보 URL(IP)"를 https://service.iamport.kr/inicis_payments/notice_vbank 로 설정해주세요. 4.무통장입금 번호 저장하기 혹은 확인하기는 어떻게 해야 하나? 아임포트를 사용중이므로 케이지이니시스 상점정보, 결제수단정보에서 가상계좌가 있는데 거기서 입금통보URL(IP)를 https://service.import.kr/inicis_payments/notice_vbank를 입력해 놓고 다음, import 시스템설정 웹훅(notifications)설정에 웹훅(notification)발송 공통 URL을 적어놓아야 한다. 서버에서 받기 원하는 Content-type도 정한다. 자세한 설명은 아래 자료 참고자료를 본다. 참고 자료 : https://docs.iamport.kr/tech/webhook 5. 결제 연동 Payco -아이디 실거래로 수정 Payco는 KGinicis에서 연동하고 있으므로 mobile과 pc에서 각각 실거래 아이디로 바꾸어 주어야 한다. payco는 PC는 INIStdPayRequest_payco.aspx.cs line.57, line122에서 실거래로 수정 mobile은 mx_startweb.asp line.205에서 실거래 아이디로 수정한다.

이니시스 로그 폴더 생성 PG>KGinicisMobile>log
'이부분에 로그파일 경로를 수정해주세요. '로그를 남기셔야 오류 발생시 오류 추적이 가능 합니다. logdate = year(now) & right("0" & month(now),2) & right("0" & day(now),2) logfilename = "noti_input_"& f_tempDate & logdate & ".log" filepath = "D:\\12_www.tanz.co.kr\\DotNetIdentity\\PG\\KGinicisMobile\\log\\" & logfilename '로그를 기록할 디렉터리 이병일이 수정함 20170917일에 '********************************************************************************** writeLog filepath , noti

망처리취소오류잡기변수들
1.mid MOItanzkor 2.timeTemp 1641478175082.16 3.authToken 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:70c23b0a6d33ea6497672565bd4f17d2bbb833dd6e057f06cacace6b2c42b30d 4.authUrl https://ksstdpay.inicis.com/api/payAuth 5.netCancel https://ksstdpay.inicis.com/api/netCancel 6.mkey e173dde0f7239636045b0228948d6fcfb22e0a35377182bf10820284d962d1a8 7.signParam authToken=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:70c23b0a6d33ea6497672565bd4f17d2bbb833dd6e057f06cacace6b2c42b30d&timestamp=1641478175082 8.signature 9f836ad008ea32f4d4f7bcbbcd74aabb48d6974dfa95ff58ec2b25ddd3ce4851 9.authResultString { "CARD_Quota": "00", "CARD_ClEvent": "", "CARD_CorpFlag": "0", "buyerTel": "01036608471", "parentEmail": "", "applDate": "20220106", "buyerEmail": "", "OrgPrice": "", "p_Sub": "", "resultCode": "0000", "mid": "MOItanzkor", "CARD_UsePoint": "", "CARD_Num": "40285712****7942", "authSignature": "f69e3caa88198139f3aebfcbbbcdd3dd4bcf2537e9d6100bbf8f378aef983184", "tid": "StdpayCARDMOItanzkor20220106230934581346", "EventCode": "", "goodName": " , DonquixoteBolt_Long", "TotPrice": "10000", "payMethod": "Card", "CARD_MemberNum": "", "MOID": "MOItanzkor_1641478129152", "CARD_Point": "", "currency": "WON", "CARD_PurchaseCode": "", "CARD_PrtcCode": "1", "applTime": "230935", "goodsName": " , DonquixoteBolt_Long", "CARD_CheckFlag": "0", "FlgNotiSendChk": "", "CARD_Code": "04", "CARD_BankCode": "00", "CARD_TerminalNum": "0208937000", "P_FN_NM": "현대카드", "buyerName": "이병일", "p_SubCnt": "", "applNum": "00849119", "resultMsg": "정상처리되었습니다.", "CARD_Interest": "0", "CARD_SrcCode": "", "CARD_ApplPrice": "10000", "CARD_GWCode": "G", "custEmail": "tanzkorea@gmail.com", "CARD_Expire": "", "CARD_PurchaseName": "", "CARD_PRTC_CODE": "1", "payDevice": "PC" }

망취소 예외 오류 exception(ex)
10.exSystem.IndexOutOfRangeException: 인덱스가 배열 범위를 벗어났습니다. 위치: DotNetIdentity.PG.KGinicis.INIStdPayReturn.parseStringToMap(String text) 파일 D:\12_www.tanz.co.kr\DotNetIdentity\PG\KGinicis\INIStdPayReturn.aspx.cs:줄 892 위치: DotNetIdentity.PG.KGinicis.INIStdPayReturn.StartINIStdReturn() 파일 D:\12_www.tanz.co.kr\DotNetIdentity\PG\KGinicis\INIStdPayReturn.aspx.cs:줄 228

망취소오류는 배열을 벗어난 문제였고 배열이 벗어나게 된 것에는 콤마(,)가 문제였다.
한 달 여를 헤맨 문제의 해답은 콤마였다. 변수값들 오류결과 등을 캐치해서 이니시스측에 넘겼다. goodName에 콤마가 붙어 있는 것을 발견해 알려주었다. 즉, “goodName” : “,donquihoteLongbolt” 하는 식으로 donquixotheLongbolt앞에 ,(콤마)가 있었고 이것은 배열을 구분하는 구분자로 사용되어야 하는데 그렇지 못했다. “구분자1”:”밸류1”,”구분자2”:”밸류2”,”구분자3”:”밸류3” 이런 식으로 배열 중간에 콤마가 들어가는데 그 콤마가 밸류 앞에 붙어 배열을 벗어나게 하는 오류를 발생시킨 것이었다. 여러 개의 상품을 구매했을 경우 구분자로 내 코드 상에 콤마를 사용한 것을 T_ 로 바꾸고 나니 망처리 취소의 이유였던 배열이 벗어난 오류를 해결하게 해 주었다. 만세만만세.

asp classic mssql connection string / https://travishorn.com/using-mssql-with-classic-asp-caeb96bef7e8
Connecting to a Database Dim objConn Set objConn = Server.CreateObject("ADODB.Connection") objConn.ConnectionString = "Provider=SQLOLEDB; Data Source=(local); Database=[DATABASE]; User ID=[USER ID]; Password=[PASSWORD]" objConn.Open OLEDB 설명) Provider : SQL서버 사용시, SQLOLEDB Data Source : 데이터베이스 서버가 설치된 서버의 이름 또는 IP Initial Catalog : 데이터베이스 서버 안에 존재하는 데이터베이스 이름 User ID, password : 계정정보 Persist Security Info : 기본설정은 false, true또는 yes로 설정하면 연결이 열린 다음에 사용자 ID 및 암호 같은 보안 관련 정보를 얻을 수 있다. Inserting Data into a Table Dim SQL SQL = "INSERT INTO [TABLE NAME] ([COLUMNS]) VALUES ('[VALUE]')" objConn.Execute SQL Retrieving Data Dim SQL, objRec SQL = "SELECT [COLUMNS] FROM [TABLE NAME]" Set objRec = objConn.Execute(SQL) While Not objRec.EOF Response.Write(objRec("Column_Name")) objRec.MoveNext Wend objRec.Close Set objRec = Nothing Closing the Connection objConn.Close

KGinicis Mobile결제시 가상계좌 잡기
결과 P_STATUS=00&P_AUTH_DT=20220118093022&P_AUTH_NO=&P_RMESG1=성공적으로 처리 하였습니다.&P_RMESG2=&P_TID=INIMX_VBNKMOItanzkor20220118093022234306&P_FN_CD1=&P_AMT=7000&P_TYPE=VBANK&P_UNAME=Lee&P_MID=MOItanzkor&P_OID=1446&P_NOTI=barreinabag@icloud.com&P_NEXT_URL=https://www.tanz.co.kr/PG/KGinicisMobile/mx_rnext.asp&P_MNAME=&P_NOTEURL=https://www.tanz.co.kr/PG/KGinicisMobile/mx_rnoti.asp&P_VACT_NUM=01444664353506&P_VACT_DATE=20220128&P_VACT_TIME=235900&P_VACT_NAME=(주)탄쯔&P_VACT_BANK_CODE=11&P_FN_NM=NH농협은행&P_CSHR_CODE=0000&P_CSHR_MSG=정상처리되었습니다.&P_CSHR_AMT=7000&P_CSHR_SUP_AMT=6364&P_CSHR_TAX=636&P_CSHR_SRVC_AMT=0&P_CSHR_TYPE=0&P_CSHR_DT=20220118093022&P_CSHR_AUTH_NO= 과정 안녕하세요. 문지수님, 모바일 거래시 가상계좌값을 가져오려면 어떻게 해야하나요? asp로 작업중입니다. P_VACT_NUM, P_FN_NM, P_VACT_NAME을 어디에서 가져올 수 있는지 힌트 좀 부탁드립니다. 탄쯔 이병일 안녕하세요 이니시스 기술지원입니다. 모바일 모듈 역시 웹표준과 같이 인증/승인 2단계의 프로세스가 있습니다. 모바일 가상계좌에서 P_VACT_NUM, P_FN_NM, P_VACT_NAME 파라미터는 인증단계에서는 응답되지 않으며, 최종 승인단계에서 응답되는 파라미터인 점 참고 부탁드립니다. (개발가이드 STEP 4. 승인결과 상세) 감사합니다. 문지수 님, 빠른 응답에 감사드립니다. mx_rnext.asp 승인결과로 받는 strData를 확인한 결과 가상계좌가 정상적으로 확인되었습니다. 모바일로 가상계좌 건 잘 해결되었습니다. 감사합니다. 즐거운 하루 되시기 바랍니다. 탄쯔 이병일 설명 어제 저녁에 모바일 결제 asp 파일들을 살펴보았다. 클래식 asp에서 mssql을 연결하는 것이 첫 번 째 관건이었다. Set objDB = Server.CreateObject("ADODB.Connection") Dim strConn strConn = "Provider=SQLOLEDB; Data Source=아이피주소네자리,1433; Initial Catalog=데이터베이스명; User ID=사용자명; Password=비번" objDB.open strConn 'SQL = "UPDATE ShippingDetails SET pgtoken ='"& P_VACT_NUM &"' WHERE ShippingDetailsId = '" & P_OID & "'" 'SQL = "UPDATE ShippingDetails SET pgtoken ='Hello World mx_rnext' WHERE ShippingDetailsId = 1440 " SQL = "insert into TestTable(Contents) values('"&strData&"')" 'strData TestTable에 넣기 objDB.Execute SQL objDB.Close Set objDB = Nothing 이상이 연결 방식이다. 변수를 SQL에 넣어주는 방식이 지금과 달라 이전에 사용한 기억을 떠올리며 구글링으로 답을 찾았다. 그 다음은 승인결과를 받는 mx_rnext.asp에서 strData를 받아 저장한 결과 가장 상단과 같은 결과 값을 받았다. 성공! 이제 그 값을 나누어 원하는 값을 추출해 pgtoken으로 보내면 된다. [pgtoken으로 보낸 값] Set objDB = Server.CreateObject("ADODB.Connection") Dim strConn strConn = "Provider=SQLOLEDB; Data Source= 서버아이피네자리,1433; Initial Catalog=데이터베이스명; User ID=아이디; Password=패스워드" objDB.open strConn 'Dim vBankInfo = "[입금계좌번호]"& P_VACT_NUM ' &"[은행]"& P_FN_NM &"[예금주]"& P_VACT_NAME &"[금액]"&P_AMT SQL = "UPDATE ShippingDetails SET pgtoken ='[가상계좌번호]" & P_VACT_NUM &"[은행명]"& P_FN_NM &"[예금주]"& P_VACT_NAME &"' WHERE ShippingDetailsId = '" & P_OID & "'" 'SQL = "UPDATE ShippingDetails SET pgtoken ='Hello World mx_rnext' WHERE ShippingDetailsId = 1440 " objDB.Execute SQL objDB.Close Set objDB = Nothing

KGinicis 결제 연동을 위해 알아야 할 정보 혹은 지식. asp. asp.net사용자를 위한
결제 연동은 간단하지 않다. 연동하려는 PG사 마다 서로 다른 api를 사용한다. api의 구성 또한 각 사 마다 차이가 있다. 결제연동시 각 PG사가 개발한 결제 연동 api에 대한 이해가 필요하다. 개발 언어는 PHP, JSP, ASP를 사용한다. KGinicis의 경우 모바일과 데스크탑 api가 달라 모바일은 asp classic을, 데스크탑은 asp.net을 사용한다. 개발가이드 정보는 https://manual.inicis.com/main/ 에 정리되어있다. 알아야 할 기본지식은 다음과 같다. 1. asp classic 2. asp.net 3. asp 에 mssql 연동 4. asp.net에 mssql 연동 따라서 asp와 asp.net에 대한 기본 지식이 있어야 결제 연동이 가능하다. 각각 정보 저장을 위해 Linq와 OLEDB에 대한 이해도 필요하다. 각 api - application programming interface, 모바일과 데스크 탑의 결제 연동 프로그램-에 도메인 주소를 입력하여 KGinicis와 네트워크로 정보를 주고 받는데 도메인주소를 잘못 쓰면 네트워크 통신 자체가 이루어지지 않는 에러가 난다. 이 에러가 가장 기본적인 에러가 될 것이다. 이 때 도메인주소를 확인하여 www를 붙였는지 안 붙였는지를 확인하면 에러가 해결된다. 통상 브라우저에는 www가 보이지 않으므로 브라우저 주소창을 마우스로 긁어 www혹은 non-www를 확인하자. asp classic 결제 연동 이후 승인결과에서 가상계좌번호와 같은 변수를 데이터베이스, mssql에 저장하여 사용하려면 asp classic의 변수 사용에 대한 이해가 필요하다. SQL = "UPDATE ShippingDetails SET pgtoken ='[가상계좌번호]" & P_VACT_NUM &"[은행명]"& P_FN_NM &"[예금주]"& P_VACT_NAME &"' WHERE ShippingDetailsId = '" & P_OID & "'" 홑따옴표와 겹따옴표와 앰퍼샌드로 이어지는 변수와 문자를 사용하는 방법이 까다롭다.

탄쯔 독립몰 계약에 따른 결제 방식 적용
그동안 아임포트를 이용하며 이니시스측에게 년관리비 22만원을 면제 받으며 3프로의 수수료를 내며 사용하던 것을 이니시스측에 년관리비 22만원을 내고 독립몰 계약하여 1.9프로의 수수료를 내는 것으로 결제 방식을 바꾸었다. 이를 위해 독립몰 아이디와 이에 따른 웹사인키를 바꾸어주었다. 이것은 매우 쉬운 작업이었다. 9군데, 7군데 정도가 변경이 적용되는 것으로 컨트롤에프키로 커런트프로젝트 바꾸기를 실시한 결과 볼 수 있었다. 성공 축하한다. 알면쉽고, 편하고, 비용도 절약된다. 다른 사업체들도 알았으면 좋겠다.

MS SQL Currency datatype 무엇이 좋은가?
영문사이트를 만들면서 달라 통화에 어떤 데이터 타이프를 사용하는 것이 좋을지에 대한 의문이 생겼다. 현재 Decimal(18)이다. 이것을 어떻게 바꾸어야 좋을까? https://stackoverflow.com/questions/582797/should-you-choose-the-money-or-decimalx-y-datatypes-in-sql-server 에 의하면 Never ever should you use money. It is not precise, and it is pure garbage; always use decimal/numeric. 라는 조언을 하고 있다. 댓글에 "Never" is a strong word. "Money" is useful for casting results to that type for display to the user in a culture-sensitive way, but you're right that it's very bad to use for the calculations itself. – Joel Coehoorn Feb 24 '09 라고 되어 있어 타당성이 인정된다. https://stackoverflow.com/questions/628637/best-data-type-for-storing-currency-values-in-a-mysql-database에는 Something like Decimal(19,4) usually works pretty well in most cases. You can adjust the scale and precision to fit the needs of the numbers you need to store. Even in SQL Server, I tend not to use "money" as it's non-standard. 로 설명되고 있다. 추가로 What is the benefit to using (19,4) instead of (19,2)? – ryvantage Oct 25 '16 at 20:54 2 My benefit was this.. I needed all my table rows to equal a particular amount of money. Let's say that amount is $10.00. As new rows get added each row amount changes. If there are 3 rows in the table. 10 / 3 = 3.3333333333... but with only 2 decimals they are stored as 3.33. So when you sum those up, 3.33 + 3.33 + 3.33 = 9.99. We lost a penny! Gets even worse on a larger dataset. Store at 19,4 and sum your totals, then round the output to 19,2.. – Rick Feb 16 '18 at 3:23 좋은 설명이 있는 website : https://www.mysqltutorial.org/mysql-decimal/

Linq INNER JOIN and SQL INNER JOIN - 결제완료한 경우에만 TanzMemberPurchaseSum에 카운트가 되도록 하는 식을 만들기 위해
오픈하고 나니 버그, 결제를 하지 않은 상품도 마일리지와 쿠폰을 주는 오류 발생. 원인은 결제 하지 않아도 TanzMemberPurchaseSum 테이블에 적혀지는 RealPayment와 PresentSum이 문제였다. 따라서 TanzMemberPurchaseSum과 연계되 ShippingDetail table 의 해당 거래 건에 대해 결제가 되지 않은 경우, 즉 ShippingDetails.StepForDeliveryId = 1일 경우에는 카운트가 되지 않게 하는 식을 써야 했다. SQL의 경우 식은 아래와 같다. select sum(PresentSum) From TanzMemberPurchaseSum inner join ShippingDetails ON TanzMemberPurchaseSum.ShippingDetailsId = ShippingDetails.ShippingDetailsId AND ShippingDetails.StepForDeliveryId<>1 where TanzMemberPurchaseSum.Id='f66694aa-8cee-406c-98a0-001e2b221259' 이것을 LINQ로 바꾸어 주어야 한다. var sum3 = (from tm in db.TanzMemberPurchaseSums from sd in db.ShippingDetails where tm.ShippingDetailsId == sd.ShippingDetailsId && sd.StepForDeliveryId != 1 && tm.Id == id select tm.RealPayment).Sum(); 이상의 식으로 결제완료된 것만 카운팅에 넣게 되어 이제 더 이상의 미결제가 카운팅 돼 쿠폰이 발행되거나 마일리지가 더해지는 일이 없어졌나? 마일리지 체크 - 이것은 안됐다. 마일리지는 dcmlRealPayment로 넘어오는 값이다. 이것을 다음에 적용할 수 있도록 하려면?

barreinabag.com 달라 결제 시 테이블의 변화에 대한 건
이니시스의 경우 결제가 되지 않고 있다. 이니시스 코드에서 currency를 USD로 바꾸었다. 이니시스의 조언에 의해 TanzProduct의 가격 컬럼에 priceUS하는 식으로 추가하고 속성을 decimal(19,2)로 하였다. 그런데 연결된 TanzMemberPurchaseSum의 컬럼 중Purchase, PresentSum RealPayment는 decimal(18)로 TanzProduct의 priceUS의 속성 decimal(19,2)와 다르다. 여기서 문제가 발생하는 것으로 보인다. 속성을 decimal(18)을 decimal(19,2)로 바꾸어 주려면 어떻게 해야 하나? edmx파일을 살펴보니 TanzProduct의 컬럼 ProductPriceUS나 ProductPrice는 엄밀하게는 ProductPriceUS(19,2)이고 ProductPrice(18)임에도 TanzProduct.cs에는 그러한 차이가 보이지 않는다. 따라서 그냥 MSSQL에서 속성을 바꾸어주기만 하는 것은 문제가 없지 않을까 생각된다.

barreinabag.com 달라화 결제 오류 문의 및 해결
https://www.barreinabag.com/PG/KGinicis/INIStdPayRequest.aspx?bank=Card&handphone=01036608471&name=%ec%9d%b4%eb%b3%91%ec%9d%bc&totalprice=18.25&barre=T_SpareboltSetT_DonquixoteBolt_Short&sid=1532 탄쯔 탄쯔홈페이지 해외 사이트를 만드는 중에 있습니다. 결제연동은 해외카드 결제를 가능하도록 요청하여 완료되었습니다. 현재 탄쯔 한국 사이트는 https://www.tanz.co.kr입니다만 영어권 사이트는 https://www.barreinabag.com 입니다. 궁금한 것은 https://www.barreinabag.com의 결제연동에 관한 것입니다. https://www.tanz.co.kr에서 이니시스 결제 연동한 코드에서 연결 URL을 https://www.barreinabag.com으로만 바꾸어주면 연동이 가능한지요? 아시는대로 현재 이니시스와의 계약은 https://www.tanz.co.kr로 되어 있습니다. 답변 부탁드립니다. 이니시스 안녕하세요 이니시스 기술지원입니다. 현재 이니시스 결제 처리가 가능한 서버(결제 모듈이 구성된)는 동일하고, 도메인만 추가 하는 방식이라면 모듈 구성은 그대로 사용하시고, 결제요청도메인과 returnUrl, closeUrl 도메인만 일치시켜주시면 됩니다. (요청도메인과 returnUrl, closeUrl 도메인이 상이할 경우 오류가 발생됩니다.) 혹, 처리되는 서버 및 구성 정보 변경이 필요할 경우, 아래 사항에 대해 체크가 필요합니다. - 가맹점측 서버 OUTBOUND 설정 : https://manual.inicis.com/stdpay/std-info.php#firewall - MID 를 새로 발급받아 사용할 경우, MID 에 매칭되는 signKey 변경 등 추가 궁금하신 사항이 있으실 경우 회신주시면 가이드 드리겠습니다. 탄쯔 빠른 답변에 감사드립니다. 계속 오류가 나서 원인을 찾아보았습니다. 다음과 같은 의심이 들어 질문드립니다. https://www.barreinabag.com의 경우 화폐단위가 미화 달라를 기준으로 합니다. 혹시 결제 단위가 달라로 바뀌었을 경우 원화와 달리 소수점 이하의 달라화 단위로 결제를 요청할 경우 오류가 발생할 수 있을까요?. 이니시스 안녕하세요 이니시스 기술지원입니다. 달러 단위로 결제 요청을 하실 경우, 아래 사항을 체크 부탁드립니다. 1. 통화구분 ["WON":한화,"USD":달러] 설정 예) 괄호열고 input name="currency" value="USD" 괄호닫기 2. 금액 설정 [소수점 없이 100단위로 설정, 1달러 = 100] 예) price = 225 --> 2.25 달러 위 사항에도 특이점이 없으실 경우라면, 발생되는 오류 내용과 해당 오류가 발생되는 결제요청정보를 추가 전달 부탁드립니다. 탄쯔 위 답변 2.금액설정 에 따르면 price를 2.25라고 적는게 아니라 225라고 소숫점을 뺀 체 연동값으로 보내야 한다는 설명이신가요? 해외판매용 홈페이지에서는 달라의 단위인 2.25로 상품값이 기재되어 있고 이 값을 바로 연동하는 구조이거든요. 설명대로라면 2.25달라 상품의 경우 225로 이니시스 연동값을 보낼 수 있는 구조로 변경해야 한다는 것으로 이해됩니다만 그게 맞습니까? 탄쯔 위의 내용을 테스트 한 결과(CartController에서) 지금 2.금액설정과 같은 방식으로 하니 되네요. 잘 해결되었습니다.

스크롤 바가 사라졌다
인트로 페이지 업뎃하면서 스크롤 바 우측이 사라졌다. 전에도 부딪쳤던 문제. 당시 해결했는데 방법을 잊었다.