six_001
This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
import datetime
|
||||
|
||||
import jmespath
|
||||
import orjson
|
||||
import requests
|
||||
from django.core.handlers.wsgi import WSGIRequest
|
||||
from rest_framework import status
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.request import Request
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.routers import SimpleRouter
|
||||
from rest_framework.viewsets import ViewSet
|
||||
|
||||
from wechat_第三方接口.顺丰物流.顺丰参数 import sfToken
|
||||
|
||||
|
||||
class SF顺丰业务接口ViewSets(ViewSet):
|
||||
|
||||
@action(detail=False, methods=["get", "post", "put", "delete"], url_path="order_create")
|
||||
def 快递下订单接口(self, request: WSGIRequest | Request):
|
||||
"""
|
||||
:param request:
|
||||
:return:
|
||||
"""
|
||||
print('============')
|
||||
|
||||
requestID = f"SF{datetime.date.strftime(datetime.datetime.now(), format="%Y%m%d%H%M%S%f")}"
|
||||
|
||||
accessToken = sfToken()
|
||||
沙箱环境 = f"https://sfapi-sbox.sf-express.com/std/service"
|
||||
sftimestamp = str(int(datetime.datetime.now().timestamp()))
|
||||
cargoDetails托寄物信息 = [{"name": "物品", "count": 1}]
|
||||
寄件人 = {
|
||||
"contactType": 1,
|
||||
"company": "1",
|
||||
"contact": "元宝",
|
||||
"mobile": "13800138000",
|
||||
"country": "CN",
|
||||
"province": "江苏省",
|
||||
"city": "泰州市",
|
||||
"county": "海陵区",
|
||||
"address": "城西街道任景路603号"
|
||||
}
|
||||
收件人 = {
|
||||
"contactType": 2,
|
||||
"company": "2",
|
||||
"contact": "大帅",
|
||||
"mobile": "13800138001",
|
||||
"country": "CN",
|
||||
"province": "四川省",
|
||||
"city": "成都市",
|
||||
"county": "新都区",
|
||||
"address": "桂湖街道一社16号"
|
||||
}
|
||||
msgData = {
|
||||
# 响应报文的语言,缺省值为zh-CN
|
||||
"language": "zh-CN",
|
||||
"parcelQty": 1,
|
||||
# 客户订单号,重复使用订单号时返回第一次下单成功时的运单信息
|
||||
"orderId": f"SFOD{datetime.datetime.strftime(datetime.datetime.now(), "%Y%m%d%H%M%S%f")}",
|
||||
# 托寄物信息
|
||||
"cargoDetails": cargoDetails托寄物信息,
|
||||
"contactInfoList": [寄件人, 收件人],
|
||||
"isReturnRoutelabel": 1,
|
||||
"isGenWaybillNo": 1,
|
||||
"payMethod": 1,
|
||||
"isDocall": 0,
|
||||
"monthlyCard": "7551234567"
|
||||
}
|
||||
formData = {
|
||||
"serviceCode": "EXP_RECE_CREATE_ORDER",
|
||||
"accessToken": accessToken,
|
||||
"timestamp": sftimestamp,
|
||||
"partnerID": "MDSKJJ1KDLJN",
|
||||
"requestID": requestID,
|
||||
"msgData": orjson.dumps(msgData).decode(encoding="utf-8")
|
||||
}
|
||||
response_data = requests.post(
|
||||
url=沙箱环境, data=formData,
|
||||
headers={"Content-Type": "application/x-www-form-urlencoded", },
|
||||
)
|
||||
apiResultData = jmespath.search(data=response_data.json(), expression="apiResultData")
|
||||
return Response(data=orjson.loads(apiResultData), status=status.HTTP_200_OK)
|
||||
|
||||
@action(detail=False, methods=["get", "post", "put", "delete"], url_path="order_update")
|
||||
def 订单确认取消接口(self, request: WSGIRequest | Request):
|
||||
"""
|
||||
:param request:
|
||||
:return:
|
||||
"""
|
||||
uri = f"https://sfapi-sbox.sf-express.com/std/service"
|
||||
accessToken = sfToken()
|
||||
sftimestamp = str(int(datetime.datetime.now().timestamp()))
|
||||
requestID = datetime.datetime.strftime(datetime.datetime.now(), "%Y%m%d%H%M%S%f")
|
||||
msgData = {
|
||||
"dealType": 1,
|
||||
"orderId": "SFOD20251126214101523682",
|
||||
# "totalHeight": 29.98,
|
||||
# "totalLength": 29.98,
|
||||
# "totalVolume": 26946.035992000005,
|
||||
# "totalWeight": 2.09,
|
||||
# "totalWidth": 29.98,
|
||||
"waybillNoInfoList": [
|
||||
{
|
||||
"waybillNo": "SF7444700285553",
|
||||
"waybillType": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
formData = {
|
||||
"serviceCode": "EXP_RECE_UPDATE_ORDER",
|
||||
"accessToken": accessToken,
|
||||
"timestamp": sftimestamp,
|
||||
"partnerID": "MDSKJJ1KDLJN",
|
||||
"requestID": requestID,
|
||||
"msgData": orjson.dumps(msgData).decode(encoding="utf-8")
|
||||
}
|
||||
response_data = requests.post(
|
||||
url=uri, data=formData,
|
||||
headers={"Content-Type": "application/x-www-form-urlencoded", "charset": "UTF-8"},
|
||||
)
|
||||
print(response_data.json(), "=========")
|
||||
res = response_data.json()
|
||||
apiResultData = jmespath.search(data=res, expression="apiResultData")
|
||||
apiResultData = orjson.loads(apiResultData)
|
||||
return Response(data=apiResultData, status=status.HTTP_200_OK)
|
||||
|
||||
@action(detail=False, methods=["get", "post", "put", "delete"], url_path="order_search_resp")
|
||||
def 订单结果查询接口(self, request: WSGIRequest | Request):
|
||||
"""
|
||||
:param request:
|
||||
:return:
|
||||
"""
|
||||
uri = f"https://sfapi-sbox.sf-express.com/std/service"
|
||||
accessToken = sfToken()
|
||||
sftimestamp = str(int(datetime.datetime.now().timestamp()))
|
||||
requestID = datetime.datetime.strftime(datetime.datetime.now(), "%Y%m%d%H%M%S%f")
|
||||
msgData = {
|
||||
"searchType": "1",
|
||||
"orderId": "SFOD20251126214101523682",
|
||||
"language": "zh-cn"
|
||||
}
|
||||
formData = {
|
||||
"serviceCode": "EXP_RECE_SEARCH_ORDER_RESP",
|
||||
"accessToken": accessToken,
|
||||
"timestamp": sftimestamp,
|
||||
"partnerID": sfID,
|
||||
"requestID": requestID,
|
||||
"msgData": orjson.dumps(msgData).decode(encoding="utf-8")
|
||||
}
|
||||
response_data = requests.post(
|
||||
url=uri, data=formData,
|
||||
headers={"Content-Type": "application/x-www-form-urlencoded", "charset": "UTF-8"},
|
||||
)
|
||||
res = response_data.json()
|
||||
apiResultData = jmespath.search(data=res, expression="apiResultData")
|
||||
apiResultData = orjson.loads(apiResultData)
|
||||
return Response(data=apiResultData, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
SF顺丰业务接口ViewSetsRouter = SimpleRouter()
|
||||
SF顺丰业务接口ViewSetsRouter.register(prefix="", viewset=SF顺丰业务接口ViewSets, basename="")
|
||||
Reference in New Issue
Block a user