This commit is contained in:
R5600U_PC 2024-05-31 01:57:42 +09:00
parent 64e4489972
commit d779995fa9
8 changed files with 473 additions and 301 deletions

View File

@ -20,43 +20,43 @@ etc4_title =
etc4_context =
etc5_title =
etc5_context =
쿠팡_쿠팡id = gAAAAABmVqRwtieSiHLSNxyqYBu-sNjGplWDnGyzI2giE9i9wt1BoCGi3behGXJZYy3xA3yPrH0tY2n2NRRTh5O_YdLcODPV4A==
쿠팡_업체코드 = gAAAAABmVqRwmETZ48N6VIUjoEQ7wzpnQ4BuVlvXKEY2gudcbKX2BJ4gdCfE23QxLVOzbZha9W288xitmTHQdQfqhW41-oCkng==
쿠팡_accesskey = gAAAAABmVqRwaP5RgxwSdhmvz2f1o1tlRqYfFUeorBGXYf0Yt5F0uZNv-iSe6P5rkfnYWDXQUiG7-niZQGqrUgJvH80D9NN1peN1LAK6up3RRQKpV7r_8m7zhNcFn0n4BLZFC06PCb88
쿠팡_secretkey = gAAAAABmVqRwLD1GETvO32XOZ30b5Pfb7X1oL1QM0kUWPWc5fbD_9IkWqcIISrtoreBKrUipCWFYyu4430-JHEFeEa4vRPR_j--UetA88tb6w7Iel_Vp8_ALiiLRXEoa7XW7IUMMc6bH
쿠팡_쿠팡id = gAAAAABmWDKhOxwcGxSnivf2yBgwQTBYP2z_pvm-DUenBV2uoymwlJsC3zcTIkdcFxooQ_uvGBFQ8ZJbmzzQ1rWj9U40_3JxUw==
쿠팡_업체코드 = gAAAAABmWDKhYfbbYBr4ihmxgUiqv7Nl3pa5i5_KWBnuNbRUTRCgVBqTyQGEKAl1b17unjGYj9au5RrG4QfoA5oi8ixbTMSN2w==
쿠팡_accesskey = gAAAAABmWDKh0nbRtBlNQ5Rl_sXEkgvNfAh_YF7E1A1i0URGQCdFs4f62osRcq4OWRuv6S4h_WQBxY-2pvo8gMLZV4xCVvnPIRS62QVQ6yss64QVDFh9kGRgTTORDQU_KdhPqgwpm-o_
쿠팡_secretkey = gAAAAABmWDKh9Vs8fm82drx42rkhVwXH0upPK8lu0qIZyZm3YnhxT0wDpmKdI211BOxT5NUpMjhkNGLXLIWkn82iju90GfGI84fptwOhHEdpmP2iRukwXNh-MJ0jFO2bRF9rqi1dTWKr
스마트스토어_업로드할스마트스토어계정명 = gAAAAABmTwfFK-7hFhMAri8ID2yzg-VnO8dBsMoU1r6mWRCYqDLfYk98zjnZNIkUvB06Yv2_nktM7AXC6oXRQ-7suXrMWbZHRw==
스마트스토어_업로드할스마트스토어계정id = gAAAAABmVqRwoZOCd8WGiws1hX2lPTg1xm3XqBvERlghrUcKC_mjVwaI5WrbNB0PaQvtVQdpeBby-vX8oGRmBxYBw0QM8JZbwD2vssATZxzBChon8kDnCaM=
스마트스토어_업로드할스마트스토어계정pw = gAAAAABmVqRwQugf96K5W6Xwe_R2_Q1DltAbf-gFr2t_T-skqGJ384oPGnqtnQ2N0KM9zfziO4monNUC7pv8KGfjHPakczFm4g==
스마트스토어_애플리케이션id = gAAAAABmVqRw2YsgPLkkcKgJvucaizWnWa09qMOhzWvSAu-CShleykrWVSZ65E_ILwGEeF4Uwc8b_DlmKxXdiB73qF3Bw_3IOi-HPi2cawnZ8OB3IsaQxRE=
스마트스토어_애플리케이션시크릿 = gAAAAABmVqRwvYo-bN633qFuA3xvZN-jOMH-VVeIzqzKUUMBXCyBvGWKALMsQvchBB7m-4LfL1wEu9LiuKqwYOXZoQ_RXiAE1_PLymzV5PpjSk6JC7lGSMM=
esm_옥션id = gAAAAABmVqRwAZjeCgmQUqTXL7fPTxEbHnNgmNnRk9JZ8xLOia9Te0Rw2JQSW9YzPOCCG51OaBn4X31bENnfW4NVphPQGvxMTg==
esm_지마켓id = gAAAAABmVqRw4T8IPXqwSERv57CRd4DAqet-V5ZR6-5gppZNmmMQnOjHgHQ9hUh50lWY60wEWU9fMahsnVQUY612tm1rY9nS6A==
11번가-국내_apikey = gAAAAABmVqRwaojQ46tcq0Igz_glN8L95sSiuaLoxfgWbfSfh4FD1_7TZMG6WRF0Epm5O4J9Ev3LxiIMTQmJAejTsjUSvh649raFt_XNOL8nm_wf2SP0S7Iwo3eoKkq-lq37m2jCLQCD
11번가-글로벌_apikey = gAAAAABmVqRwLJR7XO6Yomq26NV4DqckkqbqoHlV2YgG-P9w_9TLFBf9AauaWcz8cOgjlzMCE1sZ968uaKU9x_3nmQqHHdCpoOxA18REHLpPRjlw6vmMJ2FCpB1CFud-gxKJfWa2xgWs
롯데온_apikey = gAAAAABmVqRwQjwQq_IeJHFWUNA6eLdNVDncuffkV-laxgV2B0OjZUmlw1AsUixUitIpvEsKZQSLvWjbgGb4v7tLVnvOhOnl_aBFETVuLzUig5QqDGPMtE4Hfbwlz1tWRwMcfmq7lU-XdKayjRjDcVWp0mUTf3CzTQ==
인터파크_상품상태재고수정인증키 = gAAAAABmVqRwDC8Ha2L2pHX6r2qSkKFQn458UUFOUC7KRf6jcod3kxBX-upsR1cHXgnxnh4aYZ_j8GM7T4ecjH2vudtYm16rtUq8xAs696zdI_lIDGOPagrVOq7rPqpCDrr6-HM5BhOi
인터파크_상품상태재고수정비밀키 = gAAAAABmVqRwsdg30ooDAmZNbRLMW14QwjiwzSLxCFm6ax5n8SdL9jsiQZwiuEQ5nTSsFsJoEyPI8uOr35oc6nH8iuYFnzbSzPNWoXWj7ylKSbmnKldjRub_kWLqina_HJ1Ve01Zk7SQ
인터파크_상품재고조회인증키 = gAAAAABmVqRwCD9uQf4FVNoqocRqGhpQMkaxv8jQ_-Y5jw843VDQrDzZM1-a7T0gvpiWTjp9AQXQs9CwNwSdsDTJCd21630ce5C1oXGQdua1hx7GOOTlotzKYtevW8EQwWtNTFEiIg2y
인터파크_상품재고조회비밀키 = gAAAAABmVqRwxcc1RKZchVGPdzMl0Z81T3JB4htwt1CQHUcwElAZ2GewZe_Myx4EXiyx46taEQSRzUCJ_ZbayBN3fXswmp8Xx4Kms05xHrSfydk6_yBygOb5ODH15llYFya8HvHSKEyh
인터파크_상품정보조회인증 = gAAAAABmVqRwwBhTrENQLV3d-y2cYd9SdKFqnbomYrXE25IFQrNu-Jw-IneS6ixbrKIbLAnNh0TgT9L5QssyheYqmzR47coFUp7LjKRLBznGOeIBOczjs3GbpF7dMsRav2p-b0s8hbks
인터파크_상품정보조회비밀키 = gAAAAABmVqRwODUZ0CxP0nRh48SR7Sob9K9fhsBI-ddBkYF7PB1oNfWPHxv8rHh2HLnMe8NdQzs3HdObuo4_C_jjgOZdMKdIPe7Nn9D5ytUj7KTMqMZ6R3dNzeJLAntn2uh5hC0ONwJX
인터파크_상품수정인증키 = gAAAAABmVqRwankKzeJO228vr1QwjZViovHoBImcK9SIoE5jChbel9ZmDKpCkdmfixX9foYTFORqKG2AcowRkfrDVcmPXjZ9u0oFUbh36Q5I3vLlUQzTm0QG_y0gu2adjfM8MA-BreJe
인터파크_상품수정비밀키 = gAAAAABmVqRw0IZBHXU5MM0jkZ5A471z6-DuGIT4HCLHoq0f64_LGtcdb_9NVgGlZaaJbUkzpNiBHo4bR_w7ZBDsrSeFJYTyjQl2udwrCmbK0RU6pqi67-eR-QleBnU5ELGEG_0x2MqC
인터파크_상품등록인증키 = gAAAAABmVqRwfLcSIvDC0izUvjCvs-Rse5XjBX0L_ShAaPK6sH2n3staIlTsnDMTP_909Q5LR0eKfmjCzABWFOxFubndf2kgpSDDb7r3-butcIztldNUIpiQgWB55GbFic592t5E-SbA
인터파크_상품등록비밀키 = gAAAAABmVqRwG_XhjzjsXqzn5j_WDcvgr_AjxL26_r5dFiOAxHLN9nO7y-bijKfuTU8zH9_mnbEzGqJA_vcd_DrqsDQ4mU-c5u8QexV9Hn1YBmwhpDYnNgYcq4eQroTUHX-RMUfDpfmV
인터파크_반품배송지조회인증키 = gAAAAABmVqRwXTLX4Juruzio8SDBal-FKSvdxC1DY_olX_8QVlMmVw6VmgLRavEkuBJtTGB5VRt7F03JYfiJZYGCyLbaMjzQSAtGwanQkeBNgQCUXUVvD17QJuzniddkVOAOdleaRrh8
인터파크_반품배송지조회비밀키 = gAAAAABmVqRw5C2ppV4exMX6AbR4T3NdsmSRfWb4VDe1c-glMTeJ1joraTk2nJwGorczNirU-HmYzc4kX1T6c8ueQT5pp6n99akO7swaVdZNUTTgfoSsSE0gNAgGgcLKJzh4Y8ZCPbS_
인터파크_반품배송지등록인증키 = gAAAAABmVqRw94_CXYPKc61xzmVS6wIfKciiSCVSwg4MfEHABEgV4Bms5_3eWxAB470PGOR46NNUHugC3pTLnDVALQrFzFxESb7kGeq4HTTr8BidEBqCQmDWZhkoT7LxE-RLpYvGywwD
인터파크_반품배송지등록비밀키 = gAAAAABmVqRwt7YS_RALjLVlHt_0ohP033wbJ66YP63qt8G1tpOJn6qqcXGW3j6UwifP8-0jguBaox5tgk9ZbrHbrKL5qKIWX-6oowaFMknB0LnXflzKJ5Er6SMslJJINAhq-dONSwiQ
인터파크_상품qna등록인증키 = gAAAAABmVqRwI0aukkvs3_WL1Wex5PMzJWHqUyMCTrQq6yXujyiABy-eYu0hpPkUX5bnh6aXnPqfwX3D69-eOVDLZFaHhUCprA==
인터파크_상품qna등록비밀키 = gAAAAABmVqRw8YkaTxARI_-y3aAJRr3pgobLAkXDRNIXTQPHD91_LyLDi3cgw8-VVeWhilFCyftPYcGrPMpxs-XAhEqHwpVsPQ==
인터파크_상품qna조회인증키 = gAAAAABmVqRw0lykt_VaoVYf6pD4WE7FfUWevL4u0inEYMJxTkhCodYO7PfLeTr-CncP7Rk1uQBePZblirRClzT9cr6izb6i8g==
인터파크_상품qna조회비밀키 = gAAAAABmVqRwILrUuzJhfIxi7H4YRdWFBr-3R8bGWTdUBHcLsdj42_EawqZSkCY1ywGjxfG7y4zrLu7sMYfaekFt91Bx3nbhMg==
인터파크_인터파크업체번호 = gAAAAABmVqRwwqkm7om98D6gGryzIuhsyPhNxLbrOCZQnvwmm0ocZWNsQFaGhf1Pno_HWRLytD1aQOLWV3PkAJAKypu7-9yKtw==
인터파크_공급계약일련번호 = gAAAAABmVqRwryGdZw4HXHqB1SYPr5HuYYEbWf9Uz_VJHWDg4joB5562qDHe9gS1tQRQ5SDi__IZo0uOF4uIZ9zeyA5MTOan6g==
위메프_apikey = gAAAAABmVqRwefr4pFznmpOuWu828Hs8qP94utVdmTZHdXLblFOcWsSYr-VZ5nThKRfP7P4mc8g5i3XoKPbMHZTQe7Bqu9Rfww==
옥션1.0_apikey = gAAAAABmVqRwW_aelefXwOXf6VZHsuGfyzd7YMZ2E3rsO9UWASUo2FRbRc-bx4CDjcjhlEYtOfuvPnUOoQOQ6_VcFsZd9fiRMA==
옥션1.0_멤버id = gAAAAABmVqRw5mOHERsxX8FGnDef0g5D2zuPAouWyJfSxj7tLAAuOthUlo1MNr5xPLJlZcA7cf0cikh1vyOiMuvfbTE8G4v2sQ==
스마트스토어_업로드할스마트스토어계정id = gAAAAABmWDKhWPnt0hWho2FsWVLUrjuWU7mypyNTiFz2DfAj5z26UptjffvsREIt2C35FJ61V8XnbjM3VhF0LviLk-24LtKFbo105C29CTXHU6iEaRt3HuQ=
스마트스토어_업로드할스마트스토어계정pw = gAAAAABmWDKh76dZzpOcWMQ7JA7PUOJqnGilLD1y-rnJNz2Wgs8SXp6pXeY3PE78sbUfkMFcSmRN-vO8JfG_JqGTpok8fs-z_g==
스마트스토어_애플리케이션id = gAAAAABmWDKhKkZxkUGTSYdEYoiS4lRu1mi-RBO7y7woROjTtm7kFb1aQbDDTEr0YUCr5WtJCaiNkgcsdwYRpIBWJwlv8ASd4oGNxLb8Y9cPqvRRQi8khkU=
스마트스토어_애플리케이션시크릿 = gAAAAABmWDKhVCVQFRG0loSpV9Mi_7G3UlA30lnTOVe7YSOf6qPfmiMiRPSVAbOKZpMOgAtDVJopueEjYn_4crhZrOkkINtNMokJQlG0yWsKTRAOuoaJuvI=
esm_옥션id = gAAAAABmWDKhrzgO4hZyc9YADwdAnKWswnnHGnkTlDFrnJmy4ziYsiHUJkOzby5a_J-KuqYW7oVCzBD81V6avNSHc-ngpxHUQA==
esm_지마켓id = gAAAAABmWDKh92NIafgpxOHJN2TsEtG-8WvSNsfZ-L55iykQ9H1s7qPrKSRfZBj6fZOM1rk3eJd0b40Bqq2Fga0hMG8TIieWGw==
11번가-국내_apikey = gAAAAABmWDKhFJ_sLov59f_90MXteE3ZVzdiLaLNUAEQYx6Avz9O4ixTfqzUdKPeDThXvp9jwoPVS4KXlmKNB1GSFBV5VHg7sjS3sLXyBAVzMjLRCDFyOvyUK5BV4qLWOW8tW1gYh7LJ
11번가-글로벌_apikey = gAAAAABmWDKhUbgP3VWlnz4kOFCzfeYs39oa9dYXXLm2mb2C_EnbES4gGq92IVmT1_2CD3SQcIfIzhxZaE6JZsAuYxaBZxVexoX1u8e-6QjmgGYT9lt6-CKtNUYNKBO90uaX5sR2Xyt6
롯데온_apikey = gAAAAABmWDKh77Loe2nHk6jVdzOrrdnwGEL38gACQ4FK_NOaoP-KG6RKq0QEFvMR9U_21aHiNifPCJBhIo9qE09hAliNARKcJerIndDZVJ-aQz2ks_uDNHPjHLaWh94N6qOC7e3KWxoUitQj8ZKNAsz9Aejm5HD5GA==
인터파크_상품상태재고수정인증키 = gAAAAABmWDKhNL3msv4KEbjfUHnoJNo88IJgmKuzhF5VXpZL0OVAGSHWMBxTAp5zpuaqbj2uSQqh8VhqGbSLxShh0gn5L45UP0Yt9y86dj_b4tbiefx-cojRKGi77R7zxPbsyFHCdSZY
인터파크_상품상태재고수정비밀키 = gAAAAABmWDKhO4Jb9GzUSXv1UNAjZQUDtksK15EVpN3WeQuWEaFDUpT3kWUIpZQOYMhbjCvjeXwpP4bDvouagd779mdwy0KmV-ol9XP9V-3zM5_mnSdD7pFcPJ6V3qXcZbw6BBSAdMjB
인터파크_상품재고조회인증키 = gAAAAABmWDKhTTRy_h11IKk8GQiAB90QxRlRpw0BLnB2YBgrY9DHGi62MJtyHIRjbZcaDOqLKiyjG1H_mmPIPOcvubsjsz3mjLIqNb4THSQRUcYeI8utOpNOMUCpcrXisYsONAAvSV8G
인터파크_상품재고조회비밀키 = gAAAAABmWDKhCgIsIuOzOC-AerbWIGAxPSHZj83V8VFAf-_oqot8GvF7ii0PcQHDyWhNxi_3XIxAkxY0XurxWqIlvtgCLuyL-QfcRV_Ez11EUg1msAlaPhDG7yqOFiK_3HymoUjdUUI3
인터파크_상품정보조회인증 = gAAAAABmWDKhGZJbhSTaRkwoD0ScT9eiwXkfs0PihoFgzJW7BaikPy2TD2sx9VONqKllKqumOHD1Y1qd3mmguN0d9jQqAnsDSKl0uF1f9GlQqAdGqccSMpOu6RYI08mmsxg17q4HaJit
인터파크_상품정보조회비밀키 = gAAAAABmWDKhMzBB8l3c0avleAHuupTtFWOpZXx9q6i-blWrBNzBMuiyrAWc7Ru9bopGXXt61gIEkZI8Rw6eTE2TqzbTO2BWeyrPgrVyfd6A_wCs9U5I49CslqwFJGMQP6FtCMT3Ff6V
인터파크_상품수정인증키 = gAAAAABmWDKhpKC6YSJcG91xoHjZi1XIg8ouJQa5dU_Ob7yKDkziXL5EgXX93Yww7FvMDUMrSHKQtSt5uU543tcZkYB1QJXRdeGD68uRREo6ZSxp9F1IDxin6yy78zQ-veDEGvXW501q
인터파크_상품수정비밀키 = gAAAAABmWDKh8LcJ-WVWVlCuA_eHuf9orTvA-bjT7SV98in0bFwL-lEMGCbUMrIiucEnaThHdouOtGZTtVfLPHWmrHmV8BO4SWRyEcnnIN-7R8oa2dK7n9DfpORWVxIfsWENYCMa5HWm
인터파크_상품등록인증키 = gAAAAABmWDKhUw6v2AUhyuILK9oF7TVPlHwjFoPHgEd4Ne6POueCRgYLsRlvk1JnVNvZ-_-4zRIyaVcRhRZpRNwv6REJGDHyp6hQv0WTP94iLTag4nTOhDHPTHjlid99Go0AYtm1QH_R
인터파크_상품등록비밀키 = gAAAAABmWDKhvpzQMLnoDys_3T5DK7Q5ao9dNKw5a5sV5x_P9r02WT4ohHP7ksNo0SrK_q9uxV1T7BMcfR9BatLc5_4GRIf8g_QcdDHL7MZrMgFh9k4y5CpGtyrHQcbu15wudn2fHocf
인터파크_반품배송지조회인증키 = gAAAAABmWDKhPEPmh26jY29DekTO2VgA8hSeDeswd-i6TEnbARVHz37ruQ4Z9qS2UOEB9PALVBpbVeaUVArtFe4WgfSTJLf3aj4onOUbRrJcadzDcKj67H-yPIXnA1u5qsT0FEUHlt1t
인터파크_반품배송지조회비밀키 = gAAAAABmWDKhhZur1ndyYCXZkpPqmZ7I_TDiyaZ0hOobhpDcwc4pyy9ALigIUmBBoyjjCWuYGVCPY74GJQVbQwrUxLAx5ZvwHKn6cLdd_THkQDWLw8WsIIXO-yGC0RoGNAo9u533in4L
인터파크_반품배송지등록인증키 = gAAAAABmWDKhfgLP0SsRORLrkxYghaFHUzk6dnWrseF25DwSEd4JXukuZkYFiumnueFWuuWhRHHey1kkadNrfMC47tIxv9yzj0hvUmIRsJ3t52rMBK3OzW7iCtu8TpSOaVALF-14t_Z1
인터파크_반품배송지등록비밀키 = gAAAAABmWDKhOPzR2udacz8lJ-B7O7cjj8jv9Gzd8Mk2G_zCGvMCrDt8bBktmKxZ9-pfy0gJan8A4W-rjLFGyT3RtYXTZsWkLJgZEvJKdu9bQOt1zMGapIoMXGXM6aUBZdPFuhZdatiU
인터파크_상품qna등록인증키 = gAAAAABmWDKhQDbMngyljZoYyjFf-XmQsPKyjXjBJkVWzUTMsNMS4WeluWPAktq3LCkbGHcgO3ApugXT61t099H3l3nsynDjJQ==
인터파크_상품qna등록비밀키 = gAAAAABmWDKhaItwSsv47r_w1I2-9fbp26lSy8fmp6LzcjGpiIUi0hQtMYbyR2d3HjJHcoBuL75lasklodlBPk_mrqnXyuG1Ew==
인터파크_상품qna조회인증키 = gAAAAABmWDKhY04bzN1G-8vnHVuSeC0uQKAn5ikIgi6u7EpTZRxgM0nWdlM47RX5FMeLrtuW9qiW_EyLm1p40sJGiMYdsejBiQ==
인터파크_상품qna조회비밀키 = gAAAAABmWDKhrBNMfX1Ercsz8iybpX2Bq5SBl2iHpmhvRkrsbUj-JgQ1yny-9PQNWKhrEwPE324Gtm7TirrIexkHf7xQ0G0rHA==
인터파크_인터파크업체번호 = gAAAAABmWDKhT5E_NuxGaL8kg97VHeEIGa1yPzL-V0G-IJWbt3R6pHLeoEs4Y_6Y9o4OUBZFpzFwWntXZa-xCJqRYmfB0ftjtg==
인터파크_공급계약일련번호 = gAAAAABmWDKhcve9qC4zLm33JpYMwez6Pqph9TFEbrc0FDz0DD_2a3qPMNhwkZDOLRhFFOPRfqZENYfbrmEGuPNa4B7zIdmE4w==
위메프_apikey = gAAAAABmWDKhyBIMFw_I_ij_buKZ8jX6xcGG3DNOM1F3qLJ8Y21BFflVvhIlBao_7DkYOPVyprheBxeP5Z362EEeiRtjchUMMQ==
옥션1.0_apikey = gAAAAABmWDKhwG1_gxIktZHBdCWNsQ1zjA8Cp82tFhvktUa390b6sKxIsjsKnF-Yo7ujmNeJa65mClVFJcDoUob83-lySISHhw==
옥션1.0_멤버id = gAAAAABmWDKhiMpIi9NnTiUCl9Raz-ibI-k1qV6nmswVk9fm2DOJPgAYUYDacWimW4imMI7pCpiUAC4fwwe90PmT6j6S9efCcw==
기타정보title1 = 통신판매업신고번호
기타정보context1 = 2023-부산진구-1466
기타정보title2 =
@ -68,6 +68,13 @@ esm_지마켓id = gAAAAABmVqRw4T8IPXqwSERv57CRd4DAqet-V5ZR6-5gppZNmmMQnOjHgHQ9hU
기타정보title5 =
기타정보context5 =
활성마켓 = 쿠팡:True, 스마트스토어:True, esm:True, 11번가-국내:True, 11번가-글로벌:True, 롯데온:True, 인터파크:True, 위메프:True, 옥션1.0:True
쿠팡_배송프로필번호 = gAAAAABmWDKhSoNgqlnXuso4Q4MIyMWzr95bW2q8-XG4YJrC8JxfX7ql8BMcTugcQuDTzxf3D5Pi8QuVC-mi_MW_rkxQhKK7Rg==
스마트스토어_배송프로필번호 = gAAAAABmWDKhOniW-dyi2AB7O8A7gRG0-qsxbntnNS3mRwGKH53avMU4I4FHrivFmMvFZCQ2wZUpa2oU9M2ZRWGpyMFUX-DdMA==
esm_배송프로필번호 = gAAAAABmWDKhLCGYizXaMaw4W_ftEAU18DZWanBJUWWlx0NA4Wig6LyVTlLT3B4NInsNv7KoAKecz8HufyhMIcmtL7iKKbD8FQ==
11번가-국내_배송프로필번호 = gAAAAABmWDKh1viz8HlWL12CNiIKZ43-SLAMiZZmxwwCaseWl4aRJono_9LX6Mil_b-eVAt7gP5A7h1OoKm7VonwRU__L0uA5Q==
11번가-글로벌_배송프로필번호 = gAAAAABmWDKhosKUi553_s-W72UgZphk1jY0W0NNfs9OaSvguAIa90aOrvttLS1m3ivuncFflljtdvBztBNqsKZhJx7ORcc9ZQ==
롯데온_배송프로필번호 = gAAAAABmWDKhEeANTKQFlwgytpEO-z8U-cA_0x18Lue7EJnbJnc4wEzB5qm1ZiZt-CVaCx-WgI_0Wqfrao0GT96BHBqLj55zHQ==
인터파크_배송프로필번호 = gAAAAABmWDKh9Oe9S85OXg7SIZbsDBuw2xsvO2n-ruUm8pUonNJ7xXOBFCO9UHuwUc1K-1ktMKXEAietmsndTzOuazTiVbXTYg==
[BUSINESS_2]
사업자별칭 = 혜리수샵
@ -85,43 +92,43 @@ etc4_title =
etc4_context =
etc5_title =
etc5_context =
쿠팡_쿠팡id = gAAAAABmVqRwzxVh-p03JkPPNV4mTCsVj35udlsWcBCHmDqeykAe0ncQVqnn_HsVbFzdqBQ2VnWs46DhOElK7LEVkvmRIvUPTQ==
쿠팡_업체코드 = gAAAAABmVqRwsv8AirLVNwV4HhmusVAZ7ZaQL69AG2GjnwO9b9VV3q-wKFvG0xZ-fJdvJjyVh1C6mRwUK_APXE5OVCsZRhtxXg==
쿠팡_accesskey = gAAAAABmVqRwDfemPvI6YYPGIrzawsCudvyNNiNNX09XkGuWrP7P49EumiOjySqLthjwA6OK8hG3Qwuk2FWDPFOhvpM_-lpQiCdxtUPQMOekgfJWVHmg14dQMT9grgkX2201GjIT0oO0
쿠팡_secretkey = gAAAAABmVqRwFXZwB3OQBO4PQsXyfIxsOXciPsZ9aum1PI7LzL9YOALkGQ7TSJdq3tpyHaVVs5ECtNTsJfN-nmF9Lg4NlC2pf-2OjBGQ9g651aoaCcry4SR4xM4aycCKPDCPG2eLc7zf
쿠팡_쿠팡id = gAAAAABmWDKhs5g9WNQf6O_3UpHBuvZyaTeg5XhA_kbzbbaYhezLnKft_6dkmESfYtJkwUoZK0GyBXTFL_zfMt5JsRiOTA_K2Q==
쿠팡_업체코드 = gAAAAABmWDKh5QtV7ADe08FRefGX7FNUNfDT5xpicTfzFje54G-9gntDYU8Mu2PaEkNCTs3Hkv70ZrqIz9wrszYgu2p2pFmdLQ==
쿠팡_accesskey = gAAAAABmWDKhPhmzJPQsgaoXxHGN0XSGWtBwG_wLv7jgbaRupVuty_c86fSgU7djFRf3qNIXrzyNLxlogoV3OtkSt8ZG4s9eNMtjz1GUmWINZqJqsEHbO8c4z67Eq0ZIvZfE1lyLSvH7
쿠팡_secretkey = gAAAAABmWDKhR7gJzGQEzj0rSQhrQdAiBAob8SI36xRAh2QVrODm1uwzw3fet8JUVQnZD3AlKnBR9h1TSaV_7CHtw_e4tZeQKYPjOvmU3FIgHJuZpa6S_jr4iXIppUTVNUZnxPRq3nAl
스마트스토어_업로드할스마트스토어계정명 = gAAAAABmTwfx8jDez-OfoLVaxWLHufn5DO_V5Re7jEvPcDDq6_fjq7h2cnKHvaklFCDnT8ltnPkLU_MPaSKi0NQAf1y2tKwrdw==
스마트스토어_업로드할스마트스토어계정id = gAAAAABmVqRwhfLVCt_O8EDdEjgTXs0v5PsRsBXCDEX5qzIF51N5ZK7cEcyTiWTmBy3p9u-LQPGJb5vGK_YA5YOm4iG934HrxrJO1ol1MhMcaTmSvGErfl4=
스마트스토어_업로드할스마트스토어계정pw = gAAAAABmVqRwzPGpBj5cFuxRCBz5YRxjDVmAYjfyCUYhogLIKg4_dZFzM8GZm4pWCFiWFmsrP-QsPuLzYiJ2iDmKD3bwwPZNgA==
스마트스토어_애플리케이션id = gAAAAABmVqRwzrhZct5KlN58Yfb2i6tsEX6ILvluTgAlgoYJL5wScvNrh3hFfWhkOV8TqAPPsfAB6CYCSMhxzmpmzqamozZQht0cY1ov6dKx9TrTtOr2L40=
스마트스토어_애플리케이션시크릿 = gAAAAABmVqRwOb8Xw8CJp6DxDMWn_8j5jBNZqXToSONWHskRAswRZDtx1fIBysaiIrI4Ibv2No5Yj9iF7jPhOtlD1VQZrt1XEX_TcuIJe-m9LCfD7LY_aQs=
esm_옥션id = gAAAAABmVqRwT7WVQPhSPERPacIjNTp0ufoExq-sE8AXlRCOszN2ErkclzscTwn5pNQR57wsjpH528pRyTiJxoP2BeK2Js-hGg==
esm_지마켓id = gAAAAABmVqRwLxPQ1rqAUzx7ydYGeUXKlWh2jk1Dmp6hzREpxecNcMf5aJfo1uS_LXXHPa1S9K85iu39iiHJUxjvVaTiGsr2uw==
11번가-국내_apikey = gAAAAABmVqRw_O0C98nf5xLdIl3GrTYP9WYwHxoMqEBD_WSROhvTV0TQ2FTNc9pmI5R7A-V2F7xJsvVldT3OfsYuEMbMXKi2bJn387GKnSK5mHc2NB2Pwy71C0Yl1f1nDRt_MKrhgZIP
11번가-글로벌_apikey = gAAAAABmVqRwiXpSh6nVullSJG-oxkVPrOGyYu1E-Z4TN7g0gs0MZEXtYIewCybtFij6ZgGA64tepK2dSNv9Chiv962W1vLSGsrSy-YG-ouo_X4_a3SmTkuIxuiGBeCH2_1aDreDdT2o
롯데온_apikey = gAAAAABmVqRwFwexoBECRmIWH4IWx1drouaHWXfhyxeT3clss1X7YSmxBpOaJA1b7qARwNFXuuMZIZ4B2J4ATdvbvfrYOf9o0TmK92mAeMiN3IbF_ifj8H2cp5J4687ScgyZ_JRBK1sisCH09KcWHgZVLwAQgnkpDg==
인터파크_상품상태재고수정인증키 = gAAAAABmVqRwMDSNhUSh7Rc8j9ZhVRxp89ajY5ZdJ_8Pp9oPlOIfiCBx33ZgfsbHPrieMzUXrpxD_88SNwnzlRV6ni_zs8Fcx-eSC7qqSlWFkk4Drv_-CkWJDJfN4mBG_sqMaU68F3fa
인터파크_상품상태재고수정비밀키 = gAAAAABmVqRwy4y8X32aKV_J3jURpGrr3eoQZSJP0OmBwapl7Iz_cvUklYC_0xxXk6x7RgjxG9c7ZgHGjMdL_TtOCp-25qi1c_97V6ce7yAfmo-GeG_OTRwk-ju68PMw9PS_VFZXMj9h
인터파크_상품재고조회인증키 = gAAAAABmVqRwWSZIeo_EqjPn1s5AiYld5ZiVQ0OiqP8rO-bJk4nRoWoVxtIVH9Nrqgc5eY2LAYsL7aytmA5YLF1M9T7VxarPSC4g1MrMwtqrws6Wcp3Iqy_J2fztYY3DBSZ-Mvooghl2
인터파크_상품재고조회비밀키 = gAAAAABmVqRwrV-bhlVvfqO3Qh_A7lgjQboXb3A9gvopM4kNfuIOA2Y_RVGqOpgi9rkdYmUR738CrpOhTmYHqb0_y6C2SFsCGhRsEF0EK0n9IauJ5xbTHdEiz6xLb8rX0X54eMqhKA4m
인터파크_상품정보조회인증 = gAAAAABmVqRw2NRN_m8Lv3_J4ZJtZ9lUFCY6Bt6RV_nRXfhZkiZJyXLxkwq2JIX1L4aVuaG-bF0oYHTnx83FdeznTfHXBc3qrMCoGd5hFg-CduZpiZXe2Ka_gZF4FRni77J49t3546lk
인터파크_상품정보조회비밀키 = gAAAAABmVqRw0phDHhRoYuFKUypzGLMFsdmEZKw5KqeiJlrDtuvYm19bWxnLK8cSOs3YVzrbYND73A83oBaVJFMDEWxLj_drdwiYleh-YvKOpVDtflnPl4S9kAbqW4jGW7n5qGNGicvb
인터파크_상품수정인증키 = gAAAAABmVqRwFVJTHFLKocCx_SOplvU9UIlalNoyLhh7A5IJ5ZLvwlbqiRsBWt4TeOS2Xw8Z6C2oI2gaMZQNzDe4ybPVDNCS-Q9KF0yDzOUbqFcj2kM9kyCDrG8CnCP5hCQwRw9ufRaR
인터파크_상품수정비밀키 = gAAAAABmVqRwINw7e99ZJPWL-8GG_2yLMKSCSDYJPCYPkfqsAFXxCUleVWVWlEBi21W0C3mOTwAJxN9Ypm61cjQuswMByjEt6oyCUhC5VDXdNnyMXW5hUm9tJ6R8F21H94tAsNLMmGG_
인터파크_상품등록인증키 = gAAAAABmVqRw5JbxgqPZt_21KbWDJEEmMsNCbDocWeG5BuWYq3_ZRxsEvBinFSUCVj2jFXhI9r6jrlanrf2KbKgPd4pGxP5H0R9WK8INpUWW8nGUvlJEf0WNePqa2Oe0D-i5KfaU8omG
인터파크_상품등록비밀키 = gAAAAABmVqRwbJnk1EoTuEG0BtpJsOu9hD29vYDMmr01mfl_xQSgLMIUHSL3IZ8WIhsKAvOM8FOLKRPL8oDLTQDvdqpqcQVcJQgMxZ9BLLFMW88TPXVKFt7KQsswdV5lUWg0sR5FaJVO
인터파크_반품배송지조회인증키 = gAAAAABmVqRwSWvw60Jzkwe5mJhNb2q5nqQqXF5uFsEbuvu8OIpdEdtLS9k3kov4bBM9KTm_7wY4sCMtHfZX2o-jK6LO6RPbDGxODqC4MK-UOj6zmclyzW7WK9f-Jchs-HphsVXb7kaX
인터파크_반품배송지조회비밀키 = gAAAAABmVqRwvX3r8-2esY8gtFF2nXMOIQ2UpDsjGWbJF5wyilRW856RVHbRn2lwkhmKxS-qkbkWiA6WOm-lyKov32P2v9VzMs9zleXj1qGuPIx_OdMgo3BRFIMGMoWuA-dRQ4RnAl08
인터파크_반품배송지등록인증키 = gAAAAABmVqRwfggXBLqB-ODEHM0XgqmBOsUaTFukUFnENpuLbk9TFq93dbKbJq1rSDJinRY_FZxVHR9BXB279jTVVm8ppDVIDCWgkO3GrQUFKMYxxqq3yVGIzRuCcrisq0CTIFuSgcxF
인터파크_반품배송지등록비밀키 = gAAAAABmVqRwDY-Fxwo-cTWra1_BWSD6E1zBLbyb2I8PdVWHQeSd8_euna4Bx7szd3pJU_kHXcjZ1o_EBZ4GhMgE4MWiFqrAlfQTFZVQUTMyogHtKH_nh7FXNH7U2POqfulHbPeoiqw4
인터파크_상품qna등록인증키 = gAAAAABmVqRw6V9NHz6KXWDB9lzPLfkuzH6Q8-i2F61_mz9lVwPDKZEnU73OPjQ4nNnlQm6bg7MUYcLv1KBV4c0ggAkU26n1YA==
인터파크_상품qna등록비밀키 = gAAAAABmVqRwdNw3WOmntUsoV8JG3aaduf3S3eEG4SOO5MxisTlLn8G3KUuy4ZAu-cVPmnNk7vzbir4RVgh35B242JRrkC1ZZA==
인터파크_상품qna조회인증키 = gAAAAABmVqRwYJzkHCRiFyTs-HEULAs3ggk5RwQKD2iljQ3b1iXG2Oa9xHt73ZZf0nLGMMCDxX7Y_H5p9GD2Xmpcjc8dekteEQ==
인터파크_상품qna조회비밀키 = gAAAAABmVqRwjbeS3iF_0tbeXitwlJhrsNh08Ui4QZF9M4We2p5gnFH0ktpBRDWdZkXhzEzM_vtfQFVXWinpit3FoiBLNNWyww==
인터파크_인터파크업체번호 = gAAAAABmVqRwpH_1ZW1L3Ut4pVgVUR1wLkq-ur11F4JpKvTTiQGwskGquDby6xzWo3JpCmsJu5S6d-hnSXMGpxRCumC-6_qd9w==
인터파크_공급계약일련번호 = gAAAAABmVqRwJLltkmoXXr55XDcoHn4IZnTNlq-scvvvBHNM4sobokQk2fuS1d5HVCcb5u_jXDryqAqVZlijiwghPYfAD323pA==
위메프_apikey = gAAAAABmVqRwhycFqNTyuP-cZ16_1yFWd1A0OrGWqeL8q5RP7thjAWCrEFJFART--ugEi7zY8WUW2hmTSviJNmtCzC1BExQ-8A==
옥션1.0_apikey = gAAAAABmVqRwkhWYCoIff6FihAnOWOv_mJCztBz61XggYCmu67iHT46dao6X2dulZbQFif7nG3k-xtnyiMd80yZY2u_-yp42CQ==
옥션1.0_멤버id = gAAAAABmVqRw3Z2czCBs0puNYHjxI_DFQZBg5AeUt1GOFKuGzZKtH9YItvs-LoeX3G9yF5GlhjyzUYpgyhHtgfNRPoxlTcVCAg==
스마트스토어_업로드할스마트스토어계정id = gAAAAABmWDKh-CbrNyGsJ0ij2oKJTUrxkyqTKqmx3WjHn2RG4uidwpUEIs69sJGNB-dRppMNq9CstN9wE3fWoPvIhyMT8IF6oYRPd0m5xc0a37jQcRZTQW8=
스마트스토어_업로드할스마트스토어계정pw = gAAAAABmWDKhTs9RrnXpSpy5ogPYUk5fcsnkhiEVHiCtpoSvbNerTuoD30Og4nzc0jmtlolfS5KJv2_mRlYcpxqO3GPCe8tfig==
스마트스토어_애플리케이션id = gAAAAABmWDKh3y19ZnWMlU3yvLouBlIQATmBSZ60ADO9kA7ShXBo_AvTSxWQT_9dvNMfZUE06EElKmHB-UB8TZ5hKiFcz5dicvpkFY4iWNJ4j6lfeTrxqp4=
스마트스토어_애플리케이션시크릿 = gAAAAABmWDKhdokg3zHOxyiw7x2GRP5qpx7NmCNY2LQiFikKoRJDr8dBmqz5jE9I45PkH0gHRRBpVkOqkobmeX0xA2KbFuqhnLMMjkFo_ji5Kj_DgQkGL7E=
esm_옥션id = gAAAAABmWDKhOhVittTKiTEebpTEVKLA3tCs_lcKDlxyCsQy9uejeRFLOlMJVGJUQ_ghrToxzUno6IlyUDOqd7UeFMWPb-XZzg==
esm_지마켓id = gAAAAABmWDKhKbjjZt358R_ix2L0ant4XU1fiBOXRwxOHXxAzkG2RrjwQ-wA0MSw8y6rS15sg-RdYBwXrS0HcniuEJF_1KndEA==
11번가-국내_apikey = gAAAAABmWDKhZvkp6LPB0_5LHXzIkSYxGK5Uiqu-nG3HHCiNEhVdj8g0orOLK5WFmV83_qsN9oFwC4Xulhhg43F4gp3PHbWaUj9l6fPjnlOHovQFNm2d_tS-xka9jUZUoOmlwduI6xp0
11번가-글로벌_apikey = gAAAAABmWDKhbOtsG2c_TgeF8Ae3RnCrSEV-ZfQayF9_BHO_dGdf6RHDxV0YPHRh2RE_iKr-d2x9X9bce1zP6ATtJ4H23nzwTJZ4YZOLA1fAZuNdf2dogG6b3vmUWNyVSc9IR5pYupgg
롯데온_apikey = gAAAAABmWDKh35Y-kpMdCdgwMq9ryCM7Sc-xO5v0IGtyZxo2EWmL3Jmy7imfBoS4IwgKoI2Z84W8Lq9dq9X9ixGn1Iv86e2nBCJGeN62qmFtuqRvAj2_B0I-W8DGbTaxjDy8teciMorg-gQkVafC6JNy7OxdIQ48Xg==
인터파크_상품상태재고수정인증키 = gAAAAABmWDKhEGVKZEvi-ckyu_eBfNCT_Qx4X8rJsaRFVx39Y4ajhl4CRnEo5boCjh2OkC1wih8iyGcik7tMJAeLI2oNTWutNalAz0yDczTT3_OfULxwLxNa9WsjGjSHpy9g3X8-OL_m
인터파크_상품상태재고수정비밀키 = gAAAAABmWDKhBpQh3kvTVCerTNK0bCyD_zTM8ZPfjcLo6b9rGy2F4SHnCa4lVgjHUTD6bFuBjaBfKnteDLiJNHptm6Oi0ZEGQ74rAQKBqhtjdOcAG6xyv7BAyt7E4krWQeY7xOItiGuL
인터파크_상품재고조회인증키 = gAAAAABmWDKhSHlR0EbzjtGdlD_2d9bTtJ39vFgrM94w4ymBxuKutHbLcOjT8ib7qtmJtWemu4JPQntgSdsFZSWieZgwyTuJWUCznP5gnh5T42g13YXs12WG3SrXOUa-2mbehlR-n3a4
인터파크_상품재고조회비밀키 = gAAAAABmWDKhq_-zkv69flvAbL36hg68TfXNfAWOT58XXhAu51PbPj1ymRUA1ahV9Y7xyetXLjHmurDHvVT-H_gGBlNHbnicLRG6MsGFiY9QCkCrheJ_MC-DDmO684a_inTrYKxUGEUK
인터파크_상품정보조회인증 = gAAAAABmWDKhrZZ7OIzerUnXLRVOsegnuH7jouLKfyS9S9fb49-mOoSB5VG9wNYpGAni0EIhPZIKoMedMgwRK6clhnBUfkx0T8LMObwd5pV8s0Qxq5G2bbsMFkGa0vA3vCIr9_ZDIidX
인터파크_상품정보조회비밀키 = gAAAAABmWDKhfsm93c6ddF8Xg80F_aQhuZDewlsBX3dHwTyZDUfZ_KYWIcOj7xDUPMHt1b99lK2za6BZg-GoB2JuJ-afeurKnObcFzsAmaO2IyWGNAgZP--FLdtYSF_MChzwf80RsLdz
인터파크_상품수정인증키 = gAAAAABmWDKh63cVpUxxLUhcQyAXuD_wIyC_h01zixCDYbmunk28CVtWj8lnxgPIih532EaL63VZog9je6mrE9EkYUyogVSnSMYh9WP09m0NqUTVw7W1Hy2hNAU_mENS_DKSS2RQth7_
인터파크_상품수정비밀키 = gAAAAABmWDKhi95z1pkkF687pMjY3JND8gihAfgVtX1AruzsR9wO0NLLbT21_BxJejms3owSQmJmTcKfsMmourGoaylfDUO_e_8_4m3QWgJdeJ662wnW5YqG-nKfCKv9L9lfZEWizEt5
인터파크_상품등록인증키 = gAAAAABmWDKh3sHUKomnb_oj9KCY7L6S2AAukMnQOF5awd9PArVJ--AYfYBya9vQYzETzZbEWDoVigIvtZpAWGP_ilPiim13Sl6NFwRSe2zMkp6zIGZe3g61N2gXYxl_9xArm9DYxw3a
인터파크_상품등록비밀키 = gAAAAABmWDKhglyItHDc0N0pzauBjbItRNJHzCbozagqkmzMX5T1ejs11pHhiI4laT4AxBFf-C3UWNoc6k7xboNS-MPHhP3myeM2q-9S6ZfmXIejdDB-iJV4jNQWPhYWMmETBuN2eZOK
인터파크_반품배송지조회인증키 = gAAAAABmWDKhCZxfRLWiw2i20-lcef7o_nwUZ5gShu8BKucGd2dKAOtuT_vnm8WTPrx7HSLDM8shFkKPz0kzSNQp6mPPpHKoYCHEx9-xJw6PVzlXNenk9mQbC9zKWqj7pImzdU1EIRMY
인터파크_반품배송지조회비밀키 = gAAAAABmWDKhxvSLs_j8dHBHGLgJdjwB7TcxjfET2_xCDxgJkg3tLLwCZIiX_pvnklnXaH75wPgievhhsmF2JVpASvZuWI4oMWCmAsZ1kSHGOZ8ADtzThEBnlEOFQ3U8QjE79WNTirmL
인터파크_반품배송지등록인증키 = gAAAAABmWDKhaVH6SUCvf5owMGupAwj2Jy1sIdpZExcamaV__jJ-t_vC2BVc96K-pzBhPvXDQxPl2xqrH3ka3pjcO3daMUswPBuAyasH2PaDT9TEpTqJbIZUzI-RaQvKbsNpshUlBswL
인터파크_반품배송지등록비밀키 = gAAAAABmWDKhkFTG3EJNcJAx4ND9q1pZsg0C8bjpC7eSaBoYH7VH15ly10UOZQR2lz5I6SUDm9CE-1RXgjzTbv3WJiVITg3JSzglvfWR4qVHP0KHBFLtW2euB2OgJZUXnk6rD-X4Oy6g
인터파크_상품qna등록인증키 = gAAAAABmWDKhTNWvqWvclIslhKkUpHFTxK2X-nyYRYvTNOesaHeRhYo0meBO9RaOgWMUyfuspgY9_Mq0aFyC0ust_eAoVTwYeg==
인터파크_상품qna등록비밀키 = gAAAAABmWDKhOKYrdBZBReOREVKvbYVLJ6JE0aCV7ZUgSdZAEQPg-CWiIog-fAMJlYUB4WKFT0Wkp4bg8-eRholrs8aNhJNumw==
인터파크_상품qna조회인증키 = gAAAAABmWDKhKC2i9EX_9gh_d6YIpBjpg-xG5Un0r7tlya7EH18Zxf5i1OYtqeexMsgFIembWPSERQQm5zKWqIfeDnbbQkZSng==
인터파크_상품qna조회비밀키 = gAAAAABmWDKhfYhtCBg7nVZrEQmXwoZ44KjgS-c-QqY-vQJ8SykCjE2aU27Ji778N_kjxJU9nyz5__jgpHfxpmsLXfm4UxbIpw==
인터파크_인터파크업체번호 = gAAAAABmWDKhaJbLFgdWBSe5C7yzaFBJIJiWVygt64g6K1SHmhzWqbpOObMHsQH3SxQRNt0HPGOYW9G1PhoUN0lHY3NfpKWRNg==
인터파크_공급계약일련번호 = gAAAAABmWDKh7xCc2m5YDobiDmHTfIY3hILF2Qrp0hq8-MAGiqO9IzDVXGQZGgRwkE8uFEG7TXRhgA5id5Nor0rQNydE7Z1T5w==
위메프_apikey = gAAAAABmWDKhNc_74LTPDmWX9qq00iPLIBDhdpGmzLLSHg6rviBx18MsVgAoFefHWKZB15J_FrpePM6uF0PVBx4HLwwaWP-PeA==
옥션1.0_apikey = gAAAAABmWDKh6q4OXYY6s8FGOJxtCj2HM5HbNbEZmb_H7as29A5vBWubkHz-U8IG3KTCA7kh8RyxeKTvjmnx_ZH0dphRweaQhw==
옥션1.0_멤버id = gAAAAABmWDKhRcjgxOneix9k2f9M7bFYAD866ySkueBVvnjEUjQqAkSq9nn4XY_JNpjH_W1DM9G0RyIEFlQnqe0h3ddPcpwwsA==
스마트스토어_업로드할스마트스토어계정 = gAAAAABmTwfx3lFUVh_pUB5ShZF2INwkb-egje_i5iE66NQzJ64wS0MpUUUztIhctNyY_xMBH2C_LVEdVZG6G_nKkA9wPu9WGw==
기타정보title1 = 통신판매업신고번호
기타정보context1 = 제 2024-경기양평-0038 호
@ -134,6 +141,13 @@ esm_지마켓id = gAAAAABmVqRwLxPQ1rqAUzx7ydYGeUXKlWh2jk1Dmp6hzREpxecNcMf5aJfo1u
기타정보title5 =
기타정보context5 =
활성마켓 = 쿠팡:True, 스마트스토어:True, esm:True, 11번가-국내:True, 11번가-글로벌:True, 롯데온:True, 인터파크:True, 위메프:True, 옥션1.0:True
쿠팡_배송프로필번호 = gAAAAABmWDKh-Qmt5hoS9h9Ng9en5Rxo4erjB-DR8tJcuLFpQcXZlLPdq9Uk6WuDH42G_FWkrBcyaAD8xtJCr1lw3GuxUZ2AVg==
스마트스토어_배송프로필번호 = gAAAAABmWDKhl8sizimuWe1sxWajI4KoyTCUsGMuOOONKbmX2qv4MWxEpQMoHw1Ujuwfjqp7uq43gYAj3k_dO2FtE7jP8Q1m7g==
esm_배송프로필번호 = gAAAAABmWDKhb37_a522-Lblgxm0nVep-Lm5bSEmiEuK9RTyp-2i5FWbcNK6ycMNy2BNp_9bwJ2p_hZ9OZNqlPcZHUOYc61eWw==
11번가-국내_배송프로필번호 = gAAAAABmWDKhYlWbQg5XtN3EFDTrv14PEqP4ogBVU_ck5VMaXLJLOIUQ4N-PSp_GvAyIRrakvESFxnw8_O4Hzis7vxrIWsyp1w==
11번가-글로벌_배송프로필번호 = gAAAAABmWDKhzdnr33PCNvpBEwgAs5YMXttHSoq8gnUd3TV92U94FLghm7N3NUPELAqalCPkmTQflIoz0Q2ZEUjuWKndfCRvwQ==
롯데온_배송프로필번호 = gAAAAABmWDKh0WDzO2MDnjynRhwTLsP51meyBb_o0HyhwS6M2EWufQO7e5ec_2kQwHllVXOcxo7zXC2XNSy4AWVF7qHXzEkHAA==
인터파크_배송프로필번호 = gAAAAABmWDKhJuVB6fAgeY1yVps7x9A-9ns1GlCQoDk469yg1gGtV_-E5pch35uBONy0_GFT-jTJjIqoqETIUGp8pxD3yHpHEg==
[BUSINESS_3]
사업자별칭 =
@ -151,43 +165,43 @@ etc4_title =
etc4_context =
etc5_title =
etc5_context =
쿠팡_쿠팡id = gAAAAABmVqRwfZhDDBcJ-EFOobztvYlx1jV9b9TGCDBgvWnbEkYyIf_TuUAW7ATxfs7Qtb32-dKG0WBo3MuW7jh6wDJy7hStNQ==
쿠팡_업체코드 = gAAAAABmVqRwSb-34CSs8iH9_Sx8cjodifwoN3T_B1EMsU1OiIyzKZedg-o2LK2WPAvixLKBb0f5XTwdpQjPAk8gTkXrA8pyXw==
쿠팡_accesskey = gAAAAABmVqRwdF41heRoiiXhKExRlDluKq6OIZPApJiWAfJtAN9f1vjty9IWJjUr44sH0nK5kzvTX7I_DXwjziueDtl08d5yJw==
쿠팡_secretkey = gAAAAABmVqRw_tLl3_4edBGgFj_ElDsKTzBw5q7Z4PIfJV8kWtTJkMHlelR_vzhSdssF3DCIUewtoIYOhSLcis1xvlmTFhGk-w==
쿠팡_쿠팡id = gAAAAABmWDKhOjIlQX3GjApMkQGoKq2kLWL5c8C8fITa_cPPXvwm7v5IJM21I3PmNPv662JHF7aYJCIEExrgSM1Li7YTQgRUPw==
쿠팡_업체코드 = gAAAAABmWDKhtJobkVxwT-tmpZrVAN8lry69DbRW083kQGP_3EVLij5SDgIlJGFe4rec6vyRsLTZ6AUSecavwj0B3JCJAcDZOQ==
쿠팡_accesskey = gAAAAABmWDKhQRZKxeKr-jxisffa1uwUvWVaYVz-8ahy8ABtHpYFCnffBmL_4V7L00aUT2HRBium-gYvhVVC4IkJoIdQ8RFqVg==
쿠팡_secretkey = gAAAAABmWDKhrpL6e28ZliXvcwYdr1xdjrkszXJ0me1Ousy0gZXWJfrZ9Wx66dAQd7kPzABLUUzrfwGFhMoV-nCahXsh-QErkA==
스마트스토어_업로드할스마트스토어계정명 =
스마트스토어_업로드할스마트스토어계정id = gAAAAABmVqRwkWdZS0GlpfxmH1Trs04RahCbH3kaGFxJwnqNovnfw4DhfPk2dvxmovnpY1_F3VhNYFx3SpFPj6nna3PY3IBVvQ==
스마트스토어_업로드할스마트스토어계정pw = gAAAAABmVqRwmEjB_jLc4RXq5747bciqqm_FyiwE2mu5Y_Be0Ixcz5_OxNi92R9o9Ke66vaVud__2XhxOJasXACcF23taT7P0w==
스마트스토어_애플리케이션id = gAAAAABmVqRwhpBSTcQDyW0CRFGRyZJ94qHSZ22lODGJeZuxXrQxTH4-RMfuPZaPdk8cNMe-L0Y1KjTHyCIevR_eNKnfeKt12Q==
스마트스토어_애플리케이션시크릿 = gAAAAABmVqRw2QoLPNOkMlmXMFeDi-BSDXLTxZewJ6iENbpNMG98q64IDYbxmM0WvJtw4K7wwvm4DBUD768IiGGoZ9AEJ2O3cA==
esm_옥션id = gAAAAABmVqRwbIjKSIeI-R8VhXY9HeT-1cU9-t_8oESaA6GTfwdCIkhrpUvu-0RacK7EaQwZOBh4AE60eEbNJXwRct0LfQcRUw==
esm_지마켓id = gAAAAABmVqRwsZ1w-Q4ymycdOuSKARfdPgag0lrUK25fX4zWOjZvbehYFaEJEnlxN1Yv7U1wNvfL2GEdxlendMJqeAqw0pJ-_w==
11번가-국내_apikey = gAAAAABmVqRw2DIxX2Ml_HTObFlght9tYem4jJwLrlfR_ADJB9x_0DngIm6ZwQaj1Wb1cweu1VqU0K3A0evmQ3RIj3f_zqos1A==
11번가-글로벌_apikey = gAAAAABmVqRwIbBzTZtt5cfsbz72iAIldTohhJhuFOqJVhisjG9SvaxCWdvHOyzoqBnxECQ0dzr8HZ9e1_exIenTdHdEy2dSEw==
롯데온_apikey = gAAAAABmVqRwD5yly14F1aTVbAbA5HVIFpSQ_RO3MuvxFkWn47-i6Qcfq87q-CWtsCe82qOtZO8wXg7kYOGLRo-ZzVy3iwY5Lg==
인터파크_상품상태재고수정인증키 = gAAAAABmVqRw2RWYe8C4lY0ToWKMfefyvvAT5PU0j5lqQjz4-qswu81fUoM2t6tD-pLpD6EIrA2mlbCdhPk1076tCM_4FLMseg==
인터파크_상품상태재고수정비밀키 = gAAAAABmVqRwMfSon_Qq3Sy4rJ-J8nyDP-FNT3dmIAmJXmhCw7DTgi9EDmgW1SlL3P1Uf1Qt4EoMuchznUME1I8pSpj5w9F0lQ==
인터파크_상품재고조회인증키 = gAAAAABmVqRwkTX65l9PEFpzG7lSd-W56dKPR0aQ7N7w4dxrasIXyc4ih4SdMsTSVVpkG_2FlWQZuVxXx7iUhYEzzyFIe6-RuQ==
인터파크_상품재고조회비밀키 = gAAAAABmVqRwxxkO0LARWQzrQRBMy3rbvBaDQ_8IB4LICTCBai0I0TKDyxGc5ayQoHthh0Xittt4QEUC13ozx0EJjVvusXxqzg==
인터파크_상품정보조회인증 = gAAAAABmVqRwo1_8rCDvrArBGoaGwVA2TW3kznCTJShnROXcqTE0tjHa-br7CwrOQRezfBrOWkEoMeloqo5PQj1U01Xf-KLPbw==
인터파크_상품정보조회비밀키 = gAAAAABmVqRwxVgRhHkFABkiT-RqmwKCzMg8uwDfXA9KUt7rZ3XydhESrR4lMok5nmSPyHhzRlb5YD1lCQygmTUolIVQgfNs5g==
인터파크_상품수정인증키 = gAAAAABmVqRwfJJnuTjXImvvztM-PyK7QjtMS21062-BNCu2lHV6s4Aot9jlbnMAwZkj8KP8qdj2-KilH3gu7ebJwpG6aoq5cg==
인터파크_상품수정비밀키 = gAAAAABmVqRwSKCcKvoimjpSdHnthOJ30uGYNtnqq80WhkJmezXyXV__3tkoIyHeZM1CXC4G96tFKLU--LbNmAyEavNGy3kj3A==
인터파크_상품등록인증키 = gAAAAABmVqRwzK-LsS6DlbeC8Pwnma3qMJvSfBRhKe8Ml-IxPqw0pqKPGue8VhdK1cc2t6nEJcBSGThdShhyFuCydmLLo-CVFQ==
인터파크_상품등록비밀키 = gAAAAABmVqRwuHIECYmKcZshqJHcbyD7bDI2YGDuO5TaxfxO_Lg9-6mZOgfpzrOHJXjfH1d53bbtVLWLUtTSrYgaZ2L6Trc5gA==
인터파크_반품배송지조회인증키 = gAAAAABmVqRwimDOioHsbQH9MDSK6y_I0ed9CCEwLPqXTOsUm5k5jmMEmmTPObIgylJFCJslRgRSfXd2hkkxnlwYogsQl1hLMA==
인터파크_반품배송지조회비밀키 = gAAAAABmVqRwU21sdzVEXTSkPZ6OUjcKHg05Oct7-g9dcu3qWbGjyggXH_D_uC8UAOTQl_JDfU_lZb7TcWD8gwEuKJopQAYxew==
인터파크_반품배송지등록인증키 = gAAAAABmVqRwHn85C_xrhd4XKRcyE1ZSP_Mi1WGmTDVGIhtYGTBgI98Y12TwunmxlxhubO3l8p2Qe4uO3JbbNQotqUor59PkQg==
인터파크_반품배송지등록비밀키 = gAAAAABmVqRwGnr992UYRV8zOGvLFw5fmzbXuOSuNZlYWCbALGx7U37hEW7_jaQOWh5IeVSAkbJ-NQuI6WadWsqdMFs9IRgzZw==
인터파크_상품qna등록인증키 = gAAAAABmVqRwE4MsECmN1Nh46xi1Wh-VQFpvkVV9rQmLJm8AvdKLLwmtV2O5zv5w6tNRKEHnMFjUqwFz9dKT7kvkzfRzUc2Geg==
인터파크_상품qna등록비밀키 = gAAAAABmVqRw77wP4ddQQoG984J46d0MwWPfVAfhFjy5ZuTj1ud5y_54w_T6ocnI1bxTFhMmWTPjfAJhHw0vednK95SQf1Bb9g==
인터파크_상품qna조회인증키 = gAAAAABmVqRwbFyv-pY6ss3cJ4TIikw-lRt37QcYU8-pnhb-LCkagYThfDERv-KKJyRNbCzZ59TH3POPCU7vAXdhbMRFEuVmuQ==
인터파크_상품qna조회비밀키 = gAAAAABmVqRwh4EYSQRS3eSKCPhsD0-xcMeYeui0u1b-E1ODSjMVtcxW5HeTehjsLPkvbCOYUVRzcIq980hQkHmSsDgF5xMmUA==
인터파크_인터파크업체번호 = gAAAAABmVqRwv889Q7oQJZBBXnM3liRkbdINCjujFPQ_Q6UPGW2IO_RMoIRG94YtgCe0SAEWbKgfTTZk0kkctHRrb3IZ6t_mrA==
인터파크_공급계약일련번호 = gAAAAABmVqRwpzOCVh1nGpXF1Oy_PeN5nE3heivsgShJNwF76GFWgkBG-V_-uSJgUbPNXwjLgXusSwqLZosAbWyWyzZ_TCzzHw==
위메프_apikey = gAAAAABmVqRw22FwgWCfzKG_giWKdnMWa5Ilytv381jokpRNiVJFNDV6OHOUkaaoob0O34UYxMFMD2jAJD8AyQbKIuIj-00qiA==
옥션1.0_apikey = gAAAAABmVqRwy5stYrMIut4wrVj9RBFw0TTGdZqbROjoCgsf8eYfyb7BJal7E5AdGHf1VpSgy-_ba_hZK6ccDRLJLbsSpFFoBA==
옥션1.0_멤버id = gAAAAABmVqRwFW6Z2gkDlzfmlu298m59_ck3CCODaqGK-LUKMZrXlHtYIGWnkbjk3Yc0aOV-Z9wqzJ9_PqDIP1x5M5m-wCp6YA==
스마트스토어_업로드할스마트스토어계정id = gAAAAABmWDKh4cu5hPTbrd3ac_BJTOpnJxm9TvZjyM1ATLSNbL3AB0l_4Iu-XQLJXYQBUqH_RjFKATUq813q1E8tCVL6JIZUXQ==
스마트스토어_업로드할스마트스토어계정pw = gAAAAABmWDKhF23V2Vnl3IS66RjdA0csOuq61UBvOLNOXoX1TVfk9tknvBndjTRbOxb0yXmKXq0c9SIWI9sZ5fPHnEuo8J_dyg==
스마트스토어_애플리케이션id = gAAAAABmWDKhpoLGdv1Yq-Cwn0lvEChiTuCMS-qbpOA8iKeq7r5KL6P9OQK7AVDlzezEY8pP0ZS0c2Mo0aOnqS9ElQudbkQFiw==
스마트스토어_애플리케이션시크릿 = gAAAAABmWDKhHfgi-ADplbhkIDM_9rrUfo-WR-I0Auyk9ar07IaqTmHQXYQJWtsWEcSGh0CzwuEqclZZAH0Q4LULmP_y2hJV1w==
esm_옥션id = gAAAAABmWDKh9K51USuvoQa6uNJ8KAEQHTcHxpdzEI-gc4-NlZyPukzLjxjJH45fl0Vh8I1b290Klk9woa560TIUnF24IGp8-Q==
esm_지마켓id = gAAAAABmWDKhocsHd9H0K75lbKNZDYa4sRpAomwrnF9xhTTQTUs2cI4ZC5km9Vs9EnaAbig8nMJ05deAFHHN4Bl2IEX_oS5LIg==
11번가-국내_apikey = gAAAAABmWDKhE4g1OvPliE3cKzrzlEJLxg7LFRfSKgdU9rvksOTWMcVkVIDGYgdF1opKwR6RHrC7jOsN2MQ3nunls3IMn3_pOg==
11번가-글로벌_apikey = gAAAAABmWDKhQVFYDo0cIUNueFMTGymF5rqfhNdLR7lxqTyoGm29WGR-nIcWGHPCSGRbRaFUaA1sB5Y9D7XyZ6v3wSp6R5pwng==
롯데온_apikey = gAAAAABmWDKhmgcAla0N9x0nJMnboaR_OvMpjIPueAw3YlzVlqQGSDkcbYR9mtSDJjBqO1GX4S7bvpBZ3fDYpNnVjSuQH-YRqg==
인터파크_상품상태재고수정인증키 = gAAAAABmWDKh07u-i_idKt22QxmjimgVEDntBtaZZujdF2N0hOpjDrh-dcmuf3abeaONoNOfX-rIPnEmQz1bn0XVTmbcX1qwvg==
인터파크_상품상태재고수정비밀키 = gAAAAABmWDKh3s-0fHZ2cAW2FxYkGZkXSSBD1zAn6McYS8sFS6PYbVGKDyKNofrDJJizP8ANPm0oF_ZJoRXUyLkgatchXiNLMQ==
인터파크_상품재고조회인증키 = gAAAAABmWDKh2MxIoY5bxW_HytOUmfVjCsYIVN0rH-wKCXG81fnl7OQ7GaPIX58Ui_ulo7oWEm_tBT0oTEZSSaNAYZalrXZOvg==
인터파크_상품재고조회비밀키 = gAAAAABmWDKhauF7IlfGT-YdUK2oWGQYTV5ZUw0L0L7kYO13UggxPPF_fleeAyPO3v5-9yPdyNnYgNCMrma7Om8nycjppeAq3g==
인터파크_상품정보조회인증 = gAAAAABmWDKhQf_oMfgTWXvYrPPvob0EUzV0NOaq8FSrxB9mXuXzjQX4yGDPyuvQKh5igFWxT3JtYGoAeizuMYKFQ1fFzx3Izg==
인터파크_상품정보조회비밀키 = gAAAAABmWDKhCdj_oGl17ZV9_NfTToiGC_Gu1ajb3gTgQUXh6fYcPARjD6q0qa1UaqifQH0hBozDCVFTPbgpt1HacXZL0uKMjQ==
인터파크_상품수정인증키 = gAAAAABmWDKhSpUpMiWKElZKgT5EEXTfyqX5crG6j_b28zEHDxG6HRdiDPlDIKMj4N_W3UXM2-LKO89yRrwjrhk0OeZSXpuWkw==
인터파크_상품수정비밀키 = gAAAAABmWDKhPQXH92olyqQYrb8igMpLb2L4pEQexTprcHKcoc-uaDyV1EnJPjiOP3GBEm688o8zQfP5T61z6-gzJgVI087e6w==
인터파크_상품등록인증키 = gAAAAABmWDKhN0Ofi8yFo3qT_BK-Esc2_AaYUXxnCrWQ3PsFGLT__xyhMphsr-79gFN_L2L4NCEs_f9-hAdyhM2YR01Qr-bIMQ==
인터파크_상품등록비밀키 = gAAAAABmWDKhi-BSnfhq8knYjGbEEbRXnb7diqJowxbYG-c7ML-hbn0DjLjRYe0nsio1knOARj02OMXjQTh_savkgj162RRMiA==
인터파크_반품배송지조회인증키 = gAAAAABmWDKhPMUEhJPLMqe4j6ISH4EE28tQHPErQjgBXnUltObxMxrp3zHBu6NNnBYEqkA1JwxtaMaY_BnmmcY_szdYE0APNA==
인터파크_반품배송지조회비밀키 = gAAAAABmWDKhgEBRpgZlInnoxew9keBI6641HDdJzPeSZXNSh-lLui6Gsc2ZBsB9szT-9uLi_ou8g_a1ylX9RaEgsTsF5-986w==
인터파크_반품배송지등록인증키 = gAAAAABmWDKhrUmX4sLUdCS3AjqUvSLOW-ze22oLhafRmN_X5nXGOe4Vgt7YOqhQOtYhZIW6MnBFuXbN570XIue3x7Q_2OGSBg==
인터파크_반품배송지등록비밀키 = gAAAAABmWDKh4wCulDsoByyreBJ5Ngd3c4jx27411jPdbjGuUEyWspyWHxC_9kJIAihpWS-hPqO-316vfJ1ywwqIF8SRC3U8-g==
인터파크_상품qna등록인증키 = gAAAAABmWDKhSTBMOdEWFccNoy0bZ_z16kMgetyhFsLU0gbzzlvtYJtBbSsFF49ZwOqt7dS_lZNLNa67rtA7PZY5NN9X_QrWbg==
인터파크_상품qna등록비밀키 = gAAAAABmWDKh_IjC0h5X-0jJ9eK52TbQYvrkhhZGHaVIrtZb-xORE3cLiH3OJTCDBXX-B19YdSAojIpP4QHRi_pU75M7Sa87zw==
인터파크_상품qna조회인증키 = gAAAAABmWDKho5UqwP6nxW-rZuT1TJ-2WvuIaHKbZnaDTJZTlOHRhs2msHen6aX2E68NQftZDpsd1xOXDhwGFLTpORNcFGytNg==
인터파크_상품qna조회비밀키 = gAAAAABmWDKh34TrJQ2M0Bbbw3IOwqGWX4SRRF1-U0k-Oj7znCSMk15h-aK_rge1JwQTlVojxeQMiil7wSMiacsWcMZoLjA1vg==
인터파크_인터파크업체번호 = gAAAAABmWDKhXLCrTA1KjOG9Ffmku8r3gODl7QcXQSzLuuEJiH7ryp2jOygYRBRGFSzHY96XcyaaX3JLi1hAqMLGRsA37xdxZA==
인터파크_공급계약일련번호 = gAAAAABmWDKhA1Vp3OzBybp03hipdEgJjX9EJw07ymY4IyAhOZ1Iz_P1FUdMKnTIBk04FCVeLZBegcbOi7s5V0DT_eSOw96b7A==
위메프_apikey = gAAAAABmWDKhkCJqBghbIhsxtm-AtWKLzA1BSkL3-_vjVtUnddYJ-Sc_4quKvPj9MpfNrH3VAijHPjiwOmtRy3bAyZGXclqYUQ==
옥션1.0_apikey = gAAAAABmWDKhbxZ80HbPaeRTCnCdp5wo0BMtS1UTgt2jdpou6QjRB8wqFApaZQDEzoc5B-QvwCmnGNL4emhB1ZS8jZKmhWn2Dw==
옥션1.0_멤버id = gAAAAABmWDKhSYXn4VC427RNMe1r4bxTBIvyMmzBG21ZBHmES14Q9iTIs5uHLpJ5k_Rq7Ec-oUMQ0AYWjq2MEikTMsE9mDFZiA==
기타정보title1 =
기타정보context1 =
기타정보title2 =
@ -199,6 +213,13 @@ esm_지마켓id = gAAAAABmVqRwsZ1w-Q4ymycdOuSKARfdPgag0lrUK25fX4zWOjZvbehYFaEJEn
기타정보title5 =
기타정보context5 =
활성마켓 = 쿠팡:False, 스마트스토어:False, esm:False, 11번가-국내:False, 11번가-글로벌:False, 롯데온:False, 인터파크:False, 위메프:False, 옥션1.0:False
쿠팡_배송프로필번호 = gAAAAABmWDKhYuarvhBHLeWl-FgSWVPEami9aTmzyzch7IN-dJM-f_-Q0GsHhSz5G-fv7z0wafBzdemJpP5vbo7eFT-74EgIeQ==
스마트스토어_배송프로필번호 = gAAAAABmWDKhALYiO5ZgYgPtDR6Cdn1tbRYeDKSeiGvPK-VHEoFRsBO1OoKhjh6pWuyjvJjxlS5RKW1gjrnMopG9O-O-EDKOHw==
esm_배송프로필번호 = gAAAAABmWDKhWx6nRtMJ2hAGhUF2bbqvyHY5QnD_70TInsbQ9SiWcaPf_id1OqRsdgVM_lA6Bk1Fu-EJPtHmX7HlnB98VUd50A==
11번가-국내_배송프로필번호 = gAAAAABmWDKh_thMxCByQcEMGZUmIdeGiBQg2sbzfJPn7bmtN8XBg3zBzEUJIl8c7VLWAM_TlkQhJel_d8aVOgFq8qYvbhw7WA==
11번가-글로벌_배송프로필번호 = gAAAAABmWDKh0JqaWdf_IwNUg-yXjlCvWJE82VHJuvHDHlTe9y2-s6Q605YNc__c1g97K4VMLm5sAXhPHcD1V0Bzff4J2aW41A==
롯데온_배송프로필번호 = gAAAAABmWDKh0_jFDJi7evw_zVVWea9FfVEkr9qU0HnLWCwRutlWcx0AAMQBPBY-G1dOjJora1FB6Q-V9Wy0HfT6gMlE_8fupQ==
인터파크_배송프로필번호 = gAAAAABmWDKhZ6OMZSjjndoRVhPkHQFJCxxWOtUBuPDQEq13LsMSM0ADMeDAC39ZKpE-MGsKEw87DjhBTugJUo7-jKOM25Y-fA==
[Percenty_Setting]
user_id = leensoo1nt@gmail.com

