위챗 결제는 엔터프라이즈급 프로젝트에서 자주 사용되는 기능입니다. 백엔드 개발자는 이 기술을 완전히 숙지해야 합니다.
로고; 심볼
I. 신청 절차 및 단계
그림 1-1
위챗 페이 계정 등록, 위챗 애플릿 APPID 획득, 위챗 판매자 ID 획득, 위챗 판매자 API 개인 키 획득, 위챗 페이 콜백 주소 구성, 위챗 애플릿을 위챗 페이에 바인딩, 스프링부트 프로젝트 빌드
그림 1-1
위챗 페이 계정 등록, WeChat 애플릿 획득.
둘째, 기업 등록
2.1 판매자 플랫폼
. 판매자 또는 기업이 WeChat Pay를 통해 상품을 판매하려면 가장 먼저 해야 할 일은 WeChat 플랫폼을 통해 판매자를 등록하는 것입니다. 등록에 성공하면 계정 정보, 기업 정보 등을 포함한 기업 정보 및 기타 인터페이스가 나타납니다. 그림 2-1과 같이
그림 2-1
2.2 판매자 아이디
판매자 아이디는 프로젝트 개발에서 고유 ID이며, WeChat Pay가 모든 판매자 또는 비즈니스에 부여하는 고유 ID입니다. 또한 고객이 WeChat Pay를 불러올 수 있는 자격 증명 중 하나입니다.
그림 2-1은 판매자 아이디를 보여줍니다.
셋. API 개인 키판매자를 성공적으로 등록한 후에는 WeChat 플랫폼에서 API 개인 키를 설정할 수도 있습니다. 그림 3-1에 표시된 것처럼
그림 3-1
API 개인 키는 결제 키라고도 합니다. 사용자가 WeChat Pay를 불러올 때 백엔드에는 판매자 ID와 API 키가 필요합니다.
넷째, 판매자는 WeChat Pay 상품에 가입합니다
판매자는 주로 다음과 같은 필요에 따라 WeChat Pay 상품에 가입할 수 있습니다.
JSAPI 결제:판매자는 WeChat Pay를 호출하여 JSAPI 인터페이스를 제공하고, 결제 시나리오에서 수집을 완료하려면 WeChat Pay 모듈을 호출해야 합니다; 기본 결제:판매자 시스템은 WeChat 결제 프로토콜에 따라 결제 QR 코드를 생성하고 사용자는 WeChat quotcanquot를 사용하여 결제 방법을 완료합니다. 소액 절차 결제:친구에게 공유하거나 WeChat에서 QR 코드를 스캔하여 WeChat 결제를 호출하여 주문 프로세스를 완료 할 수 있습니다. 결제 코드 결제:사용자가 WeChat 지갑에 바코드와 QR 코드를 제시하고 판매자는 사용자의 바코드를 스캔하여 결제를 완료합니다. 스 와이프 얼굴 결제:사용자는 WeChat의 얼굴 스와이프 결제 SDK와 통합된 오프라인 장치에서 얼굴 스와이프를 사용할 수 있습니다.
그림 4-1
Verb(동사의 약자) 콜백 주소 구성
결제 콜백 주소는 WeChat 결제 서버가 사용자에게 결제 정보를 반환하는 주소입니다. 판매자가 WeChat 애플릿 제품에 가입하는 경우 결제 콜백 주소를 구성하거나 구성하지 않을 수 있습니다. 이 주소는 회사의 도메인 이름이거나 구성되지 않은 주소입니다.
여섯째, 애플릿은 APPID를 얻어야 합니다.
우선 공식 웹사이트에서 등록해야 합니다.
그림 6-1
등록이 성공하면 애플릿의 고유 APPID를 얻을 수 있습니다.
그림 6-2와 같이
그림 6-2
일곱째, WeChat Payment는 애플릿에 바인드됩니다.
WeChat Payment 플랫폼에서 그림 7-1과 같이 APPID를 바인딩합니다.
그림 7-1
VIII.실무 부분
8.1 부트 스트랩 점핑 프레임 워크 구축
우선, 초기 부트 스트랩 프로젝트를 생성하고 프로젝트 / 모듈의 자원 폴더에 속성 / yml 구성 파일을 작성하고 개발 환경과 생산 환경 구성 파일에는 서버, 데이터베이스, 스프링, 토큰, 로깅, 시간대, json 형식, mybatis-plus, swagger, redis, 서버 구성, WeChat 애플릿 구성 및 기타 글로벌 통합 구성도 포함되어야 하며, 구성 파일에는 개발 환경과 운영 환경이 분리되어 있어야 합니다. 백엔드 인터페이스 컨트롤러의 프로젝트 인프라, 프론트엔드 데이터와 상호 작용하는 클라우드 서버의 구성, 스웨거의 구성, 인터페이스 인터셉터의 구성, 도메인 인터페이스의 구성 WeChat 결제 구성 및 공통사항ajaxresultsbasentity페이지 필수 매개 변수, 매퍼매퍼 파일 인터페이스 서비스:곰 컨트롤러 계층 인터페이스 메서드 정의.Impl:인터페이스별 구현 로직.Utils 파일 도구 클래스Json 도구 클래스시간 형식 도구 클래스제3자 로그인 도구 클래스
8.2 WeChat 결제 관련 인터페이스
8.2.1 애플릿 사용자 로그인 인터페이스
. 먼저, 사용자가 애플릿에 로그인하고 인터페이스를 호출하여 가져올 수 있도록 WeChat 사용자에게 권한을 부여해야 합니다. 사용자의 로그인 상태 정보는 현재 애플릿의 고유 식별자, 사용자의 고유 식별자 및 이 로그인을 위한 세션 키를 포함한 자격 증명을 통해 교환될 수 있습니다.
구체적인 로그인 프로세스는 그림 8-1에 나와 있습니다:
그림 8-1
이 시점에서 서버 인터페이스가 호출되고 요청 파라미터는 그림 8-2에 나와 있습니다:
그림 8-2
로그인 후 사용자가 반환한 파라미터는 그림 8-3에 나와 있습니다:
그림 8-3
8.2.2 통합 주문 인터페이스
통합 주문 인터페이스는 사용자가 애플릿에 로그인하고 애플릿 페이지에서 결제 요청을 불러올 때 호출됩니다.
결제 요청을 불러올 때 주문 인터페이스의 매개변수에는 두 가지 부분이 필요합니다. 하나는 판매자 및 애플릿과 관련된 openid 및 appid이고, 다른 하나는 상품과 관련된 가격, 이름, 수량 및 기타 매개변수입니다.
다음 코드는 WeChat 결제 인터페이스에 대해 자세히 설명합니다. 이 코드는 REST 스타일 API 인터페이스 형식으로 작성되었습니다.
통합 주문 인터페이스
@ apioperation @ requestmapping public Ajax 결과 통합 주문 {// 애플릿 사용자 로그인 확인 // 데이터베이스에서 주문 정보 조회 // 미결제 주문만 결제 시작 가능 // 미결제 구매 시 $0 /* * 판매자 및 애플릿 관련 요청 파라미터 설정 * */ /get appid 문자열 appid = wxmauil.getappid; WxPayUnifiedOrderRequest WxPayUnifiedOrderRequest = new WxPayUnifiedOrderRequest; 설정 앱아이디 // 항목 이름 문자열 body = sysorderscourt . get courname; body = body.length 40? body . substring:body; wxpayunifieorderequest. set body; //주문 번호 wXPayUnifiedOrder 요청. setOutTradeNo); //주문 금액 wxpayunifiedorequest . settotalfee . 곱하기). int value); // 거래 유형 wxpayunifiedorequest . settradetype; // 결제 콜백 주소 wxpayunifiedorequest . setnotifyurl # 039; /wx/API/order/notify-order); wxpayunifiederrequest . setpbillcreateip // 현재 애플릿에 있는 사용자의 고유 식별자 wxpayunifiedorrequest . setopenid); // 호출 위챗 서비스 클래스 wxPayService 호출 wxPayService = wxPayConfiguration. getPayService 반환 ajaxresult. 성공); }
8.2.3 주문 화면 생성
주문 화면 생성
사용자가 제품 페이지에서 제품을 주문하면 사용자가 제품을 구매할 수 있는 주문이 생성됩니다.
프로세스는 인터페이스를 통해 사용자 정보, 상품 정보 및 기타 파라미터를 요청하고 논리적 판단을 거쳐 새 주문을 생성한 후 주문에 필요한 데이터를 반환하는 순서로 진행됩니다.
@ API 작업 @ 요청 매핑 공개 Ajax 결과 생성 { //WeChat 사용자 정보 //동일한 상품을 구매했는지 판단합니다. 그렇다면 새 주문을 생성할 수 없습니다 // 조건이 충족되면 데이터베이스에 데이터를 삽입합니다 wxOrderResponse wxOrderResponse = orderservice . add; // 추가에 실패하면 { return Ajax result. will return error; } return ajaxresult. success; }
8.2.4 주문 취소 인터페이스
주문 취소 인터페이스
사용자가 WeChat 결제를 불러올 때 결제 인터페이스를 클릭하여 결제를 취소하면 해당 작업은 주문 결제 취소로 간주되며 주문 화면에 주문의 결제 상태가 표시됩니다.
인터페이스는 주문 ID를 요청 파라미터로 받아 먼저 데이터베이스에 주문 정보가 있는지 확인한 다음 취소할 수 있는 주문 유형을 제한하고 마지막으로 데이터베이스 테이블 상태를 업데이트할 수 있습니다.
@ API 작업 @ 요청 매핑 공개 Ajax 결과 취소 {//주문에 sys 주문이 있는지 확인 sys 주문 = sysorderservice . get byid; if{Ajax 결과 반환. Error; }// 미결제 주문만 취소 가능 if){return Ajax result. error, MyReturnCode. err _ 70001. getmsg); } sysordersservice. 주문 취소; return ajaxresult. success; }
주문 상세 화면
주문 세부 정보 인터페이스
주문이 생성된 후 사용자는 페이지에서 주문의 세부 정보를 볼 수 있습니다.
이 인터페이스는 주문 ID를 사용하여 데이터베이스에서 세부 정보를 가져올 수 있으며, 이 페이지에 표시되는 데이터는 비즈니스 요구 사항에 따라 결정됩니다.
@ API 작업 @ 요청 매핑 @ apiplicitparams })공개 * * * Ajax 결과 myorderDetail{//detail 매개변수 데이터베이스의 sysorderdetailresponse =. sysorderservice . get detail; return ajaxresult. success; } 주문 상세 로직
/* * * 주문 상세 페이지 매개변수 처리 * @ paramorderid * @ 반환 sysorderdetail 응답 */@ override public sysorderdetail 응답 get detail { sysorderdetail 응답 sysorderdetail 응답 = 주문 매퍼 . get detail; // 프로세스 페이지 문자열 전화 번호 전화 번호 = sysorderdetailresponse의 전화 번호. substring); // 주문 상태에 따라 다른 데이터를 표시합니다. // 남은 결제 시간을 계산하고 반환된 sysOrderDetailResponse를 표시합니다}
8.2.6 결제 콜백 인터페이스
위챗 결제 콜백은 사용자가 결제 후 WeChat 서버로 데이터를 전송하면, WeChat 서버가 사용자와 판매자에게 결제 결과를 반환하는 프로세스입니다.
주요 관심사 중 하나는 사용자 결제-WeChat 콜백 판단-데이터베이스 수정 프로세스입니다.
결제 콜백 인터페이스
@ API 작업@ 요청 매핑 공개 * * * * 문자열 알림 주문 wxPayException { log.info/// wechat 결제 서비스 wxpayservice wxpayservice =. wxpayconfiguration. getpayserviceWxPayOrderNotifyResult notifyResult = wxpayservice .parseordernotifyresult 로그. 메시지; // 생성된 주문 시스템에 대한 결제 주문 시스템 주문 = 주문 서비스. Get one); if {if. 곱하기). int 값 == 결과 알림. gettotalfee) {stringtimeend = 결과 알림. gettime 종료 현지 날짜 시간 결제 시간 = 현지 날짜 시간 유틸리티. Analyse; // 결제 시간 sysOrders.setPaymentTime 시스템 주문. setorderamount); // 마이크로 소프트 주문 번호 시스템 주문. settransactionid); // 데이터베이스 주문 서비스를 업데이트합니다. NotifyOrder; 로그. 정보); 반환 wxpaynotifyresponse. 성공; } else { 반환 wxpaynotifyresponse . Failure; } } else { return wxpaynotifyresponse . Failure; }} 여기서 notifyOrder 메서드는 결제 성공 후 데이터베이스의 주문 상태를 업데이트하는 데 사용됩니다.
NotifyOrder 메서드
@ 오버라이드 @ 트랜잭션 ***void notifyOrder { //미결제 주문, 즉 is_pay 필드가 0인 주문만 작동 가능 if){//주문 결제 상태 시스템 주문을 업데이트합니다. 상태 설정); 시스템 주문 매퍼. byid 업데이트; //제품 목록 상태 업데이트 //주문 라이프사이클 테이블 업데이트}} 이제 스프링 부트 위챗 페이먼트 전체 프로세스가 공유되었습니다. 부족한 부분이 있으면 수정해 주세요.
킹스하트 2를 클릭하여 사용해 보세요.