Nodejs 백 엔 드 위 챗 결제 결과 비동기 알림 처리

3919 단어 node. js 백 엔 드
Nodejs 백 엔 드 위 챗 결제 결과 비동기 알림 처리
  • 1. 머리말
  • 2. 지불 결과 통지 처리 방법
  • 3. 총화
  • 머리말
    이전 글 에는 애플 릿 백 엔 드 에서 위 챗 결 제 를 호출 하 는 내용 이 적 혀 있 으 며, 오늘 은 위 챗 백 엔 드 의 비동기 푸 시 결 과 를 백 엔 드 에 어떻게 처리 하 는 지 알려 드 립 니 다.[위 챗 공식 결제 결과 알림 설명]
    위 챗 결제 백 스테이지 푸 시 결제 결 과 는 바로 위 챗 백 스테이지 에서 우리 가 결제 할 때 위 챗 백 스테이지 에 보 낸 알림 주소 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. 총화
    결제 결과 알림 의 처 리 는 전체적으로 괜 찮 은 편 이 고 어렵 지 않 았 습 니 다. 그 당시 에 문서 설명 을 잘 보지 못 해서 알림 데 이 터 를 읽 는 데 시간 이 걸 렸 습 니 다. 처음에 데이터 흐름 의 형식 으로 데 이 터 를 되 돌려 주 는 것 이 라 고 생각 하지 못 했 습 니 다. 느낌 이 이상 합 니 다. 똑 같이 위 챗 결제 의 일부 기능 인 데 왜 데 이 터 를 되 돌려 주 는 형식 이 다 릅 니까?

    좋은 웹페이지 즐겨찾기