15
main.py
View File

@ -37,13 +37,18 @@ def main():
main_window = MainWindow(config, logger)
main_window.show()
def cleanup():
async def cleanup():
print("프로그램 종료 중...")
for task in asyncio.all_tasks(loop):
tasks = [task for task in asyncio.all_tasks(loop) if task is not asyncio.current_task()]
for task in tasks:
task.cancel()
results = await asyncio.gather(*tasks, return_exceptions=True)
for result in results:
if isinstance(result, Exception):
print(f"Task raised an exception: {result}")
loop.stop()
app.aboutToQuit.connect(cleanup)
app.aboutToQuit.connect(lambda: asyncio.create_task(cleanup()))
with loop:
try:
@ -52,10 +57,12 @@ def main():
pass
finally:
print("이벤트 루프 정리 중...")
loop.close()
if loop:
loop.close()
print("이벤트 루프 종료 완료.")
else:
sys.exit(0)
if __name__ == '__main__':
main()

View File

@ -62,8 +62,8 @@ class ApiKeyWidget(QWidget):
print(f"call_UI || value : {value}")
h_layout = QHBoxLayout()
key_label = QLabel(f"키 이름: {key}")
value_label = QLabel(f"키 값: {value}")
key_label = QLabel(f"[{key}] : ")
value_label = QLabel(f"{value}")
copy_button = QPushButton("키 복사")
copy_button.clicked.connect(lambda checked, v=value: self.copy_to_clipboard(v))

