[태그:] 스마트스토어 자동화

  • 스마트스토어 주문 자동 문자 카톡 메일 발송 시스템구축

    스마트스토어 주문 자동 문자 카톡 메일 발송 시스템구축

    스마트스토어 주문 자동 발송 및 자동으로 문자 (카톡, 메일 등등)를 보내는 시스템을 만들었습니다.

    하지만 범용으로 사용하기는 어려움이 있어 업체마다 개별 커스터마이징을 해야 합니다.

    그렇다보니 그에 대한 개발 비용이 필요하며 시간도 충분히 필요합니다.

    스마트스토어 주문 자동 문자 발송 시스템구축

    1. 주문이 들어오는것을 24시간 실시간 모니터링합니다.

    이미지 2023 05 05 오후 7 03 28 word1
    스마트스토어 주문 자동 문자 카톡 메일 발송 시스템구축 6

    스마트스토어 자동문자 발송하기 위해서는 PC 1대를 상시로 켜 놓아서 주문을 모니터링 해야 합니다.

    그리고 주문이 들어올경우 고객 정보를 DB(데이터베이스)에 저장합니다.

    실물의 경우이든 가상의 상품(전자책, 전자쿠폰, 전자코드, 전자상품권 등등)이든 상관없이 그날 바로 자동으로 보낼꺼라

    고객의 주문이 파악이 되는 동시에 즉시 배송버튼을 자동으로 클릭하여 배송처리를 해버립니다.

    주문이 들어오는 동시에 배송은 즉시 이루어져야합니다.

    2. 10분안에 고객에게 상품을 배송합니다.

    이미지 2023 05 05 오후 7 05 03 word1
    스마트스토어 주문 자동 문자 카톡 메일 발송 시스템구축 7

    말이 10분이지 프로그래밍으로 처리 될 경우 1분도 안 걸릴 수 있습니다.

    경우에 따라 다를수는 있으나 대부분 전자코드, 전자책, 전자상품관련된 코드 또는 단순 입금확인에 대한 승인 문자 정도는 입금이 되는 순간 배송과 함께 문자로 발송되고 마무리가 되어야 합니다.

    헬스장 1개월 3개월 6개월 결제를 스마트스토어로 결제를 받았다면 대표님들은 고객에게 발송해줘야 하는 문자는 1가지입니다.

    [티온헬스장 결제안내]
    문호영 회원님께서는 2023년 5월 5일부터 2023년 8월 4일(3개월)까지 PT를 자유롭게 이용 할 수 있습니다.

    단순하게 단문, 장문의 문자로 보낼 수도 있습니다.

    혹은 회원코드를 프로그래밍하여 자동으로 생성하여 발송문자에 회원카드를 만들어서 보낼 수 있습니다.

    전자책을 판매하는 대표라면 전자책을 읽을 때 비밀코드라던지 전자책 URL 주소라던지 전자책 PDF 파일 그 자체를 파일로 보내준다던지 할 수 있습니다.

    이러한 자동화 코드는 1분안에 처리를 할 수 있습니다.

    3. 배송완료시 구매확정이 될 수 있도록 문자를 하나 더 발송합니다(옵션)

    이미지 2023 05 05 오후 7 06 57 word1
    스마트스토어 주문 자동 문자 카톡 메일 발송 시스템구축 8

    이 부분에 대해서는 견해가 다를 수 있습니다.

    옵션 항목으로 그냥 넘어가도 되지만 이왕 내가 판매하는 상품의 리뷰가 별 5개와 긍정적인 멘트로 남겨질 경우 상품판매 매출로 직결되다보니 이부분은 중요하다면 중요한 부분입니다.

    반변에 사용자가 스스로 자연스럽게 하는 방식으로 운영하셔도 되니 (옵션)처리된것처럼 필요에 따라 활용하면 됩니다.

    스마트스토어 주문확인하고 바로 문자 혹은 카톡(메일)을 보낼 때에는 이미 상품을 배송하였다고 배송처리 이후에 해야 합니다.

    그 이유는 자동화상품 특성상 그렇게 진행해야지만 반복적인 작업을 다시 하지 않아도 되기 때문입니다.

    만약 배송처리는 되었는데 문자결함이라던지 문자 오류가 발생한다면? 당연히 문제가 발생하겠죠.

    그렇기 때문에 마지막 4단계에 검수단계가 꼭 필요합니다.

    4. 관리자모드로 상품 배송에 대한 결과를 검수합니다.

    이미지 2023 05 05 오후 7 14 49 word1
    스마트스토어 주문 자동 문자 카톡 메일 발송 시스템구축 9

    이 단계는 사실 관리자모드라고 보면됩니다.

    지금까지 주문된 모든 상품리스트는 관리자툴에서 확인이 가능하며 상품은 배송되었으나 문자발송이 안되었는지 여부를 확인합니다. 그 부분까지도 자동화 처리하여 실수로 빠진것들까지 다시 한번 상품이 잘 전달 될 수 있도록 만들어야 합니다.

    이렇게 만들어진 티온 스마트스토어 자동화 시스템은….
    현재 스마트스토어에서 결제가 들어오면 자동으로 확인하여 문자로 결과를 전송합니다.

    이제부터 만들어지는 스마트스토어 자동화 상품은 범용 상품으로 어떠한 업체에도 적용해서 사용할 수 있도록 시스템을 개발하고 있습니다.

    스마트스토어 자동화 상품 문의는 네이버 톡톡을 이용해주시기 바랍니다.

    감사합니다.

  • 스마트스토어 API 파이썬 자동 로그인 메일 문자 발송 시스템구축

    스마트스토어 API 파이썬 자동 로그인 메일 문자 발송 시스템구축

    스마트스토어 API 파이썬 프로그램을 개발하여 스마트스토어 자동화 시스템을 구축하고 있습니다.

    스마트스토어API파이썬 word1

    우선 필요하신 분들은 저처럼 전자 상품을 판매하시는 대표님들이실겁니다.

    쇼핑몰 결제 후에 전자 쿠폰이나 상품배송을 자동으로 해주는 시스템을 찾는 분들이 많이 계십니다.

    예를들면…

    전자책 발송, 전자쿠폰 (할일쿠폰, 기프티콘, 일련번호, 시리얼번호), 전자 상품권, 영화 예매같은 전자 기간 상품권 등등

    생각해보니 여행쿠폰도 만들수 있어보입니다.

    대부분 상품을 전자코드로 DB에 넣어두고 뽑아서 하나씩 보내준다면 소고기 교환권 이런것도 만들수 있어보입니다.

     

    이런 무형의 상품을 쇼핑몰 결제가 이루어지면 1분내에 자동으로 발송하는 시스템입니다.

    여기에서 조금 더 마케팅 요소까지 신경을 써서 예쁜 후기가 올라오도록 전자 상품 배송 이후에 만족도 평가 문자라던지

    서비스 항목을 문자로 더 제공한다던지 등등을 만들어서 자신만의 멋진 자동화 시스템을 만들 수 있습니다.

     

    개발언어는 파이썬입니다.

    473 word1

     

    시스템 모듈은 파이썬으로 개발중이라보니 확장이 생각보다 다방면합니다.

    꼭 쇼핑몰의 결제만이 아닌 코인과 연동까지 하여 코인 결제도 만들 수 있어보입니다.

     

    스마트스토어 API 파이썬 자동화시스템을 아직 유료로 판매를 하고 있지는 않지만

    저도 이런 시스템으로 인해서 수익화를 만들어야하기때문에 생각 있으신분들은 구축을 해드릴 의향이 있습니다.

    아직까지는 규모가 있는 업체들 위주로 시스템을 구축해드리고 싶지만 세상사는일이 생각처럼 되지는 않더군요ㅎㅎ

     

    스마트스토어 자동화 시스템을 구축하기 위해서 신청 하실 분들은 톡톡 남겨주시기 바랍니다.

    관련하여 네이버 블로그에도 간단하게 스마트스토어 2차인증 알고리즘 관련하여 글을 하나 올려두었습니다.

    적다보니 주저리 주저리 자신만의 시스템을 만들어야 한다라는 결론으로 글이 끝나버렸네요.

    시스템을 따로 판매하기 위해서 홍보 글을 작성한것은 아닙니다.

     

    975 word1

    422 word1

    스마스토어 2차인증 쉽게 해결할 방법 혹시 더 좋은 방법 있으시면 알려주세요.

     

    감사합니다.

     

     

  • 스마트스토어 자동 프로그램 만들기

    스마트스토어 자동 프로그램 만들기

    현재 티온 자동화 시스템을 만들어서 자동화 수익을 만들어놓았습니다.

    2022년 6월 15일 인터넷익스플로러 지원을 중단하면서 더이상 익스플로러 브라우저로 네이버에 접속을 할 수 없게되었습니다.

    그로인해 3년전에 만들어놓았던 인터넷 익스플로러 기반의 자동 프로그램을 업데이틀 해야 할 시기가 되버렸습니다.

    이 글은 스마트스토어 자동 프로그램 판매 및 관리 프로그램이 아닙니다!!

    오해하지말아주세요. 그냥 제가 프로그래머라서 로그인 관련 소스를 만들다보니 기술에 대한 소개이며

    관리프로그램 판매/대행/운영에 대한 내용이 아님을 밝힙니다.

    [coupang]

    스마트스토어 자동 프로그램 아닙니다 – 로그인편

    오늘은 로그인만 간단하게 C#을 이용해서 만들어보도록 하겠습니다.

    그리 어렵지는 않고 원리만 알면 쉽습니다.

    일단 스마트스토어 로그인 페이지에는 아주 멋진 웹 기술이 포함되어져있습니다.

    두가지가 있는데요.

    한가지는 로그인을 기계적으로 하지 못하도록 막는 기술이 있습니다.

    또 다른 한가지는 로그인을 기계가 하는것을 막는 기술입니다.

    둘다 같은 말이기는 하지만 서로 다른 기술이라서 이렇게 표현했습니다.

    제일 먼저 로그인창을 만들어야지만 로그인 이후에 주문 상품 리스트를 가져올 수 있습니다..

    비밀번호란을 잘 보시면 암호가 등록되어져있지만 ※ 필수 정보입니다. 라는 문구가 나옵니다.

    이미지 2022 12 07 오후 4 18 37 word1
    스마트스토어 자동 프로그램 만들기 22

    다른 한가지는 캡챠인데… 로그인 실패할때 보통 나오는 자동방지 알고리즘이라서 오늘은 그까지 볼 기회가 없어보입니다.

    캡챠 뜨더라도 로그인 할 수 있는 방법 많으니 너무 걱정하지마시고요.

    아래 GIF 움짤을 잘 보세요.

    분명 암호가 이미 등록되어져있었는데 제가 클릭하여 글자 하나를 쳐주니 필수정보 항목이 사라졌죠?

    스마트스토어자동로그인 word1

    너무 쉽게 해결이 되버렸습니다.

    894 word1

    아이디 등록은 document.getElementById(“loginId”).value = “로그인 아이디” 등록하시면 됩니다.

    비밀번호 등록은 document.getElementById(“loginPassword”).value = “암호” 등록하시면 됩니다.

    이까지는 쉽습니다. 버튼만 누르면 아이디 암호가 등록되도록 했으니깐요.

    하지만 실제로 사람처럼 마우스로 한번 클릭해서 글자를 눌러주어야지만

    네이버 고급 자바스크립트 스킬을 피할 수 있습니다.

    이때 방법이 다양합니다.

    그냥 로그인 할 때마다 귀찮더라도 띵똥 소리 나게 해서 직접 치는 방법도 있고요.

    (이방법 장난처럼 느끼실수 있으나… 프로그래머들 사이에서 실제로 어쩔수 없는 상황에는 이렇게도 만들어야 합니다)

    또 다른 방법은 매크로로 간단하게 마우스 이동해서 글자 쳐눌러주는겁니다.

    하지만 우리는 C#으로 하고 싶으니 그러한 기능의 윈도우32 함수를 찾아서 사용하면됩니다..

    MouseClick 함수와 KeyboardPress 함수를 이용하면됩니다.

    우선 제일 상단에 함수부터 선언해줍니다.

    [DllImport("user32.dll")]
    static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
    [DllImport("user32.dll")]
    static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData, int dwExtraInf);
    
    
    private const uint MOUSEMOVE = 0x0001; // 마우스 이동
    
    private const uint LBUTTONDOWN = 0x0002; // 왼쪽 마우스 버튼 눌림
    private const uint LBUTTONUP = 0x0004; // 왼쪽 마우스 버튼 떼어짐
    
    private const uint RBUTTONDOWN = 0x0008; // 오른쪽 마우스 버튼 눌림
    private const uint RBUTTONUP = 0x00010; // 오른쪽 마우스 버튼 떼어짐
    
    private const uint ABSOLUTEMOVE = 0x8000; // 전역 위치
    
    
    private const byte VK_SPACE = 0x20;
    private const byte VK_RETURN = 0x0D;
    private const byte VK_BACKSPACE = 0x08;
    private const byte VK_TAB = 0x09;
    private const byte VK_PRIOR = 0x21;
    
    private const byte KEYEVENTF_EXTENDEDKEY = 0x0001;
    private const byte KEYEVENTF_KEYUP = 0x0002;
    
    
    
    
    
    private void KeyboardPress(byte keyCode)
    {
    keybd_event(keyCode, 0, KEYEVENTF_EXTENDEDKEY | 0, 0);
    
    //keybd_event(keyCode, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0);
    //keybd_event(keyCode, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
    }
    
    private void MouseClick(bool isClick, Point point, uint width, uint height)
    {
    Rectangle rtScreen = Screen.PrimaryScreen.Bounds;
    
    uint nX = (uint)(65535 * (point.X + width) / rtScreen.Width);
    uint nY = (uint)(65535 * (point.Y + height)/ rtScreen.Height);
    
    if (isClick)
    {
    mouse_event(ABSOLUTEMOVE | MOUSEMOVE | LBUTTONDOWN, nX, nY, 0, 0);
    mouse_event(ABSOLUTEMOVE | MOUSEMOVE | LBUTTONUP, nX, nY, 0, 0);
    }
    else
    {
    mouse_event(ABSOLUTEMOVE | MOUSEMOVE, nX, nY, 0, 0);
    }
    
    
    }
    그리고 아래의 내용을 사용하면 됩니다.
    
    IWebElement id = driver.FindElement(By.Id("loginId"));
    id.Clear();
    
    Point position = id.Location;
    
    id.SendKeys(textBox_아이디.Text);
    MouseClick(true, position, 350, 160);
    
    KeyboardPress(VK_BACKSPACE);
    
    Thread.Sleep(100);
    IWebElement pw = driver.FindElement(By.Id("loginPassword"));
    pw.Clear();
    pw.SendKeys(textBox_비밀번호.Text);
    
    Thread.Sleep(100);
    
    MouseClick(true, position, 350, 200);
    KeyboardPress(VK_BACKSPACE);
    
    Thread.Sleep(100);
    
    //로그인버튼
    MouseClick(true, position, 350, 280);

    마우스 포지션을 우선 알아야 하므로 Label 을 하나 만들어서 마우스가 이동할때마다 포인트를 x,y 나오도록 하였습니다.

    이미지 2022 12 07 오후 4 20 29 word1
    스마트스토어 자동 프로그램 만들기 23

    그리고 로그인 영역에 마우스를 날려야 하므로 Button 을 3개 만들었습니다.

    버튼을 만든 이유는 그 위치로 마우스포인트를 옮기기 위해서입니다.

    직접 Location 정보를 입력하면 가장 좋지만…

    실제로 프로그램을 실행하다보면 위치를 찾기가 어려울때가 있습니다.

    이를 대비해서 패널이나 버튼을 올려서 위치를 찾습니다.

     private void getMouthLocation()
    {
    label_XY.Text = String.Format("{0},{1}", MousePosition.X - this.Location.X, MousePosition.Y - this.Location.Y);
    }
    
    
    private void panel_MouseMove(object sender, MouseEventArgs e)
    {
    Button button = sender as Button;
    ReleaseCapture();
    SendMessage(button.Handle, SYSTEMCOMMAND, SC_DRAGMOVE, 0);
    
    
    //button_포커스키워드
    WriteValue(button.Name, "X", button.Left.ToString());
    WriteValue(button.Name, "Y", button.Top.ToString());
    
    getMouthLocation();
    }

    위의 두 소스를 이용하면 좌표를 알 수 있으며 버튼을 프로그램 안에서 움직이도록 드래그 할 수 있습니다.

    스마트스토어자동화 word1

    버튼에 Mousemove() 함수를 연결 시키면 됩니다.

    이제 남은 부분은 버튼을 옮겨놓고 그위에 고정시키는 것과

    버튼의 location.X와 location.Y를 찾아내어서 왼쪽 -1, -1 영역을 클릭 하고 글자를 하나 써주기만 하면됩니다.

    저는 이 부부분을 조금 더 쉽게 하기 위해서 글자를 미리 한글자 더 쳐넣고 글자를 지우는 방식으로 처리했습니다.

    [DllImport("kernel32")]
    private static extern long WritePrivateProfileString(String section, String key, String val, String filePath);
    [DllImport("kernel32")]
    private static extern int GetPrivateProfileString(String section, String key, String def, StringBuilder retVal, int size, String filePath);
    
    
    public string PATH = string.Format("{0}/{1}.ini", System.AppDomain.CurrentDomain.BaseDirectory, Assembly.GetExecutingAssembly().GetCustomAttribute<AssemblyTitleAttribute>().Title);
    
    
    public void WriteValue(String strSection, String strKey, String strValue)
    {
    WritePrivateProfileString(strSection, strKey, strValue, PATH);
    }
    
    public void DeleteSection(String strSection)
    {
    WritePrivateProfileString(strSection, null, null, PATH);
    }
    
    public string ReadValue(String strSection, String Key)
    {
    StringBuilder strValue = new StringBuilder(255);
    int i = GetPrivateProfileString(strSection, Key, "", strValue, 255, PATH);
    return strValue.ToString();
    }

    위의 소스코드는 특정 위치를 저장하기 위한 코드입니다.

    아까 마우스 이동 소스를 잘 보면 그안에 위치를 저장하는 코드가 있습니다.

    private void panel_MouseMove(object sender, MouseEventArgs e)
    {
    Button button = sender as Button;
    ReleaseCapture();
    SendMessage(button.Handle, SYSTEMCOMMAND, SC_DRAGMOVE, 0);
    
    
    //button_포커스키워드
    WriteValue(button.Name, "X", button.Left.ToString());
    WriteValue(button.Name, "Y", button.Top.ToString());
    
    getMouthLocation();
    }

    그리고 프로그램을 처음 호출할때 저장 해놓은 파일을 불러와서 위치를 기억해서 옮기면 됩니다.

    if (ReadValue(button_포커스_로그인_아이디.Name, "X") != "")
    {
    button_포커스_로그인_아이디.Location = new Point(Int32.Parse(ReadValue(button_포커스_로그인_아이디.Name, "X")), Int32.Parse(ReadValue(button_포커스_로그인_아이디.Name, "Y")));
    }
    
    
    if (ReadValue(button_포커스_로그인_암호.Name, "X") != "")
    {
    button_포커스_로그인_암호.Location = new Point(Int32.Parse(ReadValue(button_포커스_로그인_암호.Name, "X")), Int32.Parse(ReadValue(button_포커스_로그인_암호.Name, "Y")));
    }
    
    
    if (ReadValue(button_포커스_로그인_로그인버튼.Name, "X") != "")
    {
    button_포커스_로그인_로그인버튼.Location = new Point(Int32.Parse(ReadValue(button_포커스_로그인_로그인버튼.Name, "X")), Int32.Parse(ReadValue(button_포커스_로그인_로그인버튼.Name, "Y")));
    }

    이렇게 처음 한번만 실행하면 마우스로 이동시킨 버튼의 위치를 자동으로 저장할 수 있습니다.

    이제 남은 숙제인 마우스로 포인트를 옮기고 클릭하여 그곳에 글자를 하나 써주기만 하면됩니다.

    button_포커스_로그인_아이디.Visible = false;
    button_포커스_로그인_암호.Visible = false;
    button_포커스_로그인_로그인버튼.Visible = false;
    
    Thread.Sleep(1000);
    
    webView21_스마트스토어?.CoreWebView2.ExecuteScriptAsync("document.getElementById('loginId').value='" + textBox_아이디.Text + "'");
    
    Cursor.Position = new Point(button_포커스_로그인_아이디.Location.X, button_포커스_로그인_아이디.Location.Y);
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
    
    Thread.Sleep(100);
    KeyboardPress(VK_BACKSPACE);
    
    webView21_스마트스토어?.CoreWebView2.ExecuteScriptAsync("document.getElementById('loginPassword').value='" + textBox_비밀번호.Text + "'");
    
    
    Cursor.Position = new Point(button_포커스_로그인_암호.Location.X, button_포커스_로그인_암호.Location.Y);
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
    
    Thread.Sleep(150);
    KeyboardPress(VK_BACKSPACE);
    
    
    Thread.Sleep(550);
    
    Cursor.Position = new Point(button_포커스_로그인_로그인버튼.Location.X, button_포커스_로그인_로그인버튼.Location.Y);
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
    
    

    이제 로그인은 자동으로 해결 되었습니다.

    로그인이 잘 되었습니다. 축하합니다!! 

    이미지 2022 12 07 오후 4 21 25 word1
    스마트스토어 자동 프로그램 만들기 24

    다음 단계는? 주문페이지에서 주문리스트를 가져와야겠죠?

    주문페이지에서 주문리스트 가져오는것은 더 쉽습니다. 로그인에 비하면 훨씬 쉽죠.

    참고로 이 글은 네이버 스마트스토어 자동 프로그램 판매하기 위해 작성된 글이 아닙니다.

    관리또한 하지 않으며 단지 관련하여 키워드로 글을 작성하여 방문자를 모으기 위한 전략일뿐입니다.

    더 궁금한 사항은 저에게 톡톡을 보내셔도 되지만 제작, 판매, 의뢰, 관리 관련해서는 하지 않습니다.

    네이버에서 자동관련 프로그램 제작, 의뢰, 관리는 약관위배되는 대상이라 이를 다루지 않습니다.

    감사합니다.