1. 주요 ACTION 코드가 포함된 쓸모 없는 패키지를 제거할 수 있습니다.
it.sauronsoftware.base64.Base64를 가져옵니다.
import java.io.IOException;
import java.io.PrintWriter;
java.net.HttpURLConnection 가져오기;
java.util.HashMap 가져오기;
java.util.Map 가져오기;
import java.util.ResourceBundle;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
org.dom4j.Document 가져오기;
org.springframework.stereotype.Controller 가져오기;
com.alibaba.fastjson.JSON 가져오기;
com.hzdracom.action.BaseAction을 가져옵니다.
com.hzdracom.config.AlipayConfig 가져오기;
com.hzdracom.util.AlipaySubmit 가져오기;
com.hzdracom.util.HTTPService를 가져옵니다.
com.hzdracom.util.UtilDate를 가져옵니다.
import com.hzlq.source.security.DESUtil;
/*
* Alipay 결제 인터페이스
* @author ZhuangZi
* @방향
* @version $Id: AliPayAction.java,v 0.1 2013-3-27 04:49:57 PM ZhuangZi Exp $
*/
@제어 장치
공개 클래스 AliPayAction은 BaseAction {을 확장합니다.
개인 문자열 전화코드;
개인 문자열 총 수수료;
/**
* Alipay 인터페이스에 전화
* @author ZhuangZi
* @class com.hzdracom.alipay.action.AliPayAction
* @method 알리페이
* @Directions는 Alipay 인터페이스를 호출합니다.
* @날짜 2013-3-27 04:53:35 오후 void
*/
공공 무효 지불() {
노력하다 {
/*1****시간을 밀리초 단위로 기준으로 Alipay 거래 번호를 생성합니다*/
String out_trade_no = UtilDate.getOrderNum();
/*2*****↓↓↓↓↓↓↓↓↓↓↓요청 매개변수를 배열로 압축↓↓↓↓↓↓↓↓↓↓*/
Map<String, String> sParaTemp = new HashMap<String, String>();
sParaTemp = getPayPrama(totalfee, out_trade_no);
/*3*****↓↓↓↓↓↓↓↓↓↓Alipay 인터페이스 요청 ↓↓↓↓↓↓↓↓↓↓*/
String json = AlipaySubmit.buildRequest(sParaTemp, "get", "confirm");
HttpServletResponse 응답 = ServletActionContext.getResponse();
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter 출력;
출력 = response.getWriter();
json = JSON.toJSONString(json);
out.write(json);
out.flush();
종료.닫기();
} 잡기(IOException e) {
}
}
/**
*
* @author ZhuangZi
* @class com.hzdracom.alipay.action.AliPayAction
* @method GetPayPrama
* @Directions는 Alipay 호출 매개변수를 캡슐화합니다.
* @date 2013-4-1 05:26:11 오후
* @param 총 수수료 금액
* @param out_trade_no 주문번호
* @return 맵<문자열,문자열>
*/
public Map<String, String> getPayPrama(String totalfee, String out_trade_no) {
Map<String, String> sParaTemp = new HashMap<String, String>();
sParaTemp.put("service", "create_direct_pay_by_user");
sParaTemp.put("파트너", AlipayConfig.partner);
sParaTemp.put("_input_charset", AlipayConfig.input_charset);
sParaTemp.put("지불_유형", AlipayConfig.지불_유형);
/*서버 비동기 알림 페이지 경로 //http:// 형식의 전체 경로가 필요하며 ?id=123과 같은 사용자 정의 매개변수를 추가할 수 없습니다.*/
sParaTemp.put("notify_url", AlipayConfig.notify_url);
/*페이지 이동 동기화 알림 페이지 경로//http:// 형식의 전체 경로가 필요합니다. ?id=123과 같은 사용자 정의 매개변수는 추가할 수 없으며 http://localhost/*/로 쓸 수 없습니다.
sParaTemp.put("return_url", AlipayConfig.return_url);
/*판매자의 Alipay 계정*/
sParaTemp.put("seller_email", AlipayConfig.seller_email);
/*판매자 주문 번호*/
sParaTemp.put("out_trade_no", out_trade_no);
/*주문 이름*/
sParaTemp.put("subject", AlipayConfig.subject);
/*결제금액*/
sParaTemp.put("total_fee", totalfee);
/*주문 설명*/
sParaTemp.put("body", AlipayConfig.body);
/*http://로 시작하는 전체 경로가 필요합니다. 예: http://www.xxx.com/myorder.html*/
sParaTemp.put("show_url", AlipayConfig.show_url);
//피싱 방지 타임스탬프
sParaTemp.put("anti_phishing_key", AlipayConfig.anti_phishing_key);
/*클라이언트의 IP 주소는 다음과 같은 LAN의 외부 IP 주소가 아닙니다: 221.0.0.1*/
sParaTemp.put("exter_invoke_ip", AlipayConfig.exter_invoke_ip);
sParaTemp를 반환합니다.
}
공개 문자열 getPhoneCode() {
전화코드 반환;
}
공공 무효 setPhoneCode(문자열 전화 코드) {
this.phoneCode = 전화코드;
}
공개 문자열 getTotalfee() {
총 수수료 반환;
}
공공 무효 setTotalfee(문자열 totalfee) {
this.totalfee = 총수수료;
}
}
2. AlipayConfig 클래스는 Alipay 인터페이스 매개변수를 캡슐화합니다.
com.hzdracom.util.UtilDate를 가져옵니다.
/* *
*클래스 이름: AlipayConfig
*기능: 기본 구성 클래스
*세부사항: 계정 관련 정보 및 반환 경로 설정
*버전: 3.3
*날짜: 2012-08-10
*설명:
*다음 코드는 판매자 테스트를 용이하게 하기 위해 제공되는 샘플 코드일 뿐입니다. 판매자는 자체 웹사이트의 필요에 따라 기술 문서에 따라 작성할 수 있으며 이 코드를 사용할 필요는 없습니다.
*이 코드는 Alipay 인터페이스 학습 및 연구용으로만 제공되며 참고용으로만 제공됩니다.
*팁: 보안 인증 코드 및 파트너 ID를 얻는 방법
*1. 계약된 Alipay 계정을 사용하여 Alipay 웹사이트(www.alipay.com)에 로그인하세요.
*2. "판매자 서비스"(https://b.alipay.com/order/myOrder.htm)를 클릭하세요.
*3. "파트너 신원 조회(PID)" 및 "보안 인증 코드(키) 조회"를 클릭하십시오.
*보안인증번호 조회시 결제비밀번호 입력 후 페이지가 회색으로 바뀌는데 어떻게 해야 하나요?
*해결책:
*1. 브라우저 구성을 확인하고 브라우저가 글머리 기호 상자를 차단하도록 허용하지 마십시오.
*2. 브라우저나 컴퓨터를 변경한 후 다시 로그인하여 문의하세요.
*/
공개 클래스 AlipayConfig {
//↓↓↓↓↓↓↓↓↓↓여기에서 기본 정보를 구성하세요↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// 파트너 ID, 2088로 시작하는 16자리 문자열
공개 정적 문자열 파트너 = "2088001466494907";
// 판매자의 개인키
공개 정적 문자열 키 = "fb30213vjc4k4oabt7z4q9e07sfmlmzr";
//↑↑↑↑↑↑↑↑↑↑여기에서 기본 정보를 구성하세요↑↑↑↑↑↑↑↑↑↑↑↑↑↑
//디버깅을 위해 TXT 로그 폴더 경로를 생성합니다.
공개 정적 문자열 log_path = "D://";
//현재 문자 인코딩 형식은 gbk 또는 utf-8을 지원합니다.
공개 정적 문자열 input_charset = "utf-8";
// 서명 방법을 수정할 필요가 없습니다.
공개 정적 문자열 sign_type = "MD5";
공개 정적 문자열 지불_유형 = "1";
//필수사항이며 수정할 수 없습니다.
//서버 비동기 알림 페이지 경로
공개 정적 문자열 inform_url = "notify_url.jsp";
//http:// 형식의 전체 경로가 필수이며, ?id=123 등의 맞춤 매개변수를 추가할 수 없습니다.
//페이지 점프 동기화 알림 페이지 경로
공개 정적 문자열 return_url = "return_url.jsp";
//http:// 형식의 전체 경로가 필요합니다. ?id=123과 같은 사용자 정의 매개변수는 추가할 수 없으며 http://localhost/는 추가할 수 없습니다.
//판매자의 Alipay 계정
공개 정적 문자열 Seller_email = "[email protected]";
//필수의
//판매자 주문 번호
공개 정적 문자열 out_trade_no =UtilDate.getOrderNum();
//판매자 웹사이트 주문 시스템의 유일한 주문 번호입니다. 필수입니다.
//주문 이름
public static String subject = "숨겨진 계정 충전";
//필수의
//주문 설명
public static String body = "숨겨진 계정 재충전";
//상품 표시 주소
공개 정적 문자열 show_url = "";
//피싱 방지 타임스탬프
공개 정적 문자열 anti_phishing_key="";
/*클라이언트의 IP 주소는 다음과 같은 LAN의 외부 IP 주소가 아닙니다: 221.0.0.1*/
공개 정적 문자열 exter_invoke_ip="";
}
3. 스트럿 구성 파일
<작업 이름="지불" 방법="지불">
</액션>
위 내용은 키코드 부분입니다.
1. 선반 패키지를 포함하여 Alipay에서 제공하는 인터페이스의 여러 클래스를 프로젝트에 도입해야 합니다.
2. inform_url.jsp, return_url.jsp 주소는 외부 네트워크 주소의 전체 경로가 되도록 준비해야 한다.
3. inform_url.jsp에 자신만의 비즈니스 처리를 작성하거나 Alipay 인터페이스를 호출하는 인터페이스를 직접 작성할 수 있습니다.