View File

@ -269,12 +269,12 @@ class BusinessSettings(QDialog):
self.market_tabs[index] = layout
market_tabs = {
"쿠팡": [("쿠팡id", ""), ("업체코드", ""), ("accesskey", ""), ("secretkey", "")],
"스마트스토어": [("업로드할스마트스토어계정id", ""), ("업로드할스마트스토어계정pw", ""), ("애플리케이션id", ""), ("애플리케이션시크릿", "")],
"esm": [("옥션id", ""), ("지마켓id", "")],
"11번가-국내": [("apikey", "")],
"11번가-글로벌": [("apikey", "")],
"롯데온": [("apikey", "")],
"쿠팡": [("쿠팡id", ""), ("업체코드", ""), ("accesskey", ""), ("secretkey", ""), ("배송프로필번호", "")],
"스마트스토어": [("업로드할스마트스토어계정id", ""), ("업로드할스마트스토어계정pw", ""), ("애플리케이션id", ""), ("애플리케이션시크릿", ""), ("배송프로필번호", "")],
"esm": [("옥션id", ""), ("지마켓id", ""), ("배송프로필번호", "")],
"11번가-국내": [("apikey", ""), ("배송프로필번호", "")],
"11번가-글로벌": [("apikey", ""), ("배송프로필번호", "")],
"롯데온": [("apikey", ""), ("배송프로필번호", "")],
"인터파크": [("상품상태재고수정인증키", ""), ("상품상태재고수정비밀키", ""),
("상품재고조회인증키", ""), ("상품재고조회비밀키", ""),
("상품정보조회인증", ""), ("상품정보조회비밀키", ""),
@ -284,9 +284,10 @@ class BusinessSettings(QDialog):
("반품배송지등록인증키", ""), ("반품배송지등록비밀키", ""),
("상품qna등록인증키", ""), ("상품qna등록비밀키", ""),
("상품qna조회인증키", ""), ("상품qna조회비밀키", ""),
("인터파크업체번호", ""), ("공급계약일련번호", "")],
"위메프": [("apikey", "")],
"옥션1.0": [("멤버id", ""), ("apikey", "")]
("인터파크업체번호", ""), ("공급계약일련번호", ""),
("배송프로필번호", "")],
"위메프": [("apikey", ""), ("배송프로필번호", "")],
"옥션1.0": [("멤버id", ""), ("apikey", ""), ("배송프로필번호", "")]
}
for market, fields in market_tabs.items():

