示例#1
0
def service_reason(
    headers,
    apply_type,
    order_id,
    item_id=None,
    project_code=44030011,
):
    url = '/aftersales/service/goods'
    try:
        log.info('service_reason() --> begin , order_id --> %s ' % order_id)
        if apply_type not in [
                'REFUNDONLY', 'RETURNPRODUCTANDREFUND', 'CHANGEPRODUCT'
        ]:
            log.error(
                f'can only [REFUNDONLY, RETURNPRODUCTANDREFUND, CHANGEPRODUCT] ,but [{apply_type}]'
            )
            return
        if not item_id:
            item_info = order_item.order_item(order_id=order_id)
            item_id = item_info['id']
        params = {
            'project_code': project_code,
            'order_id': order_id,
            'item_id': item_id,
            'type': apply_type
        }
        resp = request(method='get',
                       headers=headers,
                       url=host + url,
                       params=params)
        return resp
    except Exception as e:
        log.error('service_detail() failed :', e)
示例#2
0
def service_logistics(headers,
                      order_id,
                      item_id=None,
                      service_id=None,
                      project_code=44030011):
    url = '/aftersales/goods/logistics'
    try:
        log.info('service_logistics() --> begin , order_id --> %s ' % order_id)
        if not item_id:
            item_info = order_item.order_item(order_id=order_id)
            item_id = item_info['id']
            service_id = item_info['current_service']
        data = {
            "project_code": project_code,
            "order_id": order_id,
            "item_id": item_id,
            "after_service_id": service_id,
            "express_company_code": "SHUNFENG",
            "tracking_number": "123456abc",
            "imgs": []
        }
        resp = request(method='post',
                       headers=headers,
                       url=host + url,
                       json=data)
        return resp
    except Exception as e:
        log.error('service_logistics() failed :', e)
示例#3
0
def goods_detail(goods_id, project_code=44030025):
    url = f'/goods/info/{goods_id}'
    params = {'project_code': project_code}
    log.info('method : goods_detail() --> begin')
    resp = request(method='get', url=host + url, params=params)
    log.info('method : goods_detail() --> end')
    return resp
示例#4
0
def get_service_reason(project_code, order_id, service_type):
	url = '/aftersales/service/goods'
	item_id = order_item(order_id=order_id, key='id')
	params = {'project_code': project_code, 'order_id': order_id, 'item_id': item_id, 'type': service_type}
	log.info('method : get_service_reason() --> begin ')
	result = request(method='get', url=host + url, params=params)
	log.info('method : get_service_reason() --> end ')
	return result
示例#5
0
def service_get_logistics(headers, order_id, project_code='44030011'):
	# 获取物流公司
	url = '/aftersales/logistics/info'
	service_id = order_item(order_id=order_id, key='current_service')
	params = {'project_code': project_code, 'order_id': order_id, 'service_id': service_id}
	log.info('method : service_get_logistics() --> begin')
	resp = request(method='get', headers=headers, url=host + url, params=params)
	log.info('method : service_get_logistics() --> end')
	return resp
示例#6
0
def service_list(order_id, project_code='44030011'):
	# 售后详情
	url = '/aftersales/services/list'
	item_id = order_item(order_id=order_id, key='id')
	params = {'project_code': project_code, 'order_id': order_id, 'item_id': item_id}
	log.info('method : service_list() --> begin')
	resp = request(method='get', url=host + url, params=params)
	log.info('method : service_list() --> end')
	return resp
示例#7
0
def get_sms(phone=110):  # 手机号
    log.info('method : get_sms() --> begin')
    res = request(method='get', url=host_sms)
    sms_phone = int(res.json().get('body')[-1].get('phone'))
    if sms_phone == phone:
        sms_info = res.json().get('body')[-1].get('msg')  # 最新的一条信息
        sms = re.findall('\d+', sms_info)[0]  # 从msg获取手机验证码
        log.info('method : get_sms() --> end -- > sms : %s' % sms)
    else:
        print(phone, 'do not receive any sms, check please first ')
        return None
    return int(sms)
示例#8
0
def get_bind_id(headers, pay_info):
    # 支付token(bind_id)
    url = '/cards'
    params = {'token': pay_info}
    log.info('method : get_bind_id() --> begin')
    res = request(method='get',
                  url=host_pay + url,
                  params=params,
                  headers=headers)
    log.info('method : get_bind_id() --> end')
    bind_id = res.json().get('result').get('cards')[0].get('bind_id')
    return bind_id
