반응형

관리중인 사이트에 결제모듈을 달아야한다

쇼핑몰은 아니라서 결제 건수는 많지않을거라 살짝 걱정이 덜되지만?

그 전에는 영카트에 기본 코드를 응용해서 많이했었따

뭐 메인페이도 따로 달아본적있지만

이번에는 Nicepay!

여기저기 살펴보니 결제모듈 작업방식이 많이 바뀌었떠라

아니면 내가 영카트 위주로 달아서 진작 바뀌었었나..

아무튼 작업을 하려고 기본적인 가입이나 신청을하고~

샌드박스라는 test 상점을 개설할수있었다

기본적으로 결제창을 띄우는 것은 상당히 쉬워졌다

그냥 api 통신 코드만 20여줄짜리 복사해넣고 키값,아이디값만 넣으면 끝

AUTHNICE.requestPay({
    clientId: '',
    method: 'card',
    orderId: ,
    amount: ,
    goodsName: ,
    buyerName:,
    buyerTel:,
    buyerEmail:,
    returnUrl: '',
    mallReserved : ,
    fnError: function (result) {
        alert(result.errorMsg);
    }
  });

엄청나게 편해졋군

결국에는 뭐 검증처리, 취소처리, 등등등등 해야하겠지만서도

아무튼 

이래저래 작업을하려는데~

전에는 결제 페이지에서 결제창띄우고 결제후 return 했을때 함수를 실행해서 해당 페이지의

주문 form을 submit 시켰는데

현재 방식은 returnUrl을 입력해서 거기로 post 로 값을 쏴버린다

허허

주문서폼 submit 시켜야한다고오

옛날방식을 돌려줘

혹시나 영카트에 있는 script src를 넣어서 수정하려해봣지만

지원하지않은 방식이란다

영카트만 따로 지원해주는건가보다

절레절레

쩝 어쩔수없이 ajax로 주문서 정보 저장하고

결제한다음 결과페이지로 return받아서

결과페이지에서 검증과 취소 등등등 처리했다

흐으으음 이게맞나 싶기도

그리고 클라이언트방식, 서버방식 두가지가있는데

일단 간단하게 바로 승인되는 방식으로했는데

겁을 많이준다 무슨 위변조 위험이있다느니 꼭 검증을 추가하라느니

이럴거면 그냥 이방식은 없애버리지;

검증작업은 차차 추가해나가야하고 테스트테스트다

카드사 심사 받는동안 열심히 테스트하고~

관리자페이지 만들어야겠다

728x90
반응형
반응형

이번에는 메인에 애니메이션 효과를 주라는요청이있었다

보통 css로 대부분 처리해버렷는데

이번에는 css 만으로는 안될거같아서 javascript로 처리했다

안되는이유는 애니메이션 구성? 떄문이었는데

이미지가 계속줄어들고, 글자가 날라가고, 이게 계속 반복되고

하여튼 쪼금 귀찮았다 사실 많이

그렇게 복잡하진않았고 타이밍이나 순서 맞추는게 일이었다

기본은 

$(".test").delay(100).animate({ }); 이런느낌인데

딜레이와 순서를 위해서 

일단 순서 구성을짜고

$(".test").delay(100).animate({
        
        opacity:'1'

    },1000,function(){

            다음 애니메이션들 -

    };

});

이렇게 처음 animate 안에 코드를 넣고 그안에 또 넣고 이런식으로 했다

그리고 반복해야되니까

function _start(){} 으로 함수로만들어줬고

화면크기나 셋인터벌이나 이런 조건에따라 함수를 호출하도록 마지막 마무리

728x90
반응형
반응형

검색 서치결과페이지에서

검색어에 하이라이트를 줘야겠다

php로 하면 편하지만 php를 사용하는 홈페이지가 아니어서

javascript로 따로 결과에 추가해줬다

//직원 검색어 하이라이트 추가
search_filter();    
function search_filter(){
    var search = $('#searchKeyWord').val();
    var sf_cnt = 0;
    $(".sc_td, .sch_li p, .table_view td a").each(function () {
        var regex = new RegExp(search,'gi');
        
        $(this).html( $(this).text().replace(regex, "<span class='text-danger bold'>"+search+"</span>") );
        
        sf_cnt = sf_cnt+1;
    });
};  

text-danger 클래스에 css로 컬러를 넣어놨다

728x90
반응형
반응형

chart js 를 사용해서 통계 그래프를 만들었다

형태는 pie 형태였는데

문제는 그래프의 갯수가 10여개가 넘어간다는것

그래프마다 분류 갯수나 타이틀 배경색을 다 다르게해달라는 요청이었다

타이틀이나 배경색은 뭐 그런다 치더라도

pie그래프가 legend 갯수에 따라 그래프 크기가 아예 줄어들어버려서

html로 따로빼야하나.. 또 색상은 어케맞추나 하고있었는데

legend custom 하는 코드가 있어서 적용시켜서 다행이었다

 

options: {
            responsive: true,
            title: {
                    display: true,
                    text: '전체',
                    fontSize:20
                },
            plugins: {
                labels: [
                  {
                    render: 'value',
                    fontColor: 'white',
                    overlap: false,
                    precision: 2,
                    fontSize: 15
                  }
                ]
            },
            legend: false,
            legendCallback: function(chart) {
              var text = [];
              text.push('<ul class="' + chart.id + '-legend">');
              for (var i = 0; i < chart.data.datasets[0].data.length; i++) {
                text.push('<li><span style="background-color:' + 
                chart.data.datasets[0].backgroundColor[i] + '">');
                text.push('</span>');  

                if (chart.data.labels[i]) {
                  text.push(chart.data.labels[i]);
                }
                text.push('</li>');   

              }
              text.push('</ul>');
              return text.join("");
            }
        }

 