View File

@ -1,9 +1,9 @@
from PyQt5.QtWidgets import (QMainWindow, QDesktopWidget, QMessageBox, QAction, QVBoxLayout, QHBoxLayout, QWidget, QPushButton, QLabel, QProgressBar, QComboBox, QCheckBox, QTextBrowser, QPlainTextEdit, QDialog, QFrame, QLineEdit, QGridLayout, QSpinBox)
from PyQt5.QtWidgets import (QMainWindow, QDesktopWidget, QMessageBox, QAction, QVBoxLayout, QHBoxLayout, QWidget, QPushButton, QLabel, QProgressBar, QComboBox, QCheckBox, QTextBrowser, QPlainTextEdit, QDialog, QFrame, QLineEdit, QGridLayout, QSpinBox, QApplication)
from PyQt5.QtCore import Qt
from ui.percenty_settings import PercentySettingsDialog
# from ui.business_settings import BusinessSettingsDialog
from ui.business_set import BusinessSettings
import webbrowser
from ui.help_dialog import HelpDialog
from utils.playwright_helpers import PlaywrightHelper
# from utils.config import ConfigManager
@ -338,7 +338,8 @@ class MainWindow(QMainWindow):
self.market_checkbox_layout.addWidget(self.at_checkbox,4,3)
self.change_business_button = QPushButton('사업자 바꾸기')
self.change_business_button.clicked.connect(lambda: asyncio.ensure_future(self.change_business()))
# self.change_business_button.clicked.connect(lambda: asyncio.ensure_future(self.change_business()))
self.change_business_button.clicked.connect(self.handle_change_business_button)
layout.addWidget(self.change_business_button)
self.progress_bar = QProgressBar(self)
@ -485,6 +486,7 @@ class MainWindow(QMainWindow):
'업체코드': market_details.get('업체코드'),
'accesskey': market_details.get('accesskey'),
'secretkey': market_details.get('secretkey'),
'배송프로필번호': market_details.get('배송프로필번호'),
}
elif market_name == '스마트스토어':
api_keys = {
@ -492,23 +494,28 @@ class MainWindow(QMainWindow):
'업로드할스마트스토어계정PW': market_details.get('업로드할스마트스토어계정pw'),
'애플리케이션ID': market_details.get('애플리케이션id'),
'애플리케이션시크릿': market_details.get('애플리케이션시크릿'),
'배송프로필번호': market_details.get('배송프로필번호'),
}
elif market_name == 'esm':
api_keys = {
'옥션ID': market_details.get('옥션id'),
'지마켓ID': market_details.get('지마켓id'),
'배송프로필번호': market_details.get('배송프로필번호'),
}
elif market_name == '11번가-국내':
api_keys = {
'APIKEY': market_details.get('apikey'),
'배송프로필번호': market_details.get('배송프로필번호'),
}
elif market_name == '11번가-글로벌':
api_keys = {
'APIKEY': market_details.get('apikey'),
'배송프로필번호': market_details.get('배송프로필번호'),
}
elif market_name == '롯데온':
api_keys = {
'APIKEY': market_details.get('apikey'),
'배송프로필번호': market_details.get('배송프로필번호'),
}
elif market_name == '인터파크':
api_keys = {
@ -526,21 +533,24 @@ class MainWindow(QMainWindow):
'반품배송지조회비밀키': market_details.get('반품배송지조회비밀키'),
'반품배송지등록인증키': market_details.get('반품배송지등록인증키'),
'반품배송지등록비밀키': market_details.get('반품배송지등록비밀키'),
'상품QnA등록인증키': market_details.get('상품qna등록인증키'),
'상품QnA등록비밀키': market_details.get('상품qna등록비밀키'),
'상품QnA조회인증키': market_details.get('상품qna조회인증키'),
'상품QnA조회비밀키': market_details.get('상품qna조회비밀키'),
'상품qna등록인증키': market_details.get('상품qna등록인증키'),
'상품qna등록비밀키': market_details.get('상품qna등록비밀키'),
'상품qna조회인증키': market_details.get('상품qna조회인증키'),
'상품qna조회비밀키': market_details.get('상품qna조회비밀키'),
'인터파크업체번호': market_details.get('인터파크업체번호'),
'공급계약일련번호': market_details.get('공급계약일련번호'),
'배송프로필번호': market_details.get('배송프로필번호'),
}
elif market_name == '위메프':
api_keys = {
'APIKEY': market_details.get('apikey'),
'배송프로필번호': market_details.get('배송프로필번호'),
}
elif market_name == '옥션1.0':
api_keys = {
'APIKEY': market_details.get('apikey'),
'멤버ID': market_details.get('멤버id'),
'배송프로필번호': market_details.get('배송프로필번호'),
}
else:
api_keys = {key: value for key, value in market_details.items() if 'key' in key.lower() or '' in key}
@ -679,42 +689,137 @@ class MainWindow(QMainWindow):
QMessageBox.critical(self, "오류", f"설정 로드 중 오류가 발생했습니다: {str(e)}")
def handle_change_business_button(self):
asyncio.create_task(self.perform_change_business())
async def perform_change_business(self):
await self.change_business()
await self.playwright_helper.set_headless_mode(False)
webbrowser.open('https://www.percenty.co.k')
QMessageBox.information(self, "사업자 변경 완료", f"[{self.business_info_label_context.text()}] 사업자로의 변경이 완료되었습니다.")
# self.show_completion_dialog()
async def change_business(self):
self.logger.debug("Changing business...")
self.status_label.setText('현재 상태: 사업자 변경 시작')
self.progress_bar.setValue(0)
try:
self.logger.debug("Changing business...")
self.status_label.setText('현재 상태: 사업자 변경 시작')
self.progress_bar.setValue(0)
# 사업자 드롭박스에서 선택된 사업자와 마켓 체크박스에서 선택된 마켓 가져오기
selected_business = self.business_dropdown.currentText()
selected_markets = [checkbox.text() for checkbox in self.market_checkbox_layout.children() if checkbox.isChecked()]
# 사업자 드롭박스에서 선택된 사업자와 마켓 체크박스에서 선택된 마켓 가져오기
selected_business = self.business_dropdown.currentText()
selected_markets = [checkbox.text() for checkbox in self.market_checkbox_layout.children() if checkbox.isChecked()]
# 선택된 사업자와 마켓에 따라 API 키 변경 작업 수행
# 선택된 사업자와 마켓에 따라 API 키 변경 작업 수행
user_id = self.config.get('Percenty_Setting', 'user_id')
password = self.config.decrypt(self.config.get('Percenty_Setting', 'password'))
user_id = self.config.get('Percenty_Setting', 'user_id')
password = self.config.decrypt(self.config.get('Percenty_Setting', 'password'))
headless = self.config.get('Percenty_Setting', 'headless', fallback='')
if headless == 'True':
headless = True
headless = self.config.get('Percenty_Setting', 'headless', fallback='')
if headless == 'True':
headless = True
else:
headless = False
self.isHeadless_mode = headless
await self.playwright_helper.init_browser(self.isHeadless_mode)
self.progress_bar.setValue(5)
self.status_label.setText('현재 상태: 브라우저 준비')
isSuccess = await self.playwright_helper.update_api_keys('https://percenty.co.kr', user_id, password, self.current_api_keys, self.status_label, self.progress_bar)
print(f"isSuccess : {isSuccess}")
self.progress_bar.setValue(100)
self.status_label.setText('현재 상태: 사업자 변경 완료')
# await self.playwright_helper.close_browser()
# # 작업 완료 창 띄우기
# await self.show_completion_dialog()
except asyncio.CancelledError:
print("Change business task was cancelled")
await self.playwright_helper.close_browser()
print("Browser closed safely after cancellation")
def show_completion_dialog(self):
dialog = QDialog(self)
dialog.setWindowTitle('작업 완료')
layout = QVBoxLayout()
completion_label = QLabel('사업자 변경 작업이 완료되었습니다.')
layout.addWidget(completion_label)
browser_button = QPushButton('브라우저 실행')
# browser_button.clicked.connect(lambda: asyncio.ensure_future(self.run_browser()))
# browser_button.clicked.connect(lambda: asyncio.create_task(self.run_browser()))
browser_button.clicked.connect(self.show_browser_button)
# self.handle_run_browser_button
# asyncio.create_task(self.run_browser())
# layout.addWidget(browser_button)
close_button = QPushButton('확인')
close_button.clicked.connect(dialog.accept)
# close_button.clicked.connect(self.playwright_helper.close_browser)
layout.addWidget(close_button)
dialog.setLayout(layout)
dialog.exec_()
def show_browser_button(self):
pass
async def run_browser(self):
try:
print("run_browser clicked")
await self.playwright_helper.init_browser(headless=False)
print("init_browser run")
user_id = self.config.get('Percenty_Setting', 'user_id')
print(f"user_id: {user_id}")
password = self.config.decrypt(self.config.get('Percenty_Setting', 'password'))
await self.playwright_helper.login('https://percenty.co.kr', user_id, password)
print("login run")
self.playwright_helper.browser.on('disconnected', self.on_browser_closed)
except asyncio.CancelledError:
print("Browser task was cancelled")
await self.playwright_helper.close_browser()
print("Browser closed safely after cancellation")
def on_browser_closed(self):
if self.playwright_helper.browser is not None:
print("브라우저 종료됨")
self.show_notification_after_browser_closed()
else:
headless = False
print("브라우저가 이미 종료되었습니다.")
self.isHeadless_mode = headless
def show_notification_after_browser_closed(self):
msg_box = QMessageBox(self)
msg_box.setWindowTitle("Notification")
msg_box.setText("프로그램을 종료하시겠습니까?")
msg_box.setStandardButtons(QMessageBox.Cancel)
await self.playwright_helper.init_browser(self.isHeadless_mode)
self.progress_bar.setValue(5)
self.status_label.setText('현재 상태: 브라우저 준비')
exit_program_button = QPushButton("프로그램 종료")
close_browser_button = QPushButton("브라우저만 종료")
await self.playwright_helper.update_api_keys('https://percenty.co.kr', user_id, password, self.current_api_keys, self.status_label, self.progress_bar)
msg_box.addButton(exit_program_button, QMessageBox.ActionRole)
msg_box.addButton(close_browser_button, QMessageBox.ActionRole)
self.progress_bar.setValue(100)
self.status_label.setText('현재 상태: 사업자 변경 완료')
exit_program_button.clicked.connect(self.exit_program)
close_browser_button.clicked.connect(lambda: asyncio.create_task(self.close_browser_only()))
msg_box.exec_()
def exit_program(self):
QApplication.instance().quit()
async def close_browser_only(self):
await self.playwright_helper.close_browser()
print("브라우저만 종료됨")
# 작업 완료 창 띄우기
self.show_completion_dialog()
def save_business_action_triggered(self, action_name):
slot_number = int(action_name.split('')[0])
@ -784,32 +889,6 @@ class MainWindow(QMainWindow):
if update_menu:
self.update_menu_items()
def show_completion_dialog(self):
dialog = QDialog(self)
dialog.setWindowTitle('작업 완료')
layout = QVBoxLayout()
completion_label = QLabel('사업자 변경 작업이 완료되었습니다.')
layout.addWidget(completion_label)
browser_button = QPushButton('브라우저 실행')
browser_button.clicked.connect(lambda: asyncio.ensure_future(self.run_browser()))
layout.addWidget(browser_button)
close_button = QPushButton('확인')
close_button.clicked.connect(dialog.accept)
layout.addWidget(close_button)
dialog.setLayout(layout)
dialog.exec_()
async def run_browser(self):
await self.playwright_helper.init_browser(headless=False)
user_id = self.config.get('Percenty_Setting', 'user_id')
password = self.config.decrypt(self.config.get('Percenty_Setting', 'password'))
await self.playwright_helper.login_and_fetch_api_keys('https://percenty.co.kr', user_id, password)
def show_help(self):
dialog = HelpDialog()
dialog.exec_()