示例#9
0
def get_pay_token(headers, bind_id, pay_info):
    # 支付触发验证码
    url = '/pay'
    data_quick_pay = {
        "bind_id": bind_id,
        "token": pay_info,
    }
    log.info('method : get_pay_token() --> begin')
    res = request(method='post',
                  url=host_pay + url,
                  headers=headers,
                  json=data_quick_pay)
    log.info('method : get_pay_token() --> end')
    quick_pay_token = res.json().get('result').get('quick_pay_token')
    return quick_pay_token
示例#10
0
def get_pay_info(headers, payment_id):
    # 快捷支付方式获取支付信息
    url = '/payment/pay'
    open_id = get_open_id(headers)
    pay_data = {
        "order_id": payment_id,
        "pay_method": "hundsun_quick_pay",
        "user_id": open_id,
    }
    log.info('method : get_pay_info() --> begin --> payment_id : %s' %
             payment_id)
    res = request(method='post',
                  url=host + url,
                  headers=headers,
                  json=pay_data)
    log.info('method : get_pay_info() --> end')
    pay_info = res.json().get('result').get('pay_info')
    return pay_info
示例#11
0
def input_logistics(headers, order_id, project_code='44030011', express_company='YUANTONG', express_no='0000001'):
	# 填写回寄的快递单
	url = '/aftersales/goods/logistics'
	item_id = order_item(order_id=order_id, key='id')
	service_id = order_item(order_id=order_id, key='current_service')
	data = {
		"project_code": project_code,
		"order_id": order_id,
		"item_id": item_id,
		"after_service_id": service_id,
		"express_company_code": express_company,
		"tracking_number": express_no,
		"imgs": []
	}
	log.info('method : return_logistics_info() --> begin')
	resp = request(method='post', headers=headers, url=host + url, json=data)
	log.info('method : return_logistics_info() --> end')
	return resp
示例#12
0
def service_cancel(headers, order_id, item_id=None, project_code=44030011):
    url = '/aftersales/service/cancel/service_id'
    try:
        log.info('service_detail() --> begin , order_id --> %s ' % order_id)
        detail_resp = service_detail(headers=headers,
                                     order_id=order_id,
                                     item_id=item_id,
                                     project_code=project_code)
        service_id = detail_resp.json().get('result').get('after_service_id')
        url2 = url.replace('service_id', str(service_id))
        data = {"project_code": project_code}
        resp = request(method='post',
                       headers=headers,
                       url=host + url2,
                       data=data)
        return resp
    except Exception as e:
        log.error('service_cancel() failed :', e)
示例#13
0
def service_detail(headers, order_id, item_id=None, project_code=44030011):
    url = '/aftersales/services/list'
    try:
        log.info('service_detail() --> begin , order_id --> %s ' % order_id)
        if not item_id:
            item_info = order_item.order_item(order_id=order_id)
            item_id = item_info['id']
        params = {
            "project_code": project_code,
            "order_id": order_id,
            "item_id": item_id
        }
        resp = request(method='get',
                       headers=headers,
                       url=host + url,
                       params=params)
        return resp
    except Exception as e:
        log.error('service_detail() failed :', e)
示例#14
0
def confirm_pay(headers, pay_info, quick_pay_token, sms):
    url = '/confirm_sms'
    data = {
        'sms_code': sms,
        'quick_pay_token': quick_pay_token,
        'token': pay_info,
    }
    log.info('method : confirm_pay() --> begin')
    res = request(method='post',
                  url=host_pay + url,
                  headers=headers,
                  json=data)
    log.info('method : confirm_pay() --> end')
    if res.status_code == 200:
        transaction_id = res.json().get('result').get('transaction_id')
        log.info(
            f'method : confirm_pay() --> transaction_id : {transaction_id}')
        return transaction_id
    else:
        pass
