1. Alipay의 문서는 비교적 읽기 쉽습니다. 주로 제가 보고 있는 DEMO는 JAVA-UTF-8 버전입니다.
2. DEMO를 가져와 해당 파트너를 입력하고 com.alipay.config(해당 판매자 백엔드에서 얻음)를 입력하면 결제 프로세스를 직접 실행하고 이해할 수 있습니다.
3. 다시 작성: 여기서는 springmvc+mybatis를 사용하고 있습니다. 제품이 구매(Alipay로 결제)를 시작하고 Alipay로 이동하며 Alipay가 결제 상태를 다시 호출합니다.
1. 제품 구매 요청을 시작합니다(DEMO 페이지를 직접 사용).
[javascript] 일반 보기 복사
class
class
class
class
"16px" src="img/little_qrcode.jpg" id="licode" >
class
class
class
"img/guanzhu_qrcode.png" width="80">
/& lt;/p & gt; 하단: 5px;" & gt;
중요한 정보 수신 t & lt;/p & gt;
& lt;/p & gt;
& lt;/p & gt; & lt;/p & gt;
class
class
"https://www.alipay.com/" class="logo">" img/alipay_logo.png" height="30px">
class="pier">
"http://open.alipay.com/platform/home.htm" class="open" 대상 =" _blank">开放平台
class
="navbar">
class
class
class
"_blank"> > p>
class
class
class
p
= "etitle"
>참고: 제품 이름(제목 ) 필수(중국어, 영어, 숫자 권장, 특수문자 포함 불가)
ㅋㅋ >& lt; pclass =
& & gt; (형식: 1.00, 제발, 제발, 제발, 제발, 제발, 제발, 제발, 제발, 제발, 제발 가장 가까운 분까지 정확함)class="제목" >제품 설명:
name="WIDbody" id= "위드바디" value=
"즉시 신용 테스트"
& gt; 결제 확인">
class
class
"http://ab.alipay.com/i/index.htm" target="_blank">关于支付宝 |
"https://e.alipay.com/index.htm" target="_blank">商家中心|스팬>
"https://job.alibaba.com/zhaopin/index.htm" target="_blank">诚征英才 a> ;|
"http://ab.alipay.com/i/lianxi.htm" target="_blank">联系我们
"#" id="international" target="_blank">국제 비즈니스< ;/a>|
"http://ab.alipay.com/i/jieshao.htm#en" target="_blank">Alipay 정보> ;
支付宝版权所有
class="footer-date">2004-2016
"http://fun.alipay.com/certificate/jyxkz.htm" target="_blank">ICP 설명:沪B2-20150087
"2. 결제 확인을 클릭한 후 ajax를 통해 백그라운드를 요청하고 반환된 html 코드를 위의
에 직접 입력하면 자동으로 양식이 생성됩니다. 제출된.copy
$(
(){
$("#sbumitBtn" ).on(
, function
(){
,
데이터 : {
WIDout_trade_no : $('#out_trade_no').val(),
WIDsubject: $('#WIDsubject'). val(),
WIDtotal_fee : $('#WIDtotal_fee').val(),
WIDbody : $('#WIDbody').val( )
},
url : "${ctx}/aliPay/open",
성공 : function(데이터) {
$('#returnAli').append(data.sHtmlText);
},
오류: function(da){
}
})
})
});
3. 데모의 alipayapi.jsp를 기본적으로 직접 사용하고 있으며, 반환 방식은 에 따릅니다. apringmvc 요구 사항 및 미지급 상태의 주문 정보는 비즈니스 요구에 따라 저장됩니다.
[javascript] 일반 보기 복사
@RequestMapping("open")
public ResponseEntity open(모델 모델, String WIDout_trade_no, String WIDsubject, String WIDtotal_fee,
String WIDbody) {
///////////////////////////////////// 요청 매개변수/ ////// ///////////////////////////
// 판매자 웹사이트 주문 시스템의 유일한 주문 번호인 판매자 주문 번호, 필수
String out_trade_no = WIDout_trade_no;
// 주문 이름, 필수 //
String subject = WIDsubject;
// 결제 금액, 필수
//제품 설명, 비어 있을 수 있음
String body = WIDbody;
// 요청 매개변수를 배열로 압축합니다.
지도< ;String, String> sParaTemp =
newsParaTemp.put(
"service"sParaTemp.put("partner", AlipayConfig.partner);
sParaTemp.put("seller_id", AlipayConfig.seller_id);
sParaTemp.put("_input_charset", AlipayConfig.input_charset);
sParaTemp.put("지불_유형", AlipayConfig.지불_유형);
sParaTemp.put("notify_url", AlipayConfig.notify_url);
sParaTemp.put("return_url", AlipayConfig.return_url);
sParaTemp.put("anti_phishing_key", AlipayConfig.anti_phishing_key);
sParaTemp.put("exter_invoke_ip", AlipayConfig.exter_invoke_ip);
sParaTemp.put("out_trade_no", out_trade_no);
sParaTemp.put("subject", subject);
sParaTemp.put("total_fee", total_fee);
sParaTemp.put("body", body);
// 기타 비즈니스 매개변수는 온라인 개발 문서에 따라 추가됩니다: https://doc.open. alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.O9yorI&treeId=62&articleId=103740&docType=1
// sParaTemp .put("매개변수 이름","매개변수 값 ");
String sHtmlText = AlipaySubmit.buildRequest(sParaTemp, "get", "확인"
);model.addAttribute("sHtmlText",sHtmlText)
hysWebMeetingAliService.insertSelective(sPara 임시);
return newResponseEntity(model, HttpStatus.OK)
}
4. 콜백: 또한 DEMO의 inform_url.jsp에서 Java 코드를 직접 가져와 약간 수정하고 비즈니스 코드(상태 수정 등)를 추가했습니다.
@ResponseBody
public
String inform(HttpServletRequest request){
//POST을 통해 Alipay로부터 피드백 받기
Map
Map requestParams = request.getParameterMap();
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
문자열 이름 =(문자열) iter.next() ;
String[] values = (String[]) requestParams.get(name);
문자열 valueStr = "";
for (int i = 0; i
valueStr = (i == values.length - 1) ? valueStr + 값[i]
: valueStr + 값[i] + ",";
}
//잘못된 코드 해결 방법, 이 코드는 잘못된 문자가 나타날 때 사용됩니다. mysign과 sign이 같지 않으면 이 코드를 사용하여
//valueStr = new String(valueStr.getBytes("ISO-8859-1"), "gbk")로 변환할 수도 있습니다. ;
params.put(name, valueStr)
}
)
문자열 trade_no = request.getParameter (
"trade_no"
String trade_status = request.getParam eter("trade_status");
/Get Alipay의 알림 반환 매개변수를 참조하세요. 기술적인 페이지 점프 문서 동기 알림 매개변수 목록 (위 내용은 참고용임) //
if(AlipayNotify.verify(params)){//확인 성공
///// ///////////////////////////////////////////////// /////////////////////////////
//가맹점의 비즈니스 로직 프로그램 코드를 여기에 추가해주세요
ㅋㅋ 가맹점 홈페이지에서 주문이 처리되었는지 여부
做 没有 // 처리되지 않은 경우 주문번호(OUT_TRADE_NO)에 따라 가맹점 홈페이지의 주문시스템에서 주문내역을 확인하실 수 있습니다 그리고 판매자의 비즈니스 프로그램을 구현하세요 //요청 시 total_fee 및 Seller_id가 알림 시 얻은 total_fee 및 Seller_id와 일치하는지 확인하세요. ㅋㅋㅋ // 환불 날짜가 환불 기간(예: 3개월)을 초과한 후 Alipay 시스템에서 거래 상태 알림을 보냅니다
~ // 가맹점 웹사이트에서 주문이 접수되었는지 확인 처리되지 않은 경우, 처리되지 않은 경우 가맹점 웹사이트의 주문 시스템에서 주문 내역을 다음 절차에 따라 확인합니다. 주문 번호(out_trade_no) 및 가맹점의 업무 프로그램 수행必 务 // 요청 시 TOTAL_FEE, SELLER_ID 및 Total_fee, Seller_ID를 반드시 확인하시기 바랍니다. 업무 절차
订 // 주문번호에 따라 주문상태 및 Alipay 기록표가 유료로 변경되었습니다
~
~
}else
ㅋㅋ
///////////// //////////////////////// ///////////////////////////////////////////////// //////
}else
//확인 실패
//out.print("f 아프다");
"실패";
}
5. return_url: 페이지 이동 동기화 알림 페이지 경로는 결제 성공 후 Alipay가 다시 이동하는 페이지입니다. "http:// 형식의 전체 경로가 필요하며, ?id=123 등의 맞춤 매개변수를 추가할 수 없습니다. 외부 네트워크에 정상적으로 접근할 수 있어야 합니다." 알리페이에서는 반송되는 페이지 이후에는 맞춤 매개변수를 추가할 수 없다고 명확히 규정하고 있습니다. 등이 있기 때문에 우리 중 일부는 일부 유형을 기준으로 점프를 판단하는 것이 약간 번거롭습니다. 여기에 트릭을 적용했습니다. 먼저 return_url.jsp에서 Java 코드를 직접 이동하고 약간 수정합니다(springmvc 메서드로 변경). 반송 주소는 IP/aliPay/returnUrl이고 새 ModelAndView("redirect:/meeting/info")입니다. ) 우리가 생각하고 있는 URL로 리디렉션합니다(매개변수 문제는 아래 요약의 4번 항목 참조). [javascript] 일반 보기 복사
@RequestMapping("returnUrl") publicModelAndView returnUrl( HttpservletRequest 요청) { New ModratView( "리디렉션:/회의/정보" )
// Alipay에서 피드백 받기 Map Map requestParams = request.getParameterMap(); for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) { 문자열 이름 = (문자열) iter.next() ; String[] values = (String[]) requestParams.get(name); 문자열 valueStr = ""; for (int i = 0; i
valueStr = (i == values.length - 1) ? valueStr + values[i]
: valueStr + values[i] + ","; ㅋㅋ ~ MySign과 Sign이 같지 않으면 이 코드를 사용하여
// valueStr = New String
params.put(name, valueStr) ;
}문서의 페이지 이동 알림 매개변수 목록(다음 참고용입니다) //
)
"trade_no")
ㅋㅋ ~ > = L "COLOR:#FF0000;"
"Extra_common_param") > verify_result = AlipayNotify.verify(params);
ㅋㅋ | | trade_status.equals("TRADE_SUCCESS"
)){
做没유 // 처리되지 않은 경우 주문번호(OUT_TRADE_NO)에 따라 가맹점 홈페이지의 주문시스템에서 주문내역을 찾아 가맹점의 업무프로그램을 수행합니다.做 有 // 했다면 판매자의 업무 절차를 수행하지 마세요
// 이 페이지는 페이지 아티스트로 사용할 수 있습니다 편집
// out.println("확인 성공
");
//——비즈니스 로직을 기반으로 작성하세요. 프로그램 (위 코드는 참고용입니다)——
/////////////////////// ////////////////////////////////////////////
ㅋㅋ >
2. 디버깅 시, 특히 콜백 시 프로젝트는 외부 네트워크에서 액세스할 수 있는 서버에 배포되어야 합니다.
4. 페이지 이동 알림 페이지 경로를 동기화할 때 매개변수를 전달해야 하면 어떻게 해야 합니까? 처음에 매개변수를 사용자 정의했지만 얻지 못했습니다. 그런 다음 DEMO에서 다음과 같은 주석을 보았습니다. [javascript] view plain copy
// 기타 비즈니스 매개변수는 온라인 개발 문서에 따라 추가됩니다. 문서 주소: https://doc.open.alipay. com/doc2/detail.htm?spm=a219a.7629140.0.0.O9yorI&treeId=62&articleId=103740&docType=1
그래서 열어서 살펴본 후 공개 반환 매개변수 extra_common_param을 선택했습니다. 나 자신도 알고 있다. 이 분야가 나에게 어떤 의미인지. 하지만 주의를 기울여야 한다고 다른 사람들이 설명했습니다:
[javascript] view plaincopy
매개변수 본문(제품 설명), 제목(제품 이름), extra_common_param(공개 반환 매개변수)에는 특수 문자(예: : #, %, &, +), 민감한 단어, 외국어 사용 불가(Want Want가 지원하지 않는 외국어, 예: 한국어, 태국어, 티베트어, 몽골어, 아랍어
open 메소드 중간 범위 값:
[javascript] view plain
sParaTemp.put("ex tra_common_param" , 회의 ID);
[javascript]
view plain copy
String MeetingId = request.getParameter("extra_common_param"); mv.addObject("meetingId" , MeetingId); 관련 추천:
위 내용은 Alipay 결제 인터페이스를 호출하는 Java 사례에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!