View File

@ -101,13 +101,13 @@ class TwoFactorAuthDialog(QMainWindow):
self.email_hint.setVisible(True)
self.phone_hint.setVisible(False)
QMessageBox.information(self, "이메일 인증", "이메일로 인증 번호가 전송되었습니다.")
print(f"1번 클릭 시작")
# print(f"1번 클릭 시작")
await self.popup_page.click('div#root li:nth-child(1) > label')
print(f"1번 클릭")
# print(f"1번 클릭")
await self.popup_page.click('div#root div.TextField_text_field__x1Wtz.TextField_field_email__2BzY5.TextField_disabled__2mxn3 > div > div > div.TextField_btn_box__2TdIe > button[type="button"]')
print(f"2번 클릭")
# print(f"2번 클릭")
await self.popup_page.click('div#root button.PopupCommon_btn__33Of5[type="button"]') # 전송 확인 팝업의 확인 버튼 클릭
print(f"3번 클릭")
# print(f"3번 클릭")
self.start_timer()
async def phone_auth(self):
@ -116,15 +116,15 @@ class TwoFactorAuthDialog(QMainWindow):
self.email_hint.setVisible(False)
self.phone_hint.setVisible(True)
QMessageBox.information(self, "휴대폰 인증", "휴대폰으로 인증 번호가 전송되었습니다.")
print(f"1번 클릭 시작")
# print(f"1번 클릭 시작")
await self.popup_page.click('div#root li:nth-child(2) > label')
print(f"1번 클릭")
# print(f"1번 클릭")
# await self.popup_page.click('div#root div.TextField_text_field__x1Wtz.TextField_field_phone__3MV-T.TextField_disabled__2mxn3 > div > div.TextField_btn_box__2TdIe > button[type="button"]')
print(f"1-1번 클릭")
# print(f"1-1번 클릭")
await self.popup_page.click("#root > div > div.Layout_wrap__3uDBh > div > div > div > ul > li.TwoStepCertify_choice_item__2qian.TwoStepCertify_on__2Y_8N > div > div.TextField_text_field__x1Wtz.TextField_field_phone__3MV-T.TextField_disabled__2mxn3 > div > div.TextField_ipt_area__3lD1U > div.TextField_btn_box__2TdIe > button")
print(f"2번 클릭")
# print(f"2번 클릭")
await self.popup_page.click('div#root button.PopupCommon_btn__33Of5[type="button"]') # 전송 확인 팝업의 확인 버튼 클릭
print(f"3번 클릭")
# print(f"3번 클릭")
self.start_timer()
async def submit_code(self):