示例#15
0
def apply_service(headers, order_id, project_code=44030052, service_type='REFUNDONLY'):
	# 申請售後 ,RETURNPRODUCTANDREFUND--退货退款  CHANGEPRODUCT--换货  REFUNDONLY--仅退款
	resp_result = get_service_reason(project_code=project_code, order_id=order_id, service_type=service_type)
	if resp_result.json().get('result') == '不支持的售后类型':
		log.error('method get_service_reason() occurred error ,method apply_service(): run over')
		return
	else:
		reason = resp_result.json().get('result').get('after_service_reason')[0].get('value')  # 默认获取第一个原因
	url = '/aftersales/service/apply'
	# 判断发起的售后是否合理
	order_status = orders(order_id=order_id, key='order_status')
	if order_status in ('PAID', 'DELIVERED', 'RECEIVED'):
		if order_status == 'PAID' and service_type != 'REFUNDONLY':
			log.error(f'order_status : {order_status} ,can not apply service : {service_type}')
			return
	else:
		log.error(
			f'only order_status in [PAID, DELIVERED, RECEIVED] can apply service ,current order_status : {order_status}')
		return
	item = order_item(order_id=order_id, key='id')
	item_price = int(order_item(order_id=order_id, key='price') * 100)
	item_qty = order_item(order_id=order_id, key='quantity')
	shipping = int(orders(order_id=order_id, key='shipping') * 100)
	if service_type == 'REFUNDONLY':
		price = item_price * item_qty + shipping
	else:
		price = item_price * item_qty
	data = {
		"project_code": project_code,
		"type": service_type,
		"order_id": order_id,
		"item_id": item,
		"imgs": [],
		"after_service_reason": reason,
		"illustration": "Test",
		"price": price
	}
	log.info('method : apply_service() --> begin')
	resp = request(method='post', url=host + url, headers=headers, json=data)
	log.info('method : apply_service() --> end')
	return resp
示例#16
0
def donor_ranking(headers):
    url = '/statistics/sunshine/donors'
    log.info('method : donor_ranking() --> begin')
    resp = request('get', host + url, headers=headers)
    log.info('method : donor_ranking() --> end')
    return resp
示例#17
0
def service_apply(headers,
                  order_id,
                  project_code=44030011,
                  apply_type='RETURNPRODUCTANDREFUND',
                  item_id=None):
    url = '/aftersales/service/apply'
    log.info('service_apply() --> begin , order_id --> %s ' % order_id)
    try:
        # apply_type类型和原因
        my_apply = {
            'REFUNDONLY': 'NOTRECEIVED',
            'RETURNPRODUCTANDREFUND': 'DELIVERYMISTAKE',
            'CHANGEPRODUCT': 'QUALITYPROBLEM'
        }
        if apply_type in my_apply.keys():
            after_service_reason = my_apply.get(apply_type)
        else:
            log.error(
                'only [REFUNDONLY,RETURNPRODUCTANDREFUND,CHANGEPRODUCT] can select'
            )
            return
        # 获取item_id、item_status、单价、数量,并设置申请退款金额(全额)
        if not item_id:
            item = order_item.order_item(order_id=order_id)
            item_id = item['id']
            item_status = item.get('item_status')
            item_price = item.get('price')
            item_qty = item.get('quantity')
            price = int(item_price * 100) * item_qty
        else:
            item = order_item.order_item(order_id=order_id, item_id=item_id)
            item_status = item.get('item_status')
            item_price = item.get('price')
            item_qty = item.get('quantity')
            price = int(item_price * 100) * item_qty
        # 根据item_status判断发起的售后是否合理
        if item_status in ('PAID', 'DELIVERED', 'RECEIVED'):
            if item_status == 'PAID' and apply_type != 'REFUNDONLY':
                log.error(
                    f'item_status : [PAID] can not apply service : [REFUNDONLY]'
                )
                return
            elif item_status in ('DELIVERED',
                                 'RECEIVED') and apply_type not in (
                                     'RETURNPRODUCTANDREFUND',
                                     'CHANGEPRODUCT'):
                log.error(
                    f'only item_status : [PAID] can not apply service : [REFUNDONLY] , but current item_status :{item_status}'
                )
                return
        else:
            log.error(
                f'only item_status in [PAID, DELIVERED, RECEIVED] can apply service ,current item_status : {item_status}'
            )
            return
        data = {
            "project_code": project_code,
            "type": apply_type,
            "order_id": order_id,
            "item_id": item_id,
            "imgs": [],
            "after_service_reason": after_service_reason,
            "illustration": "Test",
            "price": price
        }
        resp = request(method='post',
                       headers=headers,
                       url=host + url,
                       json=data)
        if resp.status_code == 200 and resp.json().get('code') == 0:
            log.info('service_apply() success')
            return resp
        else:
            log.error('service_apply() failed --> ' + resp.text)
    except Exception as e:
        log.error('service_apply() failed :', e)