Alipay의 여러 커널 기능 파일 :
alipayfunction.java
패키지 com.test.util.alipay; import java.io.filewriter; import java.io.ioexception; java.net.malformedurlexception import; import java.net.url; java.util.arraylist 가져 오기; java.util.collections import; java.util.hashmap import; Java.util.list 가져 오기; java.util.map import; import org.dom4j.document; import org.dom4j.documentException; import org.dom4j.node; import org.dom4j.io.saxreader; 공개 클래스 AlipAyFunction { / *** 함수 : 서명 결과 생성* @Param SARRAY 배열에 서명 할* @Param 키 보안 검증 코드* @return 서명 string* / public static string buildmysign (map sarray, string key) {String prest = createlinkstring (sarray); // "매개 변수 = 매개 변수 값"에 따라 "&"문자를 사용하여 배열의 모든 요소를 문자열로 스플라인으로 spline prest = prest + key; // 스 플린트 문자열을 보안 확인 코드로 직접 연결하십시오. MySign = Md5encrypt.md5 (prest); MySign을 반환하십시오. } / *** 함수 : 배열에서 널 값과 서명 매개 변수를 제거하십시오* @param sarray 서명 매개 변수 그룹* @return null 값과 새 서명 매개 변수 그룹* / public static map parafilter (map sarray) {list keys = new arraylist (sarraylist (sarraylist)); MAP SARRAYNEW = NEW HASHMAP (); for (int i = 0; i <keys.size (); i ++) {String key = (string) keys.get (i); 문자열 값 = (문자열) sarray.get (키); if (value == null || value.equals ( "") || key.equalsignorecase ( "sign") || key.equalsignorecase ( "sign_type")) {계속; } sarraynew.put (키, 값); } SarrayNew를 반환합니다. } / *** 함수 : 배열의 모든 요소를 정렬하고 "매개 변수 = 매개 변수 값"패턴에 따라 "&"문자로 문자열에 스 플라이싱 한 후 문자를 분류하고 참여 해야하는 "매개 변수 값"패러 매개 변수 그룹* / public static string createLinkString (map keys = new arraylist ()); collections.sort (키); 문자열 prestr = ""; for (int i = 0; i <keys.size (); i ++) {String key = (string) keys.get (i); 문자열 값 = (문자열) params.get (키); if (i == keys.size () -1) {// 스 플라이 싱시, 마지막 문자에는 prest = prest + key + "=" + 값이 포함되어 있지 않습니다. } else {prest = prest + key + "=" + value + "&"; }} return prest; } / *** 기능 : 쉽게 테스트 할 수 있도록 로그 작성 (웹 사이트 요구 사항 참조, 데이터베이스에서 레코드 저장으로 변경할 수도 있습니다)* @Param Sword 텍스트 콘텐츠 로그* / public static void logresult (String Sword) {//이 파일은 애플리케이션 서버 스타트 업 파일과 동일한 디렉토리에 존재합니다. filewriter ( "d : // alipay_log" + system.currenttimeMillis () + ".txt"); Writer.write (Sword); Writer.close (); } catch (예외 e) {e.printstacktrace (); }} /** * 함수 : 피싱을 방지하는 데 사용되는 경우, 인터페이스 query_timestamp를 호출하여 타임 스탬프 처리 기능을 얻으려면 : 원격 파싱 XML에서 오류가 발생했는데, 이는 서버가 SSL 및 기타 구성을 지원하는지 여부와 관련된 오류가 발생했습니다. public static string query_timestamp (String partner)는 층식을 던져서 documentException, ioException {string strurl = "https://mapi.alipay.com/gateway.do?service=query_timestamp&partner="+partner; StringBuffer buf1 = new StringBuffer (); SaxReader Reader = New SaxReader (); doc doc = reader.read (new url (strurl) .openstream ()); List <Node> NODELIST = DOC.SelectNodes ( "// alipay/*"); for (node node : nodelist) {// if (node.getname (). equals ( "is_success") && node.getText (). equals ( "t")) {// doc.selectnod ( "// 응답/*") for (node node1 : nodelist1) {buf1.append (node1.getText ()); }} return buf1.toString (); }}}alipaynotify.java
패키지 com.test.util.alipay; import java.io.bufferedReader; import java.io.inputStreamReader; import java.net.httpurlConnection; import java.net.url; java.util.map import; import com.test.constants.alipayconfig; 공개 클래스 AlipayNotify {/*** 함수 : 반환 된 정보에 따라 서명 결과를 생성합니다* @param params 알림 매개 변수 배열 반환* @param 키 보안 검증 코드* @return 서명 결과 생성*/public static string getmysign (map params, string key) {map sparanew = alipayfayfuncilter (params); // empty valks, empty valm value); mysign = alipayfunction.buildmysign (sparanew, key); // 서명 결과 return mysign; } /** * * function : 원격 서버를 가져옵니다. 결과를 확인하고, 반환 URL을 확인하십시오. url * @param notify_id 확인 ID * @return server atn result * resify result set : *이 오류는 잘못된 명령 매개 변수가 잘못된 경우 발생합니다. 파트너와 키가 반환 프로세스에서 비어 있는지 확인하십시오* true return 정확한 정보* false 방화벽 또는 서버 차단 포트 문제를 확인하고 시간이 1 분*/public static string verify (string notify_id)를 초과하는지 확인하고 Alipay 서버의 ATN 결과를 얻고 Alipay 서버 전송 = AlipayConfig.transport; 문자열 파트너 = alipayconfig.partner; 문자열 hotfy_url = ""; if (transport.equalsignorecase ( "https")) {veryfy_url = "https://www.alipay.com/cooperate/gateway.do?service_verify"; } else {veryfy_url = "http://notify.alipay.com/trade/notify_query.do?"; } veryfy_url = veryfy_url + "& partner =" + partner + "¬ify_id =" + notify_id; String responseTxt = CheckUrl (veryfy_url); return responseTxt; } /**** 함수 : 원격 서버 가져 오기 결과* @param urlValue URL 경로 주소를 지정* @return server atn result* verification result set :*이 오류가 잘못된 명령 매개 변수가 올바르지 않을 때 발생합니다. 반환 프로세스에서 파트너와 키가 비어 있는지 확인하십시오* true return 정확한 정보* false 방화벽 또는 서버 차단 포트 문제를 확인하고 시간이 1 분*/ public static string checkurl (String urlValue) {String inputline = ""; try {url url = new URL (urlValue); httpurlconnection urlconnection = (httpurlConnection) url .openConnection (); bufferedReader in = new bufferedReader (new inputStreamReader (urlConnection.getInputStream ())); inputline = in.readline (). toString (); } catch (예외 e) {e.printstacktrace (); } return inputline; }}alipayservice.java
패키지 com.test.util.alipay; java.util.arraylist 가져 오기; java.util.hashmap import; Java.util.list 가져 오기; java.util.map import; 공개 클래스 AlipayService { /** * 함수 : 구성 양식 제출 html * @param 파트너 Cooperative id * @param seller_email 서명 Alipay 계정 또는 판매자 Alipay 계정 * @param return_url 결제 후 점프하는 페이지는 HTTP로 시작해야합니다. id = 123과 같은 사용자 정의 매개 변수는 거래 프로세스 중에 추가 할 수 없습니다* @param notify_url 서버가 통지 한 페이지는 HTTP가 열린 형식의 전체 경로를 사용해야합니다. id = 123과 같은 사용자 정의 매개 변수는 추가 할 수 없습니다. * @param show_url 웹 사이트 제품의 디스플레이 주소 및 id = 123과 같은 사용자 정의 매개 변수는 추가 할 수 없습니다. * @param out_trade_no 웹 사이트의 주문 시스템의 고유 주문 번호와 일치하십시오* @param 주제 주문 이름은 Alipay 계산원의 "제품 이름"과 Alipay의 거래 관리의 "제품 이름"목록에 표시됩니다. * @Param 바디 주문 설명, 주문 세부 사항, 주문 메모, Alipay Cashier의 "제품 설명"에 표시된* @param total_fee 총 주문 금액은 Alipay Cashier의 "Total Payable"에 표시됩니다. 만화 (만화); DirectPay (밸런스); 현금 (인터넷 결제) * @param defaultBank 기본 온라인 뱅킹 코드, club.alipay.com/read.php?tid=8681379 * @param encrypt_key anti-phishing timestamp * @param exter_invoke_ip 구매자의 로컬 컴퓨터의 IP 주소 * @param extra_common_param custom parameters의 IP 주소를 제외하고, 특수한 특수 특성을 제외하고는 할 수 있습니다. 페이지 * @param buyer_email 기본 구매자 Alipay 계정 * @param Royalty_type Commitment 유형은 고정 값 : 10이며, 수정 될 필요는 없으며 * @param Royalty_Parameters Commitment Informment Informment Information Set, 각 이익 수집 금액, 각 이익 금액 및 각 거래에 대한 각 손익 계정을 동적으로 얻습니다. 최대 10 자만 설정할 수 있습니다* @param input_charset 문자 인코딩 형식은 현재 GBK 또는 UTF-8* @param 키 보안 확인 코드* @param sign_type 서명 메소드를 수정할 필요가 없습니다* @Param 키 보안 확인 코드* @return 양식 html 텍스트*/ public string buildform (string _url, string _url, string _URL,, string _UR, string _URL, string _UR). String show_url, String out_trade_no, 문자열 제목, 문자열 바디, String total_fee, String paymethod, String defaultBank, String anti_phishing_key, String exter_invoke_ip, string extr_common_param, String buyer_email, String Royalty_type, String royalty_parameters, string key, string key, string key, string key, string k key, string k key, string k kneail. it_b_pay) {map spara = new hashmap (); spara.put ( "service", "create_direct_pay_by_user"); spara.put ( "payment_type", "1"); spara.put ( "파트너", 파트너); spara.put ( "Seller_Email", Seller_Email); spara.put ( "return_url", return_url); spara.put ( "notify_url", notify_url); spara.put ( "_ input_charset", input_charset); spara.put ( "show_url", show_url); spara.put ( "out_trade_no", out_trade_no); spara.put ( "주제", 주제); Spara.put ( "Body", Body); spara.put ( "Total_fee", Total_fee); spara.put ( "paymethod", paymethod); spara.put ( "DefaultBank", DefaultBank); spara.put ( "anti_phishing_key", anti_phishing_key); spara.put ( "exter_invoke_ip", exter_invoke_ip); spara.put ( "ac spara.put ( "buyer_email", buyer_email); spara.put ( "Royalty_type", Royalty_type); spara.put ( "Royalty_Parameters", Royalty_Parameters); spara.put ( "it_b_pay", it_b_pay); map sparanew = alipayfunction.parafilter (spara); // 배열 및 서명 매개 변수에서 NULL 값을 제거하십시오. String MySign = alipayFunction.BuildMysign (Sparanew, key); // 서명 결과 생성 stringBuffer sbhtml = new StringBuffer (); list keys = new ArrayList (sparanew.keyset ()); 문자열 게이트웨이 = "https://www.alipay.com/cooperate/gateway.do?"; // 메소드 통과 // sbhtml.append ( "<form id =/"alipaysubmit/"name =/"alipaysubmit/"action =/" " + Gateway +"_input_charset = " + input_charset +"/"method =/"get/">"); // 메소드 패스 (get and post를 선택해야 함) sbhtml.append ( "<form id =/"alipaysubmit/"name =/"alipaysubmit/"action =/" " + gateway +"_input_charset = " + input_charset +"/"method =/"post/">"); for (int i = 0; i <keys.size (); i ++) {String name = (string) keys.get (i); 문자열 값 = (문자열) sparanew.get (이름); sbhtml.append ( "<input type =/"hidden/"name =/" " + name +"/"value =/" + value + "/"); type =/"hidden/"name =/"sign_type/"value =/"" + sign_type + "/"// "); // 제출 버튼 제어, 이름 속성 sbhtml.append ("<입력 유형 =/"value =/"alipay 확인 지불/"/form>"); sbhtml.append ( "<cript> document.forms [ 'alipaysubmit']; </script>");md5encrypt.java
패키지 com.test.util.alipay; java.io.unsupportedencodingException 가져 오기; java.security.messagegegest; java.security.nosuchalgorithmexception import; import com.test.constants.alipayconfig; /** * 기능 : Alipay MD5는 핵심 파일을 암호화하고 프로세스하고 수정이 필요하지 않습니다 * 버전 : 3.1 * 수정 날짜 : 2010-11-01 * 설명 : * 다음 코드는 가맹점 테스트를위한 편의를위한 샘플 코드입니다. 가맹점은 자신의 웹 사이트의 요구에 따라 및 기술 문서에 따라 작성할 수 있습니다. 이 코드는 반드시 필요한 것은 아닙니다. *이 코드는 Alipay 인터페이스를 학습하고 연구하기위한 것이지만, * */ public class md5encrypt {/ ** * hex */ private static final char [] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '9', ',', ',', ',', ',', ',', ','9 ' 'e', 'f'}; / *** 문자열의 암호화** @param text* plantext** @return ciphertext*/ public static string md5 (문자열 텍스트) {MessageDigest msgdigest = null; {msgdigest = messageDigest.getInstance ( "md5"); } catch (nosuchalgorithmexception e) {New New OregalStateException 던지기 ( "시스템은 MD5 알고리즘을 지원하지 않습니다."); } try {msgdigest.update (text.getBytes (alipayconfig.input_charset)); // 지정된 인코딩 형식} catch (UnSupportedEncodingException e) {wrach new new ImperalStateException ( "시스템이 인코딩 렉스크를 지원하지 않습니다")에 인터페이스를 변경하는 것이 서명됩니다. } byte [] bytes = msgdigest.digest (); 문자열 md5str = new String (encodeHex (바이트)); md5str을 반환합니다. } public static char [] encodeHex (byte [] data) {int l = data.length; char [] out = new char [l << 1]; // 두 문자가 16 진수를 형성합니다. for (int i = 0, j = 0; i <l; i ++) {out [j ++] = 숫자 [(0xf0 & data [i]) >>> 4]; out [j ++] = 숫자 [0x0f & data [i]]; } 리턴 아웃; }}AlipayConfig.java 여기 계정 번호, 키, 콜백 연결 주소 등에 대한 설정이 있습니다.
패키지 com.test.constants; java.util.properties import; import com.test.util.propertiesutil; 공개 클래스 alipayconfig {private static alipayconfig alconfig = null; private alipayconfig () {} public static alipayconfig getInstance () {if (alconfig == null) {alconfig = new AlipayConfig (); } return alconfig; } // 보안 확인 코드 및 파트너 ID를 얻는 방법 // 1. Alipay Merchant Service Center (b.alipay.com)를 방문한 다음 계약 된 Alipay 계정으로 로그인하십시오. // 2. "기술 서비스"→ "기술 통합 문서 다운로드"(https://b.alipay.com/support/helperapply.htm?action=selfintegration) // 3. "셀프 서비스 통합 도움말", "파트너 ID 쿼리"및 "안전 확인 코드 (Key) Query"Query를 클릭하십시오. ↓얼 벨 (TALLETHELT TELATEN) ↓얼 벨 (TALLETALETHAL) ↓ ((↓ (3 3 (3 3 (3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3소 3 3 ((3 3 (3 3 (3 3 (3 3 (3enent 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3on 3nn 3nnenennn 3ennnenennonnenenenon 3ennn 3nonnen 3트 다른 다른 다른 3 다른 다른 다른 다른 다른 파트너 = "2088601003079118"; public static string service = "create_direct_pay_by_user"; // 트랜잭션 보안 검증 코드, 32 비트 문자열 숫자 및 문자로 구성된 32 비트 문자열 공개 정적 문자열 키 = "ZXCDVXGKSAAM2ZJRMV5CV0P4JQESAIOH"; // Alipay 계정 또는 판매자의 지불에 가입합니다 Alipay 계정 공개 정적 문자열 seller_email = "[email protected]"; // 구성 파일 읽기 // notify_url 트랜잭션 중 서버 알림 페이지는 http : // 형식의 형식으로 전체 경로를 사용해야하며? id = 123과 같은 사용자 정의 매개 변수는 추가 할 수 없습니다. // 결제 후 점프하는 페이지는 http : //. 형식의 전체 경로를 사용해야하며? id = 123과 같은 사용자 정의 매개 변수는 추가 할 수 없습니다. return_url의 도메인 이름은 http : //localhost/js_jsp_utf8/return_url.jsp로 작성할 수 없으며, 그렇지 않으면 return_url 실행이 유효하지 않습니다. // public static string return_url = "http : www.xxx.com/projectname/alipaytrade.action"; // 웹 사이트 제품의 디스플레이 주소, id = 123과 같은 사용자 정의 매개 변수는 공개 정적 문자열 show_url = "http://www.alipay.com"; // 회사 이름, 웹 사이트 이름, 수취인 이름 등과 같은 수취인의 이름. public static string mainname = "Payer Name"; // ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ ↑↑↑↑↑↑↑ 청칭님감감감님 억정명 인도 억정석 인도 인도석석석석석석석석석석석석석석석석은석석석석석석석석석색석석석석석 반석 술막 인도석 인도석석석석역석 인도석석석석석석석석석 통막 석 색 분석 R R R 문자열 전송 = "http"; }간단한 신청 절차는 다음과 같습니다.
JSP에서 전화 한 내용에 대해서는 이야기하지 않습니다. 이것은 배경, 가격 및 기타 매개 변수로 전달되기 때문입니다.
배경 처리에 대한 설명은 다음과 같습니다.
PaymentAction.java
/ *** ALIPAY 트랜잭션 주문 번호* @return*/ public synchronized static string getOrderNum () {날짜 date = new Date (); dateformat df = new simpledateformat ( "yyyymmddhhmmssss"); 반환 df.format (날짜); } 보호 된 httpservletRequest getRequest () {return servletactionContext.getRequest (); } // alipay 트랜잭션 주문 번호 문자열 ordernum = getOrdernum (); //이 트랜잭션의 총 금액 getRequest (). setAttribute ( "TotalMoney", "0.01"); //이 트랜잭션의 순서 번호 getRequest (). setAttribute ( "out_trade_no", Ordernum); // 제품 이름 설명 getRequest (). setAttribute ( "주제", "제품 이름"); //이 주문 정보를 데이터베이스에 저장하는 프로세스는 여기에서 생략됩니다.alipay.jsp
<%@page import = "com.test.constants.alipayConfig"%> <%@page import = "com.test.util.alipay.utildate"%> <%@page import = "com.test.util.alipay.alipayservice"%> <% / * 기능 : 제품-입력 페이지 :이 페이지는 interface page, the when page, the when page입니다. * 날짜 : 2010-11-01 * 설명 : * 다음 코드는 가맹점 테스트의 편의를 위해 제공되는 샘플 코드입니다. 판매자는 자신의 웹 사이트의 요구에 따라 및 기술 문서에 따라 작성할 수 있으며이 코드를 사용할 필요는 없습니다. *이 코드는 Alipay 인터페이스를 학습하고 연구하기위한 것이며 참조로만 제공됩니다. ********************************* 인터페이스 통합 중에 문제가 발생하면 Merchant Service Center (https://b.alipay.com/support/helperapply.htm?action=ConsultationApply)로 이동하여 통합 지원 신청서를 제출할 수 있습니다. 문제 해결을 돕기 위해 전문 기술 엔지니어에게 연락 할 것입니다. 또한 Alipay 포럼 (http://club.alipay.com/read-htm-tid-8681712.html)으로 이동하여 관련 솔루션을 찾을 수 있습니다. 전달되는 매개 변수는 비어 있지 않거나 배열, 숨겨진 컨트롤 또는 URL 링크에 나타나지 않습니다. ******************************************************************************************/%> <%@ page language = "java"contenttype = "text/html; charset = utf-8"pageencoding = "utf-8"%> <! apttype html public "-//01 html // 01. <html> <head> <meta http-equiv = "content-type"content = "text /html; charset = utf-8"> title> test < /title> <link rel = "shortcut icon"href = "favicon.ico"> <meta name = "keywords" "" "" "" "" "" ""syle " type = "text/css"> .font_content {font-family : "客"; 글꼴 크기 : 14px; 색상 :#FF6600; } .font_title {font-family : "客"; 글꼴 크기 : 16px; 색상 :#FF0000; 글꼴 중량 : 대담한; } 테이블 {테두리 : 1px 고체 #cccccc; } </style> <script type = "text/javaScript"> var _gaq = _gaq || []; _gaq.push ([ '_ setAccount', 'UA-25469955-1']); _gaq.push ([ '_ TrackPageView']); (function () {var ga = document.createelement ( 'script'); ga.type = 'text/javaScript'; ga.async = true; ga.src = ( 'https :'== document.location.protocol? 문서. </script> </head> <% //request.setcharacterencoding("utf-8 "); // AlipyConfig.java (수정할 수 없음)의 구성 정보를 구성하십시오. string input_charset = alipayConfig.getInstance (). input_charset; 문자열 sign_type = alipayConfig.getInstance (). sign_type; 문자열 Seller_Email = AlipayConfig.getInstance (). Seller_Email; 문자열 파트너 = AlipayConfig.getInstance (). 파트너; 문자열 키 = alipayConfig.getInstance (). 키; 문자열 show_url = alipayconfig.getInstance (). show_url; 문자열 notify_url = alipayConfig.getInstance (). notify_url; 문자열 return_url = alipayConfig.getInstance (). return_url; 문자열 it_b_pay = alipayConfig.getInstance (). it_b_pay; ////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////4 ////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////4 ////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////4 문자열 주제 = (문자열) request.getAttribute ( "주제"); // 주문 설명, 주문 세부 사항, 주문 메모는 Alipay Cashier String Body = (String) request.getAttribute ( "body")에 "제품 설명"에 표시됩니다. // 총 주문 금액은 Alipay Cashier String total_fee = (문자열) request.getAttribute ( "TotalMoney")의 "총 지불 가능"에 표시됩니다. // 확장 된 기능 매개 변수 - 기본 지불 방법 // String Pay_Mode = request.getParameter ( "Pay_Bank"); 문자열 paymethod = ""; // 기본 결제 방법, 4 가지 값을 사용할 수 있습니다 : BankPay (온라인 뱅킹); 만화 (만화); DirectPay (밸런스); 현금 (인터넷 결제) 문자열 defaultBank = ""; // 기본 온라인 뱅킹 코드, http://club.alipay.com/read.php?tid=8681379 /*if(pay_mode.equals("DirectPay "))) {PayMethod ="DirectPay "; } else {paymethod = "bankpay"; defaultBank = pay_mode; }*/////// 연장 기능 매개 변수-반 피싱 // 엑서 피싱 함수를 활성화할지 여부를 신중하게 선택하십시오. // 데이터를 요청하기 위해 게시물을 사용하는 것이 좋습니다. Anti_phishing_key = ""; // 피싱 타임 스탬프 문자열 exter_invoke_ip = ""; // 클라이언트의 IP 주소를 가져 오십시오. 제안 : 클라이언트의 IP 주소를 얻기위한 프로그램을 작성하십시오. // 피싱 방지 타임 스탬프 함수를 가져옵니다. // exter_invoke_ip = "202.1.1.1"; // 확장 된 함수 매개 변수 - 기타 문자열 extra_common_param = ""; // 사용자 정의 매개 변수는 모든 컨텐츠를 저장할 수 있으며 (= 및 &와 같은 특수 문자 제외) 페이지에 표시되지 않습니다. 구매자 _email = "137672927"; // 기본 구매자 Alipay 계정 string extend_param = ""; // 확장 된 기능 매개 변수 - 분할 이익 (사용하려는 경우 주석에 필요한 형식에 따라 값을 지정하십시오) String Royalty_type = ""; // 커미션 유형,이 값은 고정 값입니다. 10, String Royalty_Parameters = ""를 수정할 필요가 없습니다. // 커미션 정보 세트, 가맹점 웹 사이트의 자체 상황을 기반으로 각 트랜잭션의 각 분할 금액 및 각 분할 설명 각각의 분할 지불 계정, 각 분할 금액을 동적으로 얻습니다. 최대 10 개 항목 만 설정할 수 있습니다. // 각 주식 금액의 합은 Total_fee // 수수료 정보 세트의 형식은 다음과 같습니다. email_1^금액 1^warick 1 | email_2^금액 2^비고 2 // 예 : // Royalty_Type = "10"// Royalty_Parameters = "[email protected]^0.01^ Remark. 1|[email protected]^0.01^Remark 2 "// 1H 세트 이전에 설정된 1H 전환 // 오류 설명 : 죄송합니다. 판매자는 활성화 할 수있는 사용자 지정 시간 초과 권한이 없습니다. 판매자에게 문의하십시오. // 오류 코드 : self_timeout_not_support it_b_pay = ""; // 생성자, 요청 생성 URL 문자열 shtmltext = alipayservice.buildform (파트너, seller_email, return_url, notify_url, show_url, out_trade_no, 대상, body, total_fee, paymethod, defaultbank, anti_phishing_key, exter_invoke_ip, extra_common_ceram, extracmon_coram. Royalty_type, Royalty_Parameters, Input_charset, key, sign_type, it_b_pay); %> <body> <테이블 align = "Center"CellPadding = "5"CellPacing = "0"> <tr> <td elign = "Center"Colspan = "2"> 주문 확인 </td> </tr> <tt> <td align = "right"> 주문 번호 : </td> <td align = "</td> <trade_no%>%> <td align = "right"> 총 결제 금액 : </td> <td align = "왼쪽"> <%= Total_fee%> </td> </td> <td align = "center"colspan = "2"> <%= shtmltext%> </td> </table> </html>Alipay 콜백 인터페이스 : alipaynotify.java
패키지 com.test.action.payment; import java.util.date; Java.util.list 가져 오기; com.test.action.base.baseaction import; com.test.dao.model.paymentcenter.orderform import; com.test.dao.model.paymentcenter.orderList 가져 오기; import com.test.dao.model.paymentcenter.userpurview; 공개 클래스 AlipayNotify는 BASEEATION을 확장합니다. 개인 문자열 구매자 _email; 개인 장거리 구매자 _id; 개인 문자열 exterface; 개인 문자열 IS_SUCCESS; 개인 문자열 notify_id; 개인 문자열 notify_time; 개인 문자열 notify_type; 개인 문자열 out_trade_no; 개인 문자열 payment_type; 개인 문자열 Seller_Email; Private Long Seller_ID; 개인 문자열 주제; Private float total_fee; 개인 문자열 trade_no; 개인 문자열 trade_status; 개인 문자열 표시; 개인 문자열 sign_type; 개인 Orderform; //… get and set 메소드는 생략됩니다 여기……………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………… of.settradestatus (1); of.settradeno (this.trade_no); of.setNotifyTime (새 날짜 ()); Orderformservice.updateoldModel (OF); // 업데이트 목록 <TerderList> OrderList = OrderListService .findOrderFormsByOutTradEno (this.out_trade_no); for (OrderList ol : OrderList) {// 처리 순서를위한 논리 코드가 여기에서 생략됩니다 ………………… } 반환 "실패"; }}이러한 방식으로 Alipay의 타사 인스턴트 계정 도착 인터페이스가 구현됩니다.
위의 것은 내가 소개 한 Alipay의 제 3 자 Alipay Instant Payment Function의 Java 구현입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!