에스크로 배송완료 등록 요청 시 해시 데이터 불일치 오류
안녕하세요.
에스크로 배송완료 등록을 할 때,
기존에는 productid를 보내지 않고 수행했고, 이때는 OK로 정상응답 받다가
productid를 추가하니 해시 데이터가 불일치한다고 에러가 발생합니다.
어떻게 개선할 수 있나요??
FAIL : 실패FAIL : hashdata 불일치 >hashdata : -e46096af80001dab4508f9cd6c3a13fd- >hashdata2 : -828a36d31007a5d65666081e4053f377- >hashdata3 : tmokpohlpih;8641337255;01;202401101910;"
[에스크로 사용 함수]
def toss_escrow_delivery(self, validated_data):
mid = settings.TOSSPAYMENTS_MID
mertkey = settings.TOSS_MERT_KEY
dlvtype = "01"
order_item = validated_data.get("order_item")
order = order_item.delivery_item.order
order_number = order.order_number
orderdate = order.created_at.strftime("%Y%m%d%H%M")
# Hashing
rcvdate = validated_data.get("rcvdate")
rcvname = validated_data.get("rcvname")
rcvrelation = validated_data.get("rcvrelation")
hashdata = hashlib.md5(
f"{mid}{order_number}{dlvtype}{rcvdate}{mertkey}".encode()
).hexdigest()
# OK 응답 수신
str_url = f"{self.service_url}?mid={mid}&oid={order_number}&dlvtype={dlvtype}&rcvdate={rcvdate}&rcvname={rcvname}&rcvrelation={rcvrelation}&hashdata={hashdata}&orderdate={orderdate}"
# FAIL
# str_url = f"{self.service_url}?mid={mid}&oid={order_number}&productid={order_item.id}&dlvtype={dlvtype}&rcvdate={rcvdate}&rcvname={rcvname}&rcvrelation={rcvrelation}&hashdata={hashdata}&orderdate={orderdate}"
response = requests.get(str_url)
if response.text.strip() == "OK":
return response.text.strip()
else:
raise CustomValidationError(
{
"data": f"{order_item.product_name} 상품의 배송 완료 등록에 실패하였습니다. 에러 메시지 : {response.text.strip()}"
}
)
에스크로 배송완료 등록을 할 때,
기존에는 productid를 보내지 않고 수행했고, 이때는 OK로 정상응답 받다가
productid를 추가하니 해시 데이터가 불일치한다고 에러가 발생합니다.
어떻게 개선할 수 있나요??
FAIL : 실패FAIL : hashdata 불일치 >hashdata : -e46096af80001dab4508f9cd6c3a13fd- >hashdata2 : -828a36d31007a5d65666081e4053f377- >hashdata3 : tmokpohlpih;8641337255;01;202401101910;"
[에스크로 사용 함수]
def toss_escrow_delivery(self, validated_data):
mid = settings.TOSSPAYMENTS_MID
mertkey = settings.TOSS_MERT_KEY
dlvtype = "01"
order_item = validated_data.get("order_item")
order = order_item.delivery_item.order
order_number = order.order_number
orderdate = order.created_at.strftime("%Y%m%d%H%M")
# Hashing
rcvdate = validated_data.get("rcvdate")
rcvname = validated_data.get("rcvname")
rcvrelation = validated_data.get("rcvrelation")
hashdata = hashlib.md5(
f"{mid}{order_number}{dlvtype}{rcvdate}{mertkey}".encode()
).hexdigest()
# OK 응답 수신
str_url = f"{self.service_url}?mid={mid}&oid={order_number}&dlvtype={dlvtype}&rcvdate={rcvdate}&rcvname={rcvname}&rcvrelation={rcvrelation}&hashdata={hashdata}&orderdate={orderdate}"
# FAIL
# str_url = f"{self.service_url}?mid={mid}&oid={order_number}&productid={order_item.id}&dlvtype={dlvtype}&rcvdate={rcvdate}&rcvname={rcvname}&rcvrelation={rcvrelation}&hashdata={hashdata}&orderdate={orderdate}"
response = requests.get(str_url)
if response.text.strip() == "OK":
return response.text.strip()
else:
raise CustomValidationError(
{
"data": f"{order_item.product_name} 상품의 배송 완료 등록에 실패하였습니다. 에러 메시지 : {response.text.strip()}"
}
)