View File

@ -58,7 +58,8 @@ class ConfigManager:
'쿠팡_쿠팡id': '',
'쿠팡_업체코드': '',
'쿠팡_accesskey': '',
'쿠팡_secretkey': ''
'쿠팡_secretkey': '',
'쿠팡_배송프로필번호': '',
})
elif market == '스마트스토어':
self.config[section].update({
@ -66,24 +67,29 @@ class ConfigManager:
'스마트스토어_업로드할스마트스토어계정id': '',
'스마트스토어_업로드할스마트스토어계정pw': '',
'스마트스토어_애플리케이션id': '',
'스마트스토어_애플리케이션시크릿': ''
'스마트스토어_애플리케이션시크릿': '',
'스마트스토어_배송프로필번호': '',
})
elif market == 'esm':
self.config[section].update({
'esm_옥션id': '',
'esm_지마켓id': ''
'esm_지마켓id': '',
'esm_배송프로필번호': '',
})
elif market == '11번가-국내':
self.config[section].update({
'11번가-국내_apikey': ''
'11번가-국내_apikey': '',
'11번가-국내_배송프로필번호': '',
})
elif market == '11번가-글로벌':
self.config[section].update({
'11번가-글로벌_apikey': ''
'11번가-글로벌_apikey': '',
'11번가-글로벌_배송프로필번호': '',
})
elif market == '롯데온':
self.config[section].update({
'롯데온_apikey': ''
'롯데온_apikey': '',
'롯데온_배송프로필번호': '',
})
elif market == '인터파크':
self.config[section].update({
@ -106,16 +112,19 @@ class ConfigManager:
'인터파크_상품qna조회인증키': '',
'인터파크_상품qna조회비밀키': '',
'인터파크_인터파크업체번호': '',
'인터파크_공급계약일련번호': ''
'인터파크_공급계약일련번호': '',
'인터파크_배송프로필번호': '',
})
elif market == '위메프':
self.config[section].update({
'위메프_apikey': ''
'위메프_apikey': '',
'위메프_배송프로필번호': '',
})
elif market == '옥션1.0':
self.config[section].update({
'옥션1.0_apikey': '',
'옥션1.0_멤버id': ''
'옥션1.0_멤버id': '',
'옥션1.0_배송프로필번호': '',
})
with open(self.config_file, 'w', encoding='utf-8') as configfile:

View File

@ -3,14 +3,18 @@ import os, random, traceback, asyncio
from ui.two_factor_auth_dialog import TwoFactorAuthDialog
from playwright._impl._errors import TargetClosedError
class PlaywrightHelper:
def __init__(self):
self.browser = None
self.context = None
self.page = None
self.dialog = TwoFactorAuthDialog()
self.username = None
self.password = None
self.progress_bar = None
self.status_label = None
self.market_names = [
'쿠팡', '스마트스토어', 'esm', '11번가-국내', '11번가-글로벌', '롯데온', '인터파크', '위메프', '옥션1.0'
]
@ -79,7 +83,6 @@ class PlaywrightHelper:
self.order_collection_button = {
'쿠팡': "div#rc-tabs-0-panel-cp div:nth-child(5) > button[type=\"button\"]",
# '스마트스토어': "div#rc-tabs-0-panel-ss div:nth-child(4) > button[type=\"button\"]",
'스마트스토어': "#rc-tabs-0-panel-ss .css-1li46mu[role='switch'][type='button']",
'esm': "div#rc-tabs-0-panel-esm div:nth-child(3) > button[type=\"button\"]",
'11번가-국내': "div#rc-tabs-0-panel-est div > div > div:nth-child(2) > button[type=\"button\"]",
@ -91,27 +94,14 @@ class PlaywrightHelper:
}
self.smartstore_elements = {
# 'account_button': "div#rc-tabs-0-panel-ss div.ant-row.css-1li46mu > button[type=\"button\"].ant-btn.css-1li46mu.ant-btn-primary.ant-btn-background-ghost",
'account_button': "#rc-tabs-0-panel-ss .css-1li46mu .ant-btn-background-ghost[type='button']",
# 'popup_login_type_button': "div#root div.Login_login_content__Ia6Rm > ul > li:nth-child(1)",
'popup_login_type_button': ".Login_type_list__KPqjy .Login_type_item__2_QV8 .Login_title__3ixGa",
# 'popup_login_id_input': "div#root li.Login_login_item__2fOX0.Login_hover__2Wdak.Login_on__A5e8I > input",
'popup_login_id_input': ".Login_login_area__cMnCU input[placeholder='아이디 또는 이메일 주소']",
# 'popup_login_pw_input': "div#root li:nth-child(2) > input",
'popup_login_pw_input': ".Login_login_item__2fOX0 [placeholder='비밀번호']",
# 'popup_login_button': "div#root div.Login_login_content__Ia6Rm > div > div > button[type=\"button\"]",
'popup_login_button': ".Login_btn_box__22wei [type='button']",
# 'login_success_check': "div#_gnb_nav span.login-id.text-overflow"
'login_success_check': "[ng-if='vm.loginInfo'] .login-id.text-overflow",
'2fa_check': '#twoFactorAuth', # 2단계 인증 확인용 셀렉터
'2fa_complete_check': '#twoFactorAuthComplete' # 2단계 인증 완료 확인용 셀렉터
}
self.toggle_states = {
@ -126,6 +116,18 @@ class PlaywrightHelper:
'옥션1.0': 'off',
}
self.market_shipping_profile_selectors = {
'쿠팡': ('cp', 'sc-enhgma.iWXfFP'),
'스마트스토어': ('ss', 'sc-ialZcF.AOoIo'),
'esm': ('esm', 'sc-DIosr.gWSxuU'),
'11번가-국내': ('est', 'sc-jwiwYR.juQnsn'),
'11번가-글로벌': ('est_global', 'sc-eLoUSf.dcgEMZ'),
'롯데온': ('lotteon', 'sc-ldRCOE.eQdovA'),
'인터파크': ('ip', 'sc-kYKKLo.bKCTmC'),
'위메프': ('wmp', 'sc-jzrJLD.jMimQL'),
'옥션1.0': ('at', 'sc-hLiTId.fFaLDf')
}
self.api_key_xpaths = {
'쿠팡': {
'쿠팡id': "div#rc-tabs-0-panel-cp div:nth-child(1) > input",
@ -186,6 +188,7 @@ class PlaywrightHelper:
async def init_browser(self, isHeadless_mode = True):
try:
"""브라우저 설정 및 인스턴스 생성"""
playwright = await async_playwright().start()
# self.browser = await playwright.chromium.launch(headless=False)
@ -221,7 +224,7 @@ class PlaywrightHelper:
args=[
'--disable-popup-blocking', # 팝업 차단 비활성화
f'--disable-extensions-except={extension_path}',
f'--load-extension={extension_path}'
f'--load-extension={extension_path}',
],
executable_path=driver_path,
user_agent=user_agent # user agent 설정 추가
@ -230,18 +233,84 @@ class PlaywrightHelper:
# self.page = await self.browser.new_page() # 첫 번째 페이지를 가져옴
self.page = self.browser.pages[0]
# await self.page.set_default_navigation_timeout(40000) # 기본 타임아웃(40초) 변경
except Exception as e:
print(f"브라우저 초기화 중 에러발생 : {e}")
traceback.print_exc()
async def launch_new_browser(self, isHeadless_mode = False):
try:
"""브라우저 설정 및 인스턴스 생성"""
playwright = await async_playwright().start()
# self.browser = await playwright.chromium.launch(headless=False)
# 드라이버의 경로 설정
driver_path = os.path.join(os.path.dirname(__file__), 'drivers', 'chromium-1112', 'chrome-win','chrome.exe')
# 확장 프로그램 경로
extension_path = os.path.join(os.path.dirname(__file__), 'drivers', 'extensions', '1.1.100_0')
# 사용자 데이터 디렉토리 설정
user_data_dir = os.path.join(os.path.dirname(__file__), 'drivers', 'user_data')
# 사용자 데이터 디렉토리가 존재하지 않으면 생성
if not os.path.exists(user_data_dir):
os.makedirs(user_data_dir)
print(f"{user_data_dir} 디렉토리가 생성되었습니다.")
# User agent 설정
user_agent = random.choice([
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.0.0",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 12_0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Safari/605.1.15",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 OPR/85.0.0.0",
])
self.context = await playwright.chromium.launch_persistent_context(user_data_dir,
headless=isHeadless_mode,
permissions=["geolocation", "notifications"], # 필요한 권한을 모두 허용
geolocation={"latitude": 37.5665, "longitude": 126.9780}, # 위치 정보 설정 (서울)
locale="ko-KR", # 로케일 설정
args=[
'--disable-popup-blocking', # 팝업 차단 비활성화
f'--disable-extensions-except={extension_path}',
f'--load-extension={extension_path}',
],
executable_path=driver_path,
user_agent=user_agent # user agent 설정 추가
) # headless 모드 설정
self.page = await self.context.new_page()
await self.page.goto('https://www.percenty.co.kr')
# 브라우저 창 크기 조정
await self.page.set_viewport_size({"width": 1920, "height": 1080})
# await self.page.set_default_navigation_timeout(40000) # 기본 타임아웃(40초) 변경
except Exception as e:
print(f"브라우저 초기화 중 에러발생 : {e}")
traceback.print_exc()
async def close_browser(self):
if self.browser:
await self.browser.close()
print("self.browser 종료 실행 완료")
async def clear_cache(self):
# 브라우저 캐시를 삭제하는 메서드
if self.context:
await self.context.clear_cookies()
await self.context.clear_storage()
async def set_headless_mode(self, headless):
print(f"헤드리스 모드 : {headless}")
await self.browser.close()
print(f"기존 브라우저 닫기")
await self.launch_new_browser(headless)
# print(f"새 브라우저 headless모드 : {headless}로 초기화")
# await self.login_Process('https://percenty.co.kr', self.username, self.password, self.progress_bar, self.status_label)
print(f"브라우저 로그인")
async def login_and_fetch_api_keys(self, url, username, password, status_label, progress_bar):
try:
@ -250,48 +319,6 @@ class PlaywrightHelper:
await self.login_Process(url, username, password, progress_bar, status_label)
print('로그인 동작 완료')
# # context = await self.browser.new_context()
# # page = await context.new_page()
# # self.page = await self.browser.new_page() # 첫 번째 페이지를 가져옴
# await self.page.goto(url)
# progress_bar.setValue(10)
# status_label.setText('현재 상태: 웹페이지 접속완료')
# # 현재 로그인 상태 확인
# # login_status = await self.page.query_selector("div#root div:nth-child(3) > span")
# login_status = await self.page.query_selector(".ant-space-item .ant-typography:nth-child(2)", 2000)
# if not login_status:
# print('로그인 실행')
# # 홈 페이지에서 로그인 버튼 클릭
# await self.page.click(".signList > .ant-btn-default > span")
# # 로그인 페이지에서 로그인 수행
# await self.page.fill(".ant-input:nth-child(4)", username)
# await self.page.fill(".ant-input:nth-child(1)", password)
# await self.page.click(".ant-btn-primary")
# progress_bar.setValue(20)
# status_label.setText('현재 상태: 퍼센티 로그인 완료')
# # 마켓 설정 페이지로 이동
# await self.page.click("xpath=/html/body/div[1]/div/div/div/div/aside/div/ul/li[7]/ul/li[2]")
# # await self.page.click("div#root li.ant-menu-item.ant-menu-item-selected.ant-menu-item-only-child > span")
# # 마켓 설정상 팝업 다이얼로그가 있는 경우 닫기 (있는 경우)
# try:
# # await self.page.click(".ant-modal-footer [type='button']")
# await self.page.click("div.ant-modal-footer > button[type=\"button\"].ant-btn.css-1li46mu.ant-btn-primary",2)
# # .ant-modal-content
# # .ant-modal-footer [type='button']
# except:
# pass
# progress_bar.setValue(30)
# status_label.setText('현재 상태: 마켓 설정')
api_keys = {}
for market in self.market_names:
@ -331,14 +358,13 @@ class PlaywrightHelper:
async def login_Process(self, url, username, password, progress_bar, status_label):
try:
self.username = username
self.password = password
await self.page.goto(url)
progress_bar.setValue(10)
status_label.setText('현재 상태: 웹페이지 접속완료')
# 현재 로그인 상태 확인
# login_status = await self.page.query_selector("div#root div:nth-child(3) > span")
# login_status = await self.page.query_selector(".ant-space-item .ant-typography:nth-child(2)", timeout=3000)
# login_status = await self.page.query_selector("#root > div > div > div > header > div > div.ant-space.css-1li46mu.ant-space-horizontal.ant-space-align-center.ant-space-gap-row-small.ant-space-gap-col-small > div:nth-child(3) > span", timeout=3000)
login_status = await self.login_check()
print(f"login_status : {login_status}")
@ -375,14 +401,11 @@ class PlaywrightHelper:
# 마켓 설정 페이지로 이동
await self.page.click("xpath=/html/body/div[1]/div/div/div/div/aside/div/ul/li[7]/ul/li[2]")
print("마켓 설정 페이지로 이동")
# await self.page.click("[role='menu'] .ant-menu-item.ant-menu-item-selected")
# 팝업 다이얼로그 닫기 (있는 경우)
try:
# await self.page.click("xpath=body > div:nth-child(10) > div > div.ant-modal-wrap.ant-modal-centered > div > div.ant-modal-content > div.ant-modal-footer > button.ant-btn.css-1li46mu.ant-btn-primary")
print("팝업다이알로그가 존재한다면 클릭")
await self.page.click("div.ant-modal-footer > button[type=\"button\"].ant-btn.css-1li46mu.ant-btn-primary",timeout=1000)
await self.page.click("div.ant-modal-footer > button[type=\"button\"].ant-btn.css-1li46mu.ant-btn-primary", timeout=1000)
except:
pass
@ -395,42 +418,13 @@ class PlaywrightHelper:
async def update_api_keys(self, url, username, password, api_keys, status_label, progress_bar):
try:
print('로그인 동작 실행')
# 캐시 삭제
await self.clear_cache()
print('캐쉬 삭제')
await self.login_Process(url, username, password, progress_bar, status_label)
print('로그인 동작 완료')
# await self.page.goto(url)
# progress_bar.setValue(10)
# status_label.setText('현재 상태: 웹페이지 접속완료')
# # 현재 로그인 상태 확인
# # login_status = await self.page.query_selector("div#root div:nth-child(3) > span")
# login_status = await self.page.query_selector(".ant-space-item .ant-typography:nth-child(2)", 2000)
# if not login_status:
# print('로그인 실행')
# # 홈 페이지에서 로그인 버튼 클릭
# await self.page.click(".signList > .ant-btn-default > span")
# # 로그인 페이지에서 로그인 수행
# await self.page.fill(".ant-input:nth-child(4)", username)
# await self.page.fill(".ant-input:nth-child(1)", password)
# await self.page.click(".ant-btn-primary")
# progress_bar.setValue(20)
# status_label.setText('현재 상태: 퍼센티 로그인 완료')
# # 마켓 설정 페이지로 이동
# await self.page.click("xpath=/html/body/div[1]/div/div/div/div/aside/div/ul/li[7]/ul/li[2]")
# # 팝업 다이얼로그 닫기 (있는 경우)
# try:
# await self.page.click("xpath=body > div:nth-child(10) > div > div.ant-modal-wrap.ant-modal-centered > div > div.ant-modal-content > div.ant-modal-footer > button.ant-btn.css-1li46mu.ant-btn-primary")
# await self.page.click("div.ant-modal-footer > button[type=\"button\"].ant-btn.css-1li46mu.ant-btn-primary",2)
# except:
# pass
# 각 마켓의 API 키를 업데이트
for market in self.market_xpath_mapping.keys():
if market in api_keys:
@ -439,10 +433,11 @@ class PlaywrightHelper:
status_label.setText(f'현재 상태: {market} 업데이트 완료')
await self.browser.close()
print('browser 종료')
return True
except Exception as e:
print(f"오류발생 : {e}")
return False
# 각 마켓별 API 키 업데이트
@ -457,6 +452,8 @@ class PlaywrightHelper:
# await self.page.wait_for_timeout(1000) # 잠시 대기
await asyncio.sleep(1) # 잠시 대기
# 배송프로필 선택
await self.select_shipping_profile(market, market_api_keys)
# 주문 수집 기능 설정
@ -513,7 +510,6 @@ class PlaywrightHelper:
await popup_page.click(self.smartstore_elements['popup_login_button'])
print(f"page.click - popup_login_button")
try:
# 2단계 인증 처리
popup_page = await self.handle_two_factor_authentication(popup_page, market_api_keys)
@ -557,8 +553,6 @@ class PlaywrightHelper:
try:
await popup_page.wait_for_load_state()
# 2단계 인증 페이지가 있는지 확인
# two_factor_element = await popup_page.wait_for_selector('div#root h2', timeout=2000)
# two_factor_element = await popup_page.wait_for_selector("#root > div > div.Layout_wrap__3uDBh > div > div > h2", timeout=2000)
two_factor_element = await popup_page.wait_for_selector("div#root .Layout_layout__2COMk .Layout_inner__3QZZI .TwoStepCertify_h_title__1XYdA", timeout=2000)
# print(f"two_factor_element 존재 : {two_factor_element}")
two_factor_text = await two_factor_element.inner_text()
@ -605,3 +599,64 @@ class PlaywrightHelper:
traceback.print_exc()
return popup_page
def generate_selector(self, tab_id, class_name, profile_index, state_class):
return f"#rc-tabs-0-panel-{tab_id} > div > div.{class_name} > div.ant-list.ant-list-vertical.ant-list-split.ant-list-bordered.css-1li46mu > div > div > ul > li:nth-child({profile_index}) > div > div:nth-child(2) > button.ant-btn.css-1li46mu.ant-btn-text.Body3Regular14.{state_class}"
def generate_profile_selector(self, tab_id, class_name, profile_index):
return f"#rc-tabs-0-panel-{tab_id} > div > div.{class_name} > div.ant-list.ant-list-vertical.ant-list-split.ant-list-bordered.css-1li46mu > div > div > ul > li:nth-child({profile_index}) > div > div:nth-child(1) > div.H5Medium16.CharacterPrimary85"
async def select_shipping_profile(self, market, market_api_keys):
profile_number = market_api_keys.get('배송프로필번호', '1')
profile_number = int(profile_number)
print(f"profile_number : {profile_number}")
try:
market_config = self.market_shipping_profile_selectors.get(market)
if not market_config:
# self.logger.error(f"{market} 마켓의 배송프로필 선택자는 설정되지 않았습니다.")
print(f"{market} 마켓의 배송프로필 선택자는 설정되지 않았습니다.")
return
tab_id, class_name = market_config
if profile_number < 1 or profile_number > 3:
# self.logger.warning(f"{market} 마켓에 유효하지 않은 배송프로필 번호가 선택되었습니다. 기본으로 1번 프로필을 사용합니다.")
print(f"{market} 마켓에 유효하지 않은 배송프로필 번호가 선택되었습니다. 기본으로 1번 프로필을 사용합니다.")
profile_number = 1
profile_selector = self.generate_profile_selector(tab_id, class_name, profile_number)
default_selected_selector = self.generate_selector(tab_id, class_name, profile_number, "CharacterDisabledPlaceholder25")
default_selectable_selector = self.generate_selector(tab_id, class_name, profile_number, "Primary6")
# profile_selector가 있는지 확인
is_profile_selector = await self.page.query_selector(profile_selector)
if not is_profile_selector:
# self.logger.warning(f"{market} 마켓에 배송프로필이 존재하지 않습니다. 기본으로 1번 프로필을 사용합니다.")
print(f"{market} 마켓에 배송프로필이 존재하지 않습니다. 기본으로 1번 프로필을 사용합니다.")
profile_selector = self.generate_profile_selector(tab_id, class_name, 1)
default_selected_selector = self.generate_selector(tab_id, class_name, 1, "CharacterDisabledPlaceholder25")
default_selectable_selector = self.generate_selector(tab_id, class_name, 1, "Primary6")
# 기본 프로필로 선택된 상태인지 확인
is_default_selected = await self.page.query_selector(default_selected_selector)
if is_default_selected:
# self.logger.info(f"{market} 마켓의 {profile_number}번 프로필이 이미 기본 프로필로 선택되어 있습니다.")
print(f"{market} 마켓의 {profile_number}번 프로필이 이미 기본 프로필로 선택되어 있습니다.")
return
# 기본 프로필로 선택 가능한 상태인지 확인
is_default_selectable = await self.page.query_selector(default_selectable_selector)
if is_default_selectable:
await is_default_selectable.click()
# self.logger.info(f"{market} 마켓의 {profile_number}번 프로필을 기본 프로필로 선택했습니다.")
print(f"{market} 마켓의 {profile_number}번 프로필을 기본 프로필로 선택했습니다.")
else:
# self.logger.error(f"{market} 마켓의 {profile_number}번 프로필을 기본 프로필로 선택할 수 없습니다.")
print(f"{market} 마켓의 {profile_number}번 프로필을 기본 프로필로 선택할 수 없습니다.")
except Exception as e:
# self.logger.error(f"{market} 배송프로필 선택 중 오류 발생: {e}")
print(f"{market} 배송프로필 선택 중 오류 발생: {e}")
traceback.print_exc()