def search_orders_by_tids(self, cr, uid, ids, context=None, tids = ''): # 根据电商单号 下载 订单 port = 80 shop = self.browse(cr, uid, ids[0], context = context) partner_id = shop.partner_id.id setDefaultAppInfo(shop.appkey, shop.appsecret) req = TradeGetRequest(shop.apiurl,port) req.fields="tid,pay_time,seller_memo,created,buyer_nick,orders.num,orders.store_code,orders.num_iid,orders.sku_id,orders.oid, orders.total_fee,orders.payment,orders.outer_sku_id" tids = [] note = shop.last_log or '' tmijdi_nos = note.strip().split(',') for tmijdi_no in tmijdi_nos: tmijdi_no = tmijdi_no.strip() if tmijdi_no != '' : tids.append( tmijdi_no ) order_list = [] for tid in tids: req.tid = tid resp = req.getResponse(shop.sessionkey) order = resp.get('trade_get_response').get('trade', '') if order : seller_memo = order.get('seller_memo','') order['is_jaycee'] = seller_memo.find(u'jaycee订单') >= 0 or seller_memo.find(u'anja订单') >= 0 order['is_kevin'] = seller_memo.find(u'kevin订单') >= 0 or seller_memo.find(u'anja订单') >= 0 order['is_sz'] = seller_memo.find(u'深圳发货') >= 0 order['is_hk'] = seller_memo.find(u'香港四方转运') >= 0 or seller_memo.find(u'香港发货') >= 0 order_list.append( order ) order_id = self.create_order(cr, uid, ids, order_list, context = context ) if order_id : shop.import_salesorder = order_id return order_id
def _sync_stock_qty(self, cr, uid, ids, context=None): """ 同步本条记录的库存数量到 电商店铺 """ port = 80 shop = self.pool.get('loewieec.shop').browse(cr, uid, ids[0], context=context) for product in shop.products: qty = product.erp_stock if qty < 1: continue setDefaultAppInfo(shop.appkey, shop.appsecret) req = ItemQuantityUpdateRequest(shop.apiurl, port) req.num_iid = long(product.ec_num_iid) req.sku_id = product.ec_sku_id if qty < 0: qty = 0 req.quantity = int(qty) req.type = 1 resp = req.getResponse(shop.sessionkey) return True
def get_losgistic_company_code(self, cr, uid, ids, context=None): # port = 80 shop = self.browse(cr, uid, ids[0], context=context) setDefaultAppInfo(shop.appkey, shop.appsecret) req = LogisticsCompaniesGetRequest(shop.apiurl, port) req.fields = "id,code,name,reg_mail_no" req.order_mode = "all" resp = req.getResponse(shop.sessionkey) companies = resp.get('logistics_companies_get_response').get( 'logistics_companies', False) comp_list = companies.get('logistics_company', False) carrier_obj = self.pool.get('loewie.carrier') for comp in comp_list: comp_ids = carrier_obj.search(cr, uid, [('name', '=', comp.get('name'))], context=context) comp_ids = comp_ids and comp_ids[0] or 0 if not comp_ids: vals = { 'name': comp.get('name'), 'id_tm': str(comp.get('id')), 'code_tm': comp.get('code'), 'reg_mail_no': comp.get('reg_mail_no') } carrier_obj.create(cr, uid, vals, context=context) return True
def b_sync_stock_qty(self, cr, uid, ids, context=None): port = 80 shop = self.browse(cr, uid, ids[0], context=context) setDefaultAppInfo(shop.appkey, shop.appsecret) req = ProductsSearchRequest(shop.apiurl, port) req.fields = "name, sale_props, binds, product_id, outer_id, barcode_str" #resp= req.getResponse(shop.sessionkey) #skus = resp.get('items_inventory_get_response',False).get('items',False).get('item', False) req.page_no = 1 req.page_size = 100 req.q = "Fun Factory" total_get = 0 total_results = 100 res = [] while total_get < total_results: resp = req.getResponse(shop.sessionkey) total_results = resp.get('products_search_response').get( 'total_results') if total_results > 0: res += resp.get('products_search_response').get( 'products').get('product') total_get += req.page_size req.page_no = req.page_no + 1 return res
def set_losgistic_confirm(self, cr, uid, ids, context=None, salesorder=None): # port = 80 shop = self.browse(cr, uid, ids[0], context=context) setDefaultAppInfo(shop.appkey, shop.appsecret) req = LogisticsOnlineConfirmRequest(shop.apiurl, port) log = [] is_sent_list = [] for line in salesorder.order_line: tmi_jdi_no, express_id, is_sent = line.tmi_jdi_no, line.express_id, line.logistic_sent tmi_jdi_no = tmi_jdi_no.strip() express_no = express_id and express_id.express_no.strip() or '' if not tmi_jdi_no or not express_no or is_sent or tmi_jdi_no in is_sent_list: continue req.tid = tmi_jdi_no req.out_sid = express_no resp = req.getResponse(shop.sessionkey) is_ok = False try: is_ok = resp.get('logistics_online_confirm_response').get( 'shipping', False).get('is_success') except ValueError: log.append(line.tmi_jdi_no) is_sent_list.append(tmi_jdi_no) if is_ok: line.logistic_sent = True return True
def set_losgistic_confirm(self, cr, uid, ids, context=None, salesorder=None): # port = 80 shop = self.browse(cr, uid, ids[0], context = context) setDefaultAppInfo(shop.appkey, shop.appsecret) req = LogisticsOnlineConfirmRequest(shop.apiurl,port) tmi_jdi_list = {} for line in salesorder.order_line: tmi_jdi_no,coe_no,is_sent = line.tmi_jdi_no,line.coe_no, line.logistic_sent tmi_jdi_no = tmi_jdi_no.strip() coe_no = coe_no and coe_no.name.strip() or False if not tmi_jdi_no or not coe_no or is_sent: continue tmi_jdi_list[tmi_jdi_no] = coe_no is_sent_list = [] for tmi_jdi_num in tmi_jdi_list.keys(): req.tid = tmi_jdi_num req.out_sid = tmi_jdi_list[tmi_jdi_num] resp= req.getResponse(shop.sessionkey) is_ok = resp.get('logistics_online_confirm_response').get('shipping', False).get('is_success') if is_ok : is_sent_list.append(tmi_jdi_num) for line3 in salesorder.order_line: tmi_jdi = line3.tmi_jdi_no if tmi_jdi.strip() in is_sent_list: line3.logistic_sent = True return True
def update_orders_seller_memo(self, cr, uid, ids, context=None, tids=[]): port = 80 shop = self.browse(cr, uid, ids[0], context=context) partner_id = shop.partner_id.id setDefaultAppInfo(shop.appkey, shop.appsecret) req = TradeGetRequest(shop.apiurl, port) req.fields = "seller_memo" tid_memos = {} for tid in tids: req.tid = tid resp = req.getResponse(shop.sessionkey) seller_memo = resp.get('trade_get_response', '').get('trade', '').get('seller_memo', '') if tid not in tid_memos.keys(): tid_memos[tid] = seller_memo req = TradeMemoUpdateRequest(shop.apiurl, port) error_list = [] _index = 1 for key in tid_memos.keys(): req.tid = key memo = ("%d. SZ-ERP downloaded. " % _index) + tid_memos[key] req.memo = memo # .encode("utf-8") _index += 1 resp = req.getResponse(shop.sessionkey) if not resp.get('trade_memo_update_response', ''): error_list.append(key)
def a_sync_stock_qty(self, cr, uid, ids, context=None): port = 80 shop = self.browse(cr, uid, ids[0], context=context) setDefaultAppInfo(shop.appkey, shop.appsecret) req = ItemsInventoryGetRequest(shop.apiurl, port) req.fields = "skus, num_iid, title, type, product_id, props_name, outer_id, barcode, sub_title, shop_type, price" #resp= req.getResponse(shop.sessionkey) #skus = resp.get('items_inventory_get_response',False).get('items',False).get('item', False) req.page_no = 1 req.page_size = 100 #req.is_ex = "true" req.is_taobao = "true" total_get = 0 total_results = 100 res = [] while total_get < total_results: resp = req.getResponse(shop.sessionkey) total_results = resp.get('items_inventory_get_response').get( 'total_results') if total_results > 0: res += resp.get('items_inventory_get_response').get( 'items').get('item') total_get += req.page_size req.page_no = req.page_no + 1 return res
def update_tmall_waybill(self, cr, uid, ids, context=None, salesorder=None): # port = 80 shop = self.browse(cr, uid, ids[0], context = context) setDefaultAppInfo(shop.appkey, shop.appsecret) req = LogisticsOfflineSendRequest(shop.apiurl,port) # HKERP -> LogisticsOfflineSendRequest SZ-ERP -> LogisticsOnlineSendRequest log = [] is_sent_list = [] for line in salesorder.order_line: tmi_jdi_no,coe_no,is_sent = line.tmi_jdi_no,line.coe_no, line.logistic_sent tmi_jdi_no = tmi_jdi_no.strip() express_no = coe_no and coe_no.name.strip() or '' if not tmi_jdi_no or not express_no or is_sent or tmi_jdi_no in is_sent_list: continue req.tid = tmi_jdi_no req.out_sid = express_no req.company_code = 'EMS' is_sent_list.append(tmi_jdi_no) try: resp= req.getResponse(shop.sessionkey) is_ok = resp.get('logistics_offline_send_response',{}).get('shipping', {}).get('is_success',False) if is_ok : coe_no.write({'logistic_sent':True, 'state':'done'}) except Exception, e: _logger.info("Jimmy:%s" % str(e)) log.append(line.tmi_jdi_no) # raise e # + '---' + str(e)
def search_orders_by_created_time(self, cr, uid, ids, context=None, status = []): port = 80 shop = self.browse(cr, uid, ids[0], context = context) partner_id = shop.partner_id.id setDefaultAppInfo(shop.appkey, shop.appsecret) req = TradesSoldGetRequest(shop.apiurl,port) req.fields="sid,tid,pay_time,created,buyer_nick,orders.num,orders.store_code,orders.num_iid,orders.sku_id,orders.oid, orders.total_fee,orders.payment,orders.outer_sku_id" req.type = "instant_trade,auto_delivery,guarantee_trade,tmall_i18n" ctx_end_time = context.get('end_time',False) end_time = ctx_end_time and (datetime.strptime(ctx_end_time, '%Y-%m-%d %H:%M:%S') + timedelta(hours=8)) or self.get_datetime_now() end_time_str = end_time.strftime('%Y-%m-%d %H:%M:%S') req.end_date = end_time_str req.status = 'WAIT_SELLER_SEND_GOODS' hours_interval = shop.sync_interval if not hours_interval : hours_interval = 24 ctx_start_time = context.get('start_time',False) start_time = ctx_start_time and ( datetime.strptime(ctx_start_time, '%Y-%m-%d %H:%M:%S') + timedelta(hours=8) ) start_time = start_time or ( end_time and (end_time - timedelta(hours=hours_interval)) ) or ( datetime.now() - timedelta(hours=hours_interval-8) ) start_time_str = start_time.strftime('%Y-%m-%d %H:%M:%S') req.start_date = start_time_str res = [] #if len(status) < 1: status.append( shop.tmi_state or 'WAIT_SELLER_SEND_GOODS') req.page_no = 1 req.page_size = 100 total_get = 0 total_results = 200 while total_get < total_results: resp= req.getResponse(shop.sessionkey) trades = resp.get('trades_sold_get_response').get('trades', False) total_results = resp.get('trades_sold_get_response').get('total_results') if total_results > 0: res += trades.get('trade') total_get += req.page_size req.page_no = req.page_no + 1 if total_results < 1: shop.last_log = u"时间:%s 在%d小时内没有状态:%s 的订单可下载" % (self.get_datetime_now_str(), shop.sync_interval, shop.tmi_state) return True time_filter = [] for result in res: created_time = datetime.strptime(result.get('created'), '%Y-%m-%d %H:%M:%S') if created_time <= end_time and created_time >= start_time : time_filter.append(result) orders = self.remove_duplicate_tmijdi_no(cr, uid, ids, time_filter, shop, context=context) normal_list, si_fang_list = self.search_orders_seller_memo(cr, uid, ids, context,orders) order_id = order_id2 = 0 if normal_list : order_id = self.create_order(cr, uid, ids, normal_list, context = context.update({'is_si_fang':True}) ) #if si_fang_list : order_id2 = self.create_order(cr, uid, ids, si_fang_list, context = context ) #if order_id or order_id2 : shop.write({'import_salesorder':order_id or order_id2}) if order_id : shop.write({'import_salesorder':order_id}) return order_id
def _search_product(self, cr, uid, ids, product_name = None, start_modified = None, end_modified = None, context=None): """ 1) 按商品名称,商品修改时间搜索店铺商品 2) start_modified、end_modified 都是UTC时间,需要加上8小时传给电商平台 """ shop_id = self.browse(cr, uid, ids[0], context= context) setDefaultAppInfo(shop_id.appkey, shop_id.appsecret) req = ItemsOnsaleGetRequest(shop_id.apiurl, 80) req.fields="approve_status,num_iid,title,nick,type,num,list_time,price,modified,delist_time,outer_id" if product_name: req.q = product_name req.page_no = 1 req.page_size = 100 total_get = 0 total_results = 100 res = [] while total_get < total_results: resp= req.getResponse(shop_id.sessionkey) total_results = resp.get('items_onsale_get_response').get('total_results') if total_results > 0: res += resp.get('items_onsale_get_response').get('items').get('item') total_get += req.page_size req.page_no = req.page_no + 1 # # 时间需要减去8小时 for r in res: r['modified'] = (datetime.strptime(r['modified'],'%Y-%m-%d %H:%M:%S',) - timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S') return res
def search_orders_seller_memo(self, cr, uid, ids, context=None, orders={}): port = 80 shop = self.browse(cr, uid, ids[0], context=context) partner_id = shop.partner_id.id setDefaultAppInfo(shop.appkey, shop.appsecret) req = TradeGetRequest(shop.apiurl, port) req.fields = "seller_memo" res = [] for order in orders: lines = order["orders"]["order"] is_baosui = False for line in lines: store_code = line.get('store_code') or '' if store_code not in ['loewie', '']: is_baosui = True break # 如果 是 天猫国际 保税仓发货 则跳过此订单 if is_baosui: continue req.tid = order["tid"] resp = req.getResponse(shop.sessionkey) seller_memo = resp.get('trade_get_response', '').get('trade', '').get('seller_memo', '') order['is_jaycee'] = seller_memo.find( u'jaycee订单') >= 0 or seller_memo.find(u'anja订单') >= 0 order['is_kevin'] = seller_memo.find( u'kevin订单') >= 0 or seller_memo.find(u'anja订单') >= 0 order['is_sz'] = seller_memo.find(u'深圳发货') >= 0 order['is_hk'] = seller_memo.find( u'香港发货') >= 0 or seller_memo.find(u'香港四方转运') >= 0 res.append(order) """ if order['is_jaycee'] or order['is_kevin'] or order['is_sz'] or order['is_hk'] or ids[0]==1 : continue # 如果是 天猫国内店铺(乐易成人用品专营店id==1)的订单 跳过 lines = order["orders"]["order"] for line in lines: store_code = line.get('store_code') or '' if store_code != 'loewie' : break # 如果 是 天猫国际 保税仓发货 则跳过此订单 sku_id = line.get('sku_id',False) or line.get('num_iid','') cr.execute("select id from product_tmalljd where ec_sku_id = '%s' limit 1" % sku_id) product_tmalljd_ids = 0 for i in cr.fetchall(): product_tmalljd_ids = i[0] if not product_tmalljd_ids: syncerr = u"订单导入错误: 匹配不到商品。tid=%s, 商品num_iid=%s, outer_sku_id=%s, sku_id=%s " % ( tid, line.get('num_iid', ''), line.get('outer_sku_id', ''), line.get('sku_id', '') ) raise osv.except_osv(u"ERP中不存在以下产品", syncerr) product_tmalljd_obj = self.pool.get('product.tmalljd').browse(cr, uid, product_tmalljd_ids, context = context) name_template = product_tmalljd_obj.erp_product_id.name_template if name_template.find("ml") < 1 : # 如果发现产品不是液体则HK-ERP不导入此订单,默认由深圳SZ-ERP发货 order['is_sz'] = True break """ return res
def search_orders_by_modified_time(self, cr, uid, ids, status = 'WAIT_SELLER_SEND_GOODS', date_start = None, date_end = None, context=None): port = 80 shop = self.browse(cr, uid, ids[0], context = context) partner_id = shop.partner_id.id setDefaultAppInfo(shop.appkey, shop.appsecret) req = TradesSoldIncrementGetRequest(shop.apiurl,port) req.fields="type,seller_nick,buyer_nick,created,sid,tid,status,buyer_memo,seller_memo,payment,discount_fee,adjust_fee,post_fee,total_fee, pay_time,end_time,modified,received_payment,price,alipay_id,receiver_name,receiver_state,receiver_city,receiver_district,receiver_address, receiver_zip,receiver_mobile,receiver_phone,orders.price,orders.num,orders.iid,orders.num_iid,orders.sku_id,orders.refund_status,orders.status,orders.oid, orders.total_fee,orders.payment,orders.discount_fee,orders.adjust_fee,orders.sku_properties_name,orders.outer_iid,orders.outer_sku_id" #req.status = status req.type = "instant_trade,auto_delivery,guarantee_trade,tmall_i18n" if shop.start_modified: #date_start = (datetime.strptime( shop.start_modified, '%Y-%m-%d %H:%M:%S',) + timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S') #req.start_modified = date_start req.start_modified = shop.start_modified if shop.end_modified: #date_end = (datetime.strptime( shop.end_modified, '%Y-%m-%d %H:%M:%S',) + timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S') #req.end_modified = date_end req.end_modified = shop.end_modified res = [] req.page_no = 1 req.page_size = 100 total_get = 0 total_results = 100 while total_get < total_results: resp= req.getResponse(shop.sessionkey) trades = resp.get('trades_sold_increment_get_response').get('trades', False) total_results = resp.get('trades_sold_increment_get_response').get('total_results') _logger.info("Jimmy total_results :%d" % total_results) if total_results > 0: res += trades.get('trade') total_get += req.page_size req.page_no = req.page_no + 1 _logger.info("Jimmy page_size :%d" % req.page_size) _logger.info("Jimmy total_get :%d" % total_get) # 时间需要减去8小时 # 单号加上店铺前缀 order_ids = [] for trade in res: trade['created'] = (datetime.strptime(trade['created'], '%Y-%m-%d %H:%M:%S',) - timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S') trade['pay_time'] = (datetime.strptime(trade.get('pay_time'), '%Y-%m-%d %H:%M:%S',) - timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S') trade['sale_code'] = '%s_%s' % (shop.code, trade.get('tid')) orders = self.remove_duplicate_orders(cr, uid, res, context=context) #orders = res for trade in orders: #try: # #_logger.info("Jimmy before create_order") #order_id = self.create_order(cr, uid, ids, trade, context = context ) order_id = self.create_order(cr, uid, ids, trade, context = context ) # _logger.info("Jimmy after create_order") # order_ids.append(order_id) #except Exception, e: # syncerr = u"店铺[%s]订单[%s]同步错误: %s" % (shop.name, trade['tid'], e) # self.pool.get('loewieec.error').create(cr, uid, {'name':syncerr, 'shop_id': shop.id}, context = context ) # continue return order_ids
def get_tmall_time(self, cr, uid, ids, context=None): shop = self.browse(cr, uid, ids[0], context=context) setDefaultAppInfo(shop.appkey, shop.appsecret) req = TimeGetRequest(shop.apiurl, 80) resp = req.getResponse(shop.sessionkey) ttime = resp.get('time_get_response').get('time', False) if ttime: shop.tmall_time = ttime return True
def sendcode(cellphone, code): top.setDefaultAppInfo('23313828', '9c58da786b40f4d74bed1a7fb32ab7a1') top.getDefaultAppInfo() a = top.api.AlibabaAliqinFcSmsNumSendRequest() a.sms_type = "normal" a.sms_free_sign_name = "登录验证" a.sms_param = { "code": code, "product": "穗源购物" } a.rec_num = cellphone a.sms_template_code = "SMS_5048722" a.getResponse()
def search_orders_by_tid(self, cr, uid, ids, context=None): port = 80 shop = self.browse(cr, uid, ids[0], context=context) partner_id = shop.partner_id.id setDefaultAppInfo(shop.appkey, shop.appsecret) req = TradeFullinfoGetRequest(shop.apiurl, port) #req.fields="type,seller_nick,buyer_nick,created,sid,tid,status,buyer_memo,seller_memo,payment,discount_fee,adjust_fee,post_fee,total_fee, pay_time,end_time,modified,received_payment,price,alipay_id,receiver_name,receiver_state,receiver_city,receiver_district,receiver_address, receiver_zip,receiver_mobile,receiver_phone,orders.price,orders.num,orders.iid,orders.num_iid,orders.sku_id,orders.refund_status,orders.status,orders.oid, orders.total_fee,orders.payment,orders.discount_fee,orders.adjust_fee,orders.sku_properties_name,orders.outer_iid,orders.outer_sku_id" req.fields = "type,receiver_name,receiver_state,receiver_city,receiver_district,receiver_address, receiver_zip,receiver_mobile,receiver_phone" req.tid = shop.authurl resp = req.getResponse(shop.sessionkey) trade = resp.get('trade_fullinfo_get_response').get('trade', False) return True
def get_losgistic_company_code(self, cr, uid, ids, context=None): # port = 80 shop = self.browse(cr, uid, ids[0], context = context) setDefaultAppInfo(shop.appkey, shop.appsecret) req = LogisticsCompaniesGetRequest(shop.apiurl,port) req.fields="id,code,name,reg_mail_no" req.order_mode="all" resp= req.getResponse(shop.sessionkey) companies = resp.get('logistics_companies_get_response').get('logistics_companies', False) comp_list = companies.get('logistics_company',False) return comp_list
def search_orders_by_tid(self, cr, uid, ids, context=None): port = 80 shop = self.browse(cr, uid, ids[0], context=context) partner_id = shop.partner_id.id setDefaultAppInfo(shop.appkey, shop.appsecret) req = TradeFullinfoGetRequest(shop.apiurl, port) req.fields = "type,receiver_name,receiver_state,receiver_city,receiver_district,receiver_address, receiver_zip,receiver_mobile,receiver_phone" req.tid = shop.authurl resp = req.getResponse(shop.sessionkey) trade = resp.get('trade_fullinfo_get_response').get('trade', False) return True
def update_waybill_no_tmall(self, cr, uid, ids, context=None): # LogisticsOfflineSendRequest port = 80 shop = self.browse(cr, uid, ids[0], context = context) setDefaultAppInfo(shop.appkey, shop.appsecret) req = LogisticsOfflineSendRequest(shop.apiurl,port) req.company_code="EMS" sale_id = shop.import_salesorder.id domain = [('order_id','=',sale_id)] coe_tmino = self.pool.get('sale.order.line').read_group(cr, uid, domain, ['tmi_jdi_no','coe_no'], ['product_id'], context=context) resp= req.getResponse(shop.sessionkey) companies = resp.get('logistics_companies_get_response').get('logistics_companies', False) comp_list = companies.get('logistics_company',False) return True
def search_orders_seller_memo(self, cr, uid, ids, context=None, orders={}): port = 80 shop = self.browse(cr, uid, ids[0], context=context) partner_id = shop.partner_id.id setDefaultAppInfo(shop.appkey, shop.appsecret) req = TradeGetRequest(shop.apiurl, port) req.fields = "seller_memo" for order in orders: req.tid = order["tid"] resp = req.getResponse(shop.sessionkey) seller_memo = resp.get('trade_get_response', '').get('trade', '').get('seller_memo', '') order['is_jaycee'] = seller_memo.find(u'jaycee订单') >= 0 return orders
def send_message(): phone = request.args.get('phone') if not phone: return xtjson.json_params_error(message=u'必须指定一个手机号码') if xtcache.get(phone): return xtjson.json_params_error(message=u'验证码已发送,60秒内有效') app_key = contants.APP_KEY app_secret = contants.APP_SECRET req = top.setDefaultAppInfo(app_key,app_secret) req = top.api.AlibabaAliqinFcSmsNumSendRequest() req.extend="" req.sms_type='normal' req.sms_free_sign_name = contants.ALIDAYU_SIGN_NAME graph_captcha = captcha.gene_text() req.sms_param = "{code:%s}"% graph_captcha req.rec_num = phone.decode('utf-8').encode('ascii') req.sms_template_code = contants.ALIDAYU_TEMPLATE_CODE try: resp = req.getResponse() xtcache.set(phone,graph_captcha) print xtcache.get(graph_captcha) return xtjson.json_result() except Exception,e: print e return xtjson.json_server_error()
def sms_captcha(request): telephone = request.GET.get('telephone') # 获取用户名,用于发送短信验证码显示用户名 if not telephone: return myjson.json_params_error(message=u'必须指定手机号码!') if cache.get(telephone): return myjson.json_params_error(message=u'验证码已发送,请1分钟后重复发送!') # if not username: # return myjson.json_params_error(message=u'必须输入用户名!') # 阿里大于APP_KEY及APP_SECRET app_key = settings.APP_KEY app_secret = settings.APP_SECRET req = top.setDefaultAppInfo(app_key, app_secret) req = toprequest.api.AlibabaAliqinFcSmsNumSendRequest() req.extend = "" req.sms_type = 'normal' # 签名名称 req.sms_free_sign_name = settings.SIGN_NAME # 随即生成字符串 captcha = Captcha.gene_text() # 设置短信的模板 req.sms_param = "{code:%s}" % captcha # req.sms_param = "{username:%s,code:%s}" % (username, captcha) req.rec_num = telephone.decode('utf-8').encode('ascii') req.sms_template_code = settings.TEMPLATE_CODE try: resp = req.getResponse() cache.set(telephone, captcha, 120) return myjson.json_result() except Exception, e: print e return myjson.json_server_error()
def search_product_sku(self, cr, uid, ids, num_iids=None, context=None): port = 80 shop = self.browse(cr, uid, ids[0], context = context) setDefaultAppInfo(shop.appkey, shop.appsecret) req = ItemSkusGetRequest(shop.apiurl,port) req.fields="sku_id, num_iid, properties, price, status, memo, properties_name, outer_id,quantity,barcode,change_prop,sku_spec_id,extra_id" if not num_iids : req.num_iids = shop.tokenurl else: req.num_iids = num_iids resp= req.getResponse(shop.sessionkey) skus = resp.get('item_skus_get_response').get('skus', False).get('sku',False) return skus
def load_configure(self): cfg = ConfigParser() cfg.read(assign_path, "utf-8") self.appkey = cfg.get("TBK", "appkey") self.secret = cfg.get("TBK", "secret") self.user_id = cfg.getint("TBK", "user_id") self.site_id = cfg.getint("TBK", "site_id") self.adzone_id = cfg.getint("TBK", "adzone_id") self.home_id = cfg.get("YNOTE", "home_id") self.test_item_id = cfg.getint("TBK", "test_item_id") self.test_finger_id = cfg.getint("TBK", "test_finger_id") self.uland_url = cfg.get("TBK", "uland_url") self.unlogin_id = cfg.get("YNOTE", "unlogin_id") self.cookie = cfg.get("YNOTE", "cookie")[1:-1] self.api_key = cfg.get("TBK", "apikey") self.assign_rec = cfg.get("YNOTE", "assign_email").split(",") cookie_de = decoder_cookie(self.cookie) self.cstk = cookie_de[self.CSTK_KEY] if self.CSTK_KEY in cookie_de else "" top.setDefaultAppInfo(self.appkey, self.secret)
def ali_cms(telephone, captcha): app_key = constants.ALIDAYU_APP_KEY app_secret = constants.ALIDAYU_APP_SECRET req = top.setDefaultAppInfo(app_key, app_secret) req = top.api.AlibabaAliqinFcSmsNumSendRequest() req.extend = "" req.sms_type = 'normal' req.sms_free_sign_name = constants.ALIDAYU_SIGN_NAME req.sms_param = constants.ALIDAYU_SMS_PARAMS % (captcha) req.rec_num = telephone.decode('utf-8').encode('ascii') req.sms_template_code = constants.ALIDAYU_TEMPLATE_CODE resp = req.getResponse() return resp
def update_tmi_jdi_no_state(self, cr, uid, ids, context=None): port = 80 shop = self.browse(cr, uid, ids[0], context=context) partner_id = shop.partner_id.id setDefaultAppInfo(shop.appkey, shop.appsecret) req = TradeGetRequest(shop.apiurl, port) req.fields = "seller_memo" res = [] for order in orders: lines = order["orders"]["order"] is_baosui = False for line in lines: store_code = line.get('store_code') or '' if store_code not in ['loewie', '']: is_baosui = True break # 如果 是 天猫国际 保税仓发货 则跳过此订单 if is_baosui: continue req.tid = order["tid"] resp = req.getResponse(shop.sessionkey) seller_memo = resp.get('trade_get_response', '').get('trade', '').get('seller_memo', '')
def search_orders_seller_memo(self, cr, uid, ids, context=None, orders = {}): port = 80 shop = self.browse(cr, uid, ids[0], context = context) partner_id = shop.partner_id.id setDefaultAppInfo(shop.appkey, shop.appsecret) req = TradeGetRequest(shop.apiurl,port) req.fields="seller_memo" normal_list = [] si_fang_list = [] for order in orders: req.tid = order["tid"] resp= req.getResponse(shop.sessionkey) seller_memo = resp.get('trade_get_response','').get('trade','').get('seller_memo','') order['is_si_fang'] = seller_memo.find(u'香港四方转运') >= 0 order['is_kevin'] = seller_memo.find(u'kevin订单') >= 0 or seller_memo.find(u'anja订单') >= 0 or seller_memo.find(u'jaycee订单') >= 0 order['is_hk'] = seller_memo.find(u'香港发货') >= 0 order['is_sz'] = seller_memo.find(u'深圳发货') >= 0 if order['is_si_fang'] : si_fang_list.append(order) continue normal_list.append(order) return normal_list, si_fang_list
def search_orders_by_created_time(self, cr, uid, ids, context=None, status=[]): port = 80 shop = self.browse(cr, uid, ids[0], context=context) partner_id = shop.partner_id.id setDefaultAppInfo(shop.appkey, shop.appsecret) req = TradesSoldGetRequest(shop.apiurl, port) req.fields = "sid,tid,orders.num,orders.store_code,orders.num_iid,orders.sku_id,orders.oid, orders.total_fee,orders.payment,orders.outer_sku_id" req.type = "instant_trade,auto_delivery,guarantee_trade,tmall_i18n" ctx_start_time = context.get('start_time', False) ctx_start_time = ctx_start_time and (datetime.strptime( ctx_start_time, '%Y-%m-%d %H:%M:%S') + timedelta(hours=8)) ctx_end_time = context.get( 'end_time', False) # datetime.strptime(string, "%Y-%m-%d-%H") ctx_end_time = ctx_end_time and datetime.strptime( ctx_end_time, '%Y-%m-%d %H:%M:%S') + timedelta(hours=8) req.end_date = ctx_end_time and ctx_end_time.strftime( '%Y-%m-%d %H:%M:%S') or self.get_datetime_now() hours_interval = shop.sync_interval if not hours_interval: hours_interval = 24 req.start_date = ctx_start_time or ( ctx_end_time and (ctx_end_time - timedelta(hours=hours_interval) ).strftime('%Y-%m-%d %H:%M:%S')) or (datetime.now() - timedelta( hours=hours_interval - 8)).strftime('%Y-%m-%d %H:%M:%S') res = [] if len(status) < 1: status.append(shop.tmi_state or 'WAIT_SELLER_SEND_GOODS') for order_status in status: req.status = order_status req.page_no = 1 req.page_size = 100 total_get = 0 total_results = 100 while total_get < total_results: resp = req.getResponse(shop.sessionkey) trades = resp.get('trades_sold_get_response').get( 'trades', False) total_results = resp.get('trades_sold_get_response').get( 'total_results') _logger.info("Jimmy total_results :%d" % total_results) if total_results > 0: res += trades.get('trade') total_get += req.page_size req.page_no = req.page_no + 1 if total_results < 1: shop.last_log = u"在%d小时内没有状态:%s 的订单可下载" % (shop.sync_interval, shop.tmi_state) return True orders = self.remove_duplicate_tmijdi_no(cr, uid, ids, res, shop, context=context) marked_orders = self.search_orders_seller_memo(cr, uid, ids, context, orders) order_id = self.create_order(cr, uid, ids, marked_orders, context=context) self.create_sz_salesorder_tmi(cr, uid, ids, marked_orders, context=context) if order_id: shop.import_salesorder = order_id return order_id
__author__ = 'xlrtx' import top import config as config top.setDefaultAppInfo(config.top['key'], config.top['secret']) # top kek
def search_orders_by_created_time(self, cr, uid, ids, date_start=None, date_end=None, status='WAIT_SELLER_SEND_GOODS', context=None): port = 80 shop = self.browse(cr, uid, ids[0], context=context) partner_id = shop.partner_id.id setDefaultAppInfo(shop.appkey, shop.appsecret) req = TradesSoldGetRequest(shop.apiurl, port) req.fields = "type,seller_nick,buyer_nick,created,sid,tid,status,buyer_memo,seller_memo,payment,discount_fee,adjust_fee,post_fee,total_fee, pay_time,end_time,modified,received_payment,price,alipay_id,receiver_name,receiver_state,receiver_city,receiver_district,receiver_address, receiver_zip,receiver_mobile,receiver_phone,orders.price,orders.num,orders.iid,orders.num_iid,orders.sku_id,orders.refund_status,orders.status,orders.oid, orders.total_fee,orders.payment,orders.discount_fee,orders.adjust_fee,orders.sku_properties_name,orders.outer_iid,orders.outer_sku_id" req.status = shop.tmi_state req.type = "instant_trade,auto_delivery,guarantee_trade,tmall_i18n" hours_interval = shop.sync_interval if hours_interval: hours_interval -= 8 else: hours_interval = 16 req.start_created = ( datetime.now() - timedelta(hours=hours_interval)).strftime('%Y-%m-%d %H:%M:%S') req.end_created = (datetime.now() + timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S') res = [] req.page_no = 1 req.page_size = 100 total_get = 0 total_results = 100 while total_get < total_results: resp = req.getResponse(shop.sessionkey) trades = resp.get('trades_sold_get_response').get('trades', False) total_results = resp.get('trades_sold_get_response').get( 'total_results') _logger.info("Jimmy total_results :%d" % total_results) if total_results > 0: res += trades.get('trade') total_get += req.page_size req.page_no = req.page_no + 1 if total_results < 1: shop.last_log = u"在%d小时内没有状态:%s 的订单可下载" % (shop.sync_interval, shop.tmi_state) return True # 时间需要减去8小时 # 单号加上店铺前缀 order_ids = [] for trade in res: trade['created'] = (datetime.strptime( trade.get('created'), '%Y-%m-%d %H:%M:%S', ) - timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S') trade['pay_time'] = (datetime.strptime( (trade.get('pay_time', False) or '2016-01-01 00:00:01'), '%Y-%m-%d %H:%M:%S', ) - timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S') #orders = self.remove_duplicate_orders(cr, uid, res, context=context) #for trade in orders: orders = self.remove_duplicate_tmijdi_no(cr, uid, ids, res, shop, context=context) order_id = self.create_order(cr, uid, ids, orders, context=context) shop.import_salesorder = order_id return order_id
def __init__(self): top.setDefaultAppInfo("21206983", "2b7aa50061dcc3aba1a5777b55d89085") self.session = '6201812c38514ee9fddace5eeZZee6f8aee063af7653a82894689296'
import re from urllib.request import urlretrieve from datetime import datetime import threading import os import top current_path = os.path.dirname(os.path.abspath(__file__)) appkey = 24822866 secret = '9ef7c4a3efc58c0312b9b3f6e8d974db' adzone_id = 317500099 url = 'eco.taobao.com' port = '80' top.setDefaultAppInfo(appkey, secret) # 通过淘宝客API搜索优惠券 def get_tk_coupon(kw,size): req = top.api.TbkDgItemCouponGetRequest() req.set_app_info(top.appinfo(appkey, secret)) req.adzone_id = adzone_id req.platform = 2 req.page_size = size req.q = kw req.page_no = 1 try: resp = req.getResponse() for r in resp['tbk_dg_item_coupon_get_response']['results']['tbk_coupon']: coupon_url = r['coupon_click_url']