옵션 부분에 이렇게 legendCallback 을 추가해서 css로 수정적용했다

728x90
반응형
반응형

그누보드 기반 게시판을 활용해서 페이지를 만드는데

wr_id를 물고 데이터를 대량으로 업로드하는 요청이 있었다

천단위가 넘어가서 엑셀로 업로드를 시켜야했고

게시글 아이디인 wr_id를 물고 다른 db에 일괄 업로드시키는 방식으로 진행

문제는 게시판 write 페이지에서 submit 시킬때 write_update에서 동시에 처리하려니

엑셀업로드가 안되는것

또 업로드를 나누자니 좀 직관적이지 않아보였다 뭔가 말로 설명하기어렵군

하여튼 ajax로 파일을 보내서 따로 엑셀업로드시키고 나머지는 submit 시키기로했다

var form = $('#fcowork')[0];
var formData = new FormData(form);
var xls_wr_id = '';

        formData.append("files", $("#upload")[0].files[0]);
        formData.append("xls_wr_id", xls_wr_id);

        $.ajax({
            type: "POST",
            enctype: 'multipart/form-data',
            processData: false,
            contentType: false,
            data:formData,
            url:'testset.php',
            success: function(data) {
                console.log(data);

            }
        })

이런 코드가 되었고 기존 ajax할때와 다른점은~
entype을 작성해주고 data를 append 해서 따로 보냈다
잘 작동해서 다행이다 일단은?

728x90
반응형
반응형

php 가 아니라 java로 작업된 홈페이지에서

주소창에찍힌 파라미터를 가져와야햇다

php면 그냥 GET으로 가져오고 말겠는데

javascript를 사용해야해서 찾아봤다.

보통 물음표와 & 표시로 구분되어있어서

이걸 기준으로 짤라서 가져오는 형식이었다

var getParameters = function (paramName) { // 리턴값을 위한 변수 선언
var returnValue;

// 현재 URL 가져오기 
var url = location.href; 

// get 파라미터 값을 가져올 수 있는 ? 를 기점으로 slice 한 후 split 으로 나눔 
var parameters = (url.slice(url.indexOf('?') + 1, url.length)).split('&'); 

// 나누어진 값의 비교를 통해 paramName 으로 요청된 데이터의 값만 return 
for (var i = 0; i < parameters.length; i++) { 
    var varName=parameters[i].split('=')[0]; 
    if (varName.toUpperCase() == paramName.toUpperCase()) { 
        returnValue = parameters[i].split('=')[1]; 
        return decodeURIComponent(returnValue); 
    } 
} 

};

728x90
반응형
반응형

코드저장..

검색페이지를 만드는데

이번에는 주로하던 php 페이지가 아니라 java로 제작페이지여서

javascript로 검색결과에 검색어 표시를 해줘야했다

결과적으로는 크게 복잡하지않았다

search_filter();
function search_filter(){
var search = $('#searchKeyWord').val();
var sf_cnt = 0;
$(".sc_td").each(function () {
var regex = new RegExp(search,'gi');

    $(this).html( $(this).text().replace(regex, "<span class='text-danger bold'>"+search+"</span>") );

    sf_cnt = sf_cnt+1;
});

};

replace 함수를 사용하고있고
해당 구역에서 키워드 텍스트를 찾아서 span으로 한번 둘러싸주는 형식

순조롭게 적용되서 굳이었다

728x90
반응형
반응형

이미지 확대기능을 추가해달라는 요청이다

오픈된 코드가 많아서 작업은 어렵지않았다

javacsript 코드와 css 정도만 추가해주면 된다

이미지 해상도가 약간 영향을 미치긴하겠지만 크게 차이는없는듯?

일단 코드는

var target = $('.target');
//1
var zoom = target.data('zoom');

$(".target_wrap")
.on('mousemove', magnify)
.prepend("

")
.children('.magnifier').css({
"background": "url('" + target.attr("src") + "') no-repeat",
// 2
"background-size": target.width() * zoom + "px " + target.height() * zoom+ "px"
});

var magnifier = $('.magnifier');

function magnify(e) {

// 마우스 위치에서 .magnify의 위치를 차감해 컨테이너에 대한 마우스 좌표를 얻는다.
var mouseX = e.pageX - $(this).offset().left;
var mouseY = e.pageY - $(this).offset().top;

// 컨테이너 밖으로 마우스가 벗어나면 돋보기를 없앤다.
if (mouseX < $(this).width() && mouseY < $(this).height() && mouseX > 0 && mouseY > 0) {
    magnifier.fadeIn(100);
} else {
    magnifier.fadeOut(100);
}

//돋보기가 존재할 때
if (magnifier.is(":visible")) {

    // 3
    var rx = -(mouseX * zoom - magnifier.width() /2 );
    var ry = -(mouseY * zoom - magnifier.height() /2 );

    //돋보기를 마우스 위치에 따라 움직인다.
    //돋보기의 width, height 절반을 마우스 좌표에서 차감해 마우스와 돋보기 위치를 일치시킨다.
    var px = mouseX - magnifier.width() / 2;
    var py = mouseY - magnifier.height() / 2;

    //적용
    magnifier.css({
        left: px,
        top: py,
        backgroundPosition: rx + "px " + ry + "px"
    });
}

}

//

-- css

/* 감싸는 div /
.target_wrap { position: relative; margin: 0 auto; width: 100%;}
/
확대될 타겟이미지/
.target { display: block; width: 100%;}
/
돋보기 */
.magnifier { width: 300px; height: 300px; position: absolute; border-radius: 100%; box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.85), 0 0 3px 3px rgba(0, 0, 0, 0.25); display: none; z-index: 10000;}

728x90
반응형

+ Recent posts