Nodejs 백 엔 드 위 챗 결제 결과 비동기 알림 처리
3919 단어 node. js 백 엔 드
이전 글 에는 애플 릿 백 엔 드 에서 위 챗 결 제 를 호출 하 는 내용 이 적 혀 있 으 며, 오늘 은 위 챗 백 엔 드 의 비동기 푸 시 결 과 를 백 엔 드 에 어떻게 처리 하 는 지 알려 드 립 니 다.[위 챗 공식 결제 결과 알림 설명]
위 챗 결제 백 스테이지 푸 시 결제 결 과 는 바로 위 챗 백 스테이지 에서 우리 가 결제 할 때 위 챗 백 스테이지 에 보 낸 알림 주소 notifyUrl 을 호출 하여 결제 결과 데 이 터 를 우리 자신의 백 엔 드 에 보 내 고 백 엔 드 에서 데 이 터 를 분석 하여 논리 적 으로 처리 하 는 것 입 니 다.
우리 가 해 야 할 일 은 백 엔 드 에 결제 결과 알림 을 작성 하 는 처리 방법 입 니 다. 경로 조작 을 잘 쓰 고 메 시 지 를 받 은 주 소 를 위 챗 백 엔 드 에 보 내 면 됩 니 다.
2. 지불 결과 통지 처리 방법
알림 결과 에 대한 처리 난점 은 위 챗 백 엔 드 가 데이터 흐름 으로 데 이 터 를 되 돌려 주 는 동시에 그 가 되 돌려 주 는 데이터 형식 은 XML 형식 이 고 주어진 형식 으로 위 챗 백 엔 드 에 피드백 메 시 지 를 보 내야 한 다 는 점 이다. 위 챗 백 엔 드 가 피드백 메 시 지 를 받 지 못 하면 일정 시간 마다 알림 을 보 낼 것 이다.애플 릿 에서 지불 결과 조 회 를 편리 하 게 하기 위해 서, 우 리 는 지불 결 과 를 로 컬 에 통지 하여 저장 해 야 한다.
주의: 이곳 의 반환 결 과 는 위 챗 백 스테이지 에 되 돌아 오 는 것 이지 애플 릿 에 보 내 는 것 이 아 닙 니 다.
여기 서 request. on () 방법 으로 데이터 흐름 을 읽 고 xml 형식의 데 이 터 를 읽 습 니 다.WXPayInfoModel 은 사용자 정의 알림 결과 데이터 시트 로 MongoDB 데이터 베 이 스 를 사용 하여 데이터 관 리 를 합 니 다.참조 코드:
wxPayNotify = (req: Request, res: Response) => {
req.setEncoding("utf8");
try {
req.on("data", function (xml, call) {
xmlreader.read(xml, (err, result) => {
if (null !== err) {
console.log(err);
return;
}
if (result.xml.return_code.text() === "SUCCESS") {
const data = {
appid: result.xml.appid.text(),
mch_id: result.xml.mch_id.text(),
nonce_str: result.xml.nonce_str.text(),
sign: result.xml.sign.text(),
return_code: result.xml.return_code.text(),
result_code: result.xml.result_code.text(),
openid: result.xml.openid.text(),
is_subscribe: result.xml.is_subscribe.text(),
trade_type: result.xml.trade_type.text(),
bank_type: result.xml.bank_type.text(),
total_fee: result.xml.total_fee.text(),
cash_fee: result.xml.cash_fee.text(),
transaction_id: result.xml.transaction_id.text(),
out_trade_no: result.xml.out_trade_no.text(),
time_end: result.xml.time_end.text(),
type: "notify info"
}
const payInfo = new WXPayInfoModel(data);
payInfo.save();
const formData = `
`
return res.send(formData);
}
else {
const formData = `
`
return res.send(formData);
}
});
});
req.on("end", function (db) {
db;
});
}
catch (err) {
console.log(err);
}
}
3. 총화
결제 결과 알림 의 처 리 는 전체적으로 괜 찮 은 편 이 고 어렵 지 않 았 습 니 다. 그 당시 에 문서 설명 을 잘 보지 못 해서 알림 데 이 터 를 읽 는 데 시간 이 걸 렸 습 니 다. 처음에 데이터 흐름 의 형식 으로 데 이 터 를 되 돌려 주 는 것 이 라 고 생각 하지 못 했 습 니 다. 느낌 이 이상 합 니 다. 똑 같이 위 챗 결제 의 일부 기능 인 데 왜 데 이 터 를 되 돌려 주 는 형식 이 다 릅 니까?