alipay 的几个内核功能文件:
======================================================================================================
AlipayFunction.java

package com.test.util.alipay;

import java.io.FileWriter;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Node;
import org.dom4j.io.SAXReader; public class AlipayFunction {
/**
* 功能:生成签名结果
* @param sArray 要签名的数组
* @param key 安全校验码
* @return 签名结果字符串
*/
public static String BuildMysign(Map sArray, String key) {
String prestr = CreateLinkString(sArray); //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
prestr = prestr + key; //把拼接后的字符串再与安全校验码直接连接起来
String mysign = Md5Encrypt.md5(prestr);
return mysign;
} /**
* 功能:除去数组中的空值和签名参数
* @param sArray 签名参数组
* @return 去掉空值与签名参数后的新签名参数组
*/
public static Map ParaFilter(Map sArray){
List keys = new ArrayList(sArray.keySet());
Map sArrayNew = new HashMap(); for(int i = 0; i < keys.size(); i++){
String key = (String) keys.get(i);
String value = (String) sArray.get(key); if( value == null || value.equals("") ||
key.equalsIgnoreCase("sign") || key.equalsIgnoreCase("sign_type")){
continue;
} sArrayNew.put(key, value);
} return sArrayNew;
} /**
* 功能:把数组所有元素排序,并按照“参数=参数值”的模式用“&”字符拼接成字符串
* @param params 需要排序并参与字符拼接的参数组
* @return 拼接后字符串
*/
public static String CreateLinkString(Map params){
List keys = new ArrayList(params.keySet());
Collections.sort(keys); String prestr = ""; for (int i = 0; i < keys.size(); i++) {
String key = (String) keys.get(i);
String value = (String) params.get(key); if (i == keys.size() - 1) {//拼接时,不包括最后一个&字符
prestr = prestr + key + "=" + value;
} else {
prestr = prestr + key + "=" + value + "&";
}
} return prestr;
} /**
* 功能:写日志,方便测试(看网站需求,也可以改成把记录存入数据库)
* @param sWord 要写入日志里的文本内容
*/
public static void LogResult(String sWord){
// 该文件存在于和应用服务器 启动文件同一目录下,文件名是alipay log加服务器时间
try {
FileWriter writer = new FileWriter("D:\\alipay_log" + System.currentTimeMillis() + ".txt");
writer.write(sWord);
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 功能:用于防钓鱼,调用接口query_timestamp来获取时间戳的处理函数
* 注意:远程解析XML出错,与服务器是否支持SSL等配置有关
* @param partner 合作身份者ID
* @return 时间戳字符串
* @throws IOException
* @throws DocumentException
* @throws MalformedURLException
*/ public static String query_timestamp(String partner)
throws MalformedURLException, DocumentException, IOException {
String strUrl = "https://mapi.alipay.com/gateway.do?service=query_timestamp&partner="+partner;
StringBuffer buf1 = new StringBuffer();
SAXReader reader = new SAXReader();
Document 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")) {
// 判断是否有成功标示
List<Node> nodeList1 = doc.selectNodes("//response/timestamp/*");
for (Node node1 : nodeList1) {
buf1.append(node1.getText());
}
}
} return buf1.toString();
}
}

======================================================================================================
AlipayNotify.java

package com.test.util.alipay;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map; import com.test.constants.AlipayConfig; public class AlipayNotify {
/**
* *功能:根据反馈回来的信息,生成签名结果
* @param Params 通知返回来的参数数组
* @param key 安全校验码
* @return 生成的签名结果
*/
public static String GetMysign(Map Params, String key){
Map sParaNew = AlipayFunction.ParaFilter(Params);//过滤空值、sign与sign_type参数
String mysign = AlipayFunction.BuildMysign(sParaNew, key);//获得签名结果 return mysign;
} /**
* *功能:获取远程服务器ATN结果,验证返回URL
* @param notify_id 通知校验ID
* @return 服务器ATN结果
* 验证结果集:
* invalid命令参数不对 出现这个错误,请检测返回处理中partner和key是否为空
* true 返回正确信息
* false 请检查防火墙或者是服务器阻止端口问题以及验证时间是否超过一分钟
*/
public static String Verify(String notify_id){
//获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求
String transport = AlipayConfig.transport;
String partner = AlipayConfig.partner;
String veryfy_url = "";
if(transport.equalsIgnoreCase("https")){
veryfy_url = "https://www.alipay.com/cooperate/gateway.do?service=notify_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;
} /**
* *功能:获取远程服务器ATN结果
* @param urlvalue 指定URL路径地址
* @return 服务器ATN结果
* 验证结果集:
* invalid命令参数不对 出现这个错误,请检测返回处理中partner和key是否为空
* true 返回正确信息
* false 请检查防火墙或者是服务器阻止端口问题以及验证时间是否超过一分钟
*/
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 (Exception e) {
e.printStackTrace();
} return inputLine;
}
}

======================================================================================================
AlipayService.java

package com.test.util.alipay;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; public class AlipayService {
/**
* 功能:构造表单提交HTML
* @param partner 合作身份者ID
* @param seller_email 签约支付宝账号或卖家支付宝帐户
* @param return_url 付完款后跳转的页面 要用 以http开头格式的完整路径,不允许加?id=123这类自定义参数
* @param notify_url 交易过程中服务器通知的页面 要用 以http开格式的完整路径,不允许加?id=123这类自定义参数
* @param show_url 网站商品的展示地址,不允许加?id=123这类自定义参数
* @param out_trade_no 请与贵网站订单系统中的唯一订单号匹配
* @param subject 订单名称,显示在支付宝收银台里的“商品名称”里,显示在支付宝的交易管理的“商品名称”的列表里。
* @param body 订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里
* @param total_fee 订单总金额,显示在支付宝收银台里的“应付总额”里
* @param paymethod 默认支付方式,四个值可选:bankPay(网银); cartoon(卡通); directPay(余额); CASH(网点支付)
* @param defaultbank 默认网银代号,代号列表见club.alipay.com/read.php?tid=8681379
* @param encrypt_key 防钓鱼时间戳
* @param exter_invoke_ip 买家本地电脑的IP地址
* @param extra_common_param 自定义参数,可存放任何内容(除等特殊字符外),不会显示在页面上
* @param buyer_email 默认买家支付宝账号
* @param royalty_type 提成类型,该值为固定值:10,不需要修改
* @param royalty_parameters 提成信息集,与需要结合商户网站自身情况动态获取每笔交易的各分润收款账号、各分润金额、各分润说明。最多只能设置10条
* @param input_charset 字符编码格式 目前支持 GBK 或 utf-8
* @param key 安全校验码
* @param sign_type 签名方式 不需修改
* @param key 安全校验码
* @return 表单提交HTML文本
*/
public static String BuildForm(String partner,
String seller_email,
String return_url,
String notify_url,
String show_url,
String out_trade_no,
String subject,
String body,
String total_fee,
String paymethod,
String defaultbank,
String anti_phishing_key,
String exter_invoke_ip,
String extra_common_param,
String buyer_email,
String royalty_type,
String royalty_parameters,
String input_charset,
String key,
String sign_type,
String it_b_pay){
Map sPara = new HashMap();
sPara.put("service","create_direct_pay_by_user");
sPara.put("payment_type","1");
sPara.put("partner", partner);
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("subject", subject);
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("extra_common_param", extra_common_param);
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); //除去数组中的空值和签名参数
String mysign = AlipayFunction.BuildMysign(sParaNew, key);//生成签名结果 StringBuffer sbHtml = new StringBuffer();
List keys = new ArrayList(sParaNew.keySet());
String gateway = "https://www.alipay.com/cooperate/gateway.do?"; //GET方式传递
//sbHtml.append("<form id=\"alipaysubmit\" name=\"alipaysubmit\" action=\"" + gateway + "_input_charset=" + input_charset + "\" method=\"get\">");
//POST方式传递(GET与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);
String value = (String) sParaNew.get(name); sbHtml.append("<input type=\"hidden\" name=\"" + name + "\" value=\"" + value + "\"/>");
}
sbHtml.append("<input type=\"hidden\" name=\"sign\" value=\"" + mysign + "\"/>");
sbHtml.append("<input type=\"hidden\" name=\"sign_type\" value=\"" + sign_type + "\"/>"); //submit按钮控件请不要含有name属性
sbHtml.append("<input type=\"submit\" value=\"支付宝确认付款\"></form>"); sbHtml.append("<script>document.forms['alipaysubmit'].submit();</script>"); return sbHtml.toString();
}
}

======================================================================================================
Md5Encrypt.java

package com.test.util.alipay;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import com.test.constants.AlipayConfig; /**
* 功能:支付宝MD5加密处理核心文件,不需要修改
* 版本:3.1
* 修改日期:2010-11-01
* 说明:
* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
* 该代码仅供学习和研究支付宝接口使用,只是提供一个
* */ public class Md5Encrypt {
/**
* Used building output as Hex
*/
private static final char[] DIGITS = { '0', '1', '2', '3', '4', '5', '6',
'7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; /**
* 对字符串进行MD5加密
*
* @param text
* 明文
*
* @return 密文
*/
public static String md5(String text) {
MessageDigest msgDigest = null; try {
msgDigest = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
throw new IllegalStateException(
"System doesn't support MD5 algorithm.");
} try {
msgDigest.update(text.getBytes(AlipayConfig.input_charset)); //注意改接口是按照指定编码形式签名 } catch (UnsupportedEncodingException e) { throw new IllegalStateException(
"System doesn't support your EncodingException."); } byte[] bytes = msgDigest.digest(); String md5Str = new String(encodeHex(bytes)); return md5Str;
} public static char[] encodeHex(byte[] data) { int l = data.length; char[] out = new char[l << 1]; // two characters form the hex value.
for (int i = 0, j = 0; i < l; i++) {
out[j++] = DIGITS[(0xF0 & data[i]) >>> 4];
out[j++] = DIGITS[0x0F & data[i]];
} return out;
} }

======================================================================================================
AlipayConfig.java这里是对账号,Key,回调连接地址等一些设置

package com.test.constants;

import java.util.Properties;

import com.test.util.PropertiesUtil;

public class AlipayConfig {

    private static AlipayConfig  alconfig = null;
private AlipayConfig(){ }
public static AlipayConfig getInstance(){ if(alconfig==null){
alconfig = new AlipayConfig();
} return alconfig;
} // 如何获取安全校验码和合作身份者ID
// 1.访问支付宝商户服务中心(b.alipay.com),然后用您的签约支付宝账号登陆.
// 2.访问“技术服务”→“下载技术集成文档”(https://b.alipay.com/support/helperApply.htm?action=selfIntegration)
// 3.在“自助集成帮助”中,点击“合作者身份(Partner ID)查询”、“安全校验码(Key)查询” // ↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// 合作身份者ID,以2088开头由16位纯数字组成的字符串
public static String it_b_pay = "1h"; public static String partner = "2088601003079118"; public static String service = "create_direct_pay_by_user";
// 交易安全检验码,由数字和字母组成的32位字符串
public static String key = "zxcdvxgksaam2zjrmv5cv0p4jqesaioh"; // 签约支付宝账号或卖家收款支付宝帐户
public static String seller_email = "test@yahoo.com.cn";
// 读配置文件 // notify_url 交易过程中服务器通知的页面 要用 http://格式的完整路径,不允许加?id=123这类自定义参数
public static String notify_url ="http:www.xxx.com/projectName/alipayTrade.action"; // 付完款后跳转的页面 要用 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这类自定义参数
public static String show_url = "http://www.alipay.com"; // 收款方名称,如:公司名称、网站名称、收款人姓名等
public static String mainname = "收款方名称";
// ↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ // 字符编码格式 目前支持 gbk 或 utf-8
public static String input_charset = "UTF-8"; // 签名方式 不需修改
public static String sign_type = "MD5"; // 访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
public static String transport = "http";
}

===============================================================================================================

下面是一个简单的应用流程:
从JSP调用的就不说了,因为这也就只是传给后台你要买的东西是什么,价格多少等一些参数。
这里介绍一下后台处理的:

PaymentAction.java

/**
* 获取支付宝交易订单号
* @return
*/
public synchronized static String getOrderNum(){
Date date=new Date();
DateFormat df=new SimpleDateFormat("yyyyMMddHHmmssSSS");
return df.format(date);
} protected HttpServletRequest getRequest() {
return ServletActionContext.getRequest();
} //支付宝交易订单号
String orderNum = getOrderNum(); // 此次交易的总金额
getRequest().setAttribute("totalMoney","0.01");
//此次交易的订单号
getRequest().setAttribute("out_trade_no", orderNum);
//商品名称描述
getRequest().setAttribute("subject", "商品名称"); //这里省略了将此次订单信息存到数据库的流程

===============================================================================================================
alipay.jsp

<%@page import="com.test.constants.AlipayConfig"%>
<%@page import="com.test.util.alipay.UtilDate"%>
<%@page import="com.test.util.alipay.AlipayService"%>
<%
/*
功能:设置商品有关信息(入口页)
*详细:该页面是接口入口页面,生成支付时的URL
*版本:3.1
*日期:2010-11-01
*说明:
*以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
*该代码仅供学习和研究支付宝接口使用,只是提供一个参考。 *************************注意*****************
如果您在接口集成过程中遇到问题,
您可以到商户服务中心(https://b.alipay.com/support/helperApply.htm?action=consultationApply),提交申请集成协助,我们会有专业的技术工程师主动联系您协助解决,
您也可以到支付宝论坛(http://club.alipay.com/read-htm-tid-8681712.html)寻找相关解决方案
要传递的参数要么不允许为空,要么就不要出现在数组与隐藏控件或URL链接里。
**********************************************
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<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" content="" />
<meta name="description" content="" />
<style type="text/css">
.font_content{
font-family:"宋体";
font-size:14px;
color:#FF6600;
}
.font_title{
font-family:"宋体";
font-size:16px;
color:#FF0000;
font-weight:bold;
}
table{
border: 1px solid #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 ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<%
//request.setCharacterEncoding("UTF-8");
//AlipyConfig.java中配置信息(不可以修改)
String input_charset = AlipayConfig.getInstance().input_charset;
String sign_type = AlipayConfig.getInstance().sign_type;
String seller_email = AlipayConfig.getInstance().seller_email;
String partner = AlipayConfig.getInstance().partner;
String key = AlipayConfig.getInstance().key; String show_url = AlipayConfig.getInstance().show_url;
String notify_url = AlipayConfig.getInstance().notify_url;
String return_url = AlipayConfig.getInstance().return_url;
String it_b_pay = AlipayConfig.getInstance().it_b_pay; /////////////////////////////////////////////////////////////////////////////////// //以下参数是需要通过下单时的订单数据传入进来获得
//必填参数
String out_trade_no = (String)request.getAttribute("out_trade_no");//请与贵网站订单系统中的唯一订单号匹配
//订单名称,显示在支付宝收银台里的“商品名称”里,显示在支付宝的交易管理的“商品名称”的列表里。
String subject = (String)request.getAttribute("subject");
//订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里
String body = (String)request.getAttribute("body");
//订单总金额,显示在支付宝收银台里的“应付总额”里
String total_fee = (String)request.getAttribute("totalMoney"); //扩展功能参数——默认支付方式
// String pay_mode = request.getParameter("pay_bank");
String paymethod = ""; //默认支付方式,四个值可选:bankPay(网银); cartoon(卡通); directPay(余额); CASH(网点支付)
String defaultbank = ""; //默认网银代号,代号列表见http://club.alipay.com/read.php?tid=8681379
/*if(pay_mode.equals("directPay")){
paymethod = "directPay";
}
else{
paymethod = "bankPay";
defaultbank = pay_mode;
}*/ //扩展功能参数——防钓鱼
//请慎重选择是否开启防钓鱼功能
//exter_invoke_ip、anti_phishing_key一旦被设置过,那么它们就会成为必填参数
//开启防钓鱼功能后,服务器、本机电脑必须支持远程XML解析,请配置好该环境。
//建议使用POST方式请求数据
String anti_phishing_key = ""; //防钓鱼时间戳
String exter_invoke_ip= ""; //获取客户端的IP地址,建议:编写获取客户端IP地址的程序
//如:
//anti_phishing_key = AlipayFunction.query_timestamp(partner); //获取防钓鱼时间戳函数
//exter_invoke_ip = "202.1.1.1"; //扩展功能参数——其他
String extra_common_param = ""; //自定义参数,可存放任何内容(除=、&等特殊字符外),不会显示在页面上
String buyer_email = "137672927"; //默认买家支付宝账号
String extend_param = ""; //扩展功能参数——分润(若要使用,请按照注释要求的格式赋值)
String royalty_type = ""; //提成类型,该值为固定值:10,不需要修改
String royalty_parameters ="";
//提成信息集,与需要结合商户网站自身情况动态获取每笔交易的各分润收款账号、各分润金额、各分润说明。最多只能设置10条
//各分润金额的总和须小于等于total_fee
//提成信息集格式为:收款方Email_1^金额1^备注1|收款方Email_2^金额2^备注2
//如:
//royalty_type = "10"
//royalty_parameters = "111@126.com^0.01^分润备注一|222@126.com^0.01^分润备注二" //之前设置的1h将返回
//错误描述: 抱歉,商户没有开通自定义超时权限,请联系您的商家。
//错误代码: SELF_TIMEOUT_NOT_SUPPORT it_b_pay=""; //构造函数,生成请求URL
String sHtmlText = AlipayService.BuildForm(partner,seller_email,return_url,notify_url,show_url,out_trade_no,
subject,body,total_fee,paymethod,defaultbank,anti_phishing_key,exter_invoke_ip,extra_common_param,buyer_email,
royalty_type,royalty_parameters,input_charset,key,sign_type,it_b_pay);
%> <body>
<table align="center" width="350" cellpadding="5" cellspacing="0">
<tr>
<td align="center" class="font_title" colspan="2">订单确认</td>
</tr>
<tr>
<td class="font_content" align="right">订单号:</td>
<td class="font_content" align="left"><%=out_trade_no%></td>
</tr>
<tr>
<td class="font_content" align="right">付款总金额:</td>
<td class="font_content" align="left"><%=total_fee%></td>
</tr>
<tr>
<td align="center" colspan="2"><%=sHtmlText%></td>
</tr>
</table>
</body>
</html>

===============================================================================================================
支付宝回调的接口:AlipayNotify.java

package com.test.action.payment;

import java.util.Date;
import java.util.List; import 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; public class AlipayNotify extends BaseAction { private static final long serialVersionUID = 1L;
private String buyer_email;
private long buyer_id;
private String exterface;
private String is_success;
private String notify_id;
private String notify_time;
private String notify_type;
private String out_trade_no;
private String payment_type;
private String seller_email;
private long seller_id;
private String subject;
private float total_fee;
private String trade_no;
private String trade_status;
private String sign;
private String sign_type;
private OrderForm of; //……这里省去了get和set方法
……………………………………………………………… // 处理支付宝传过来的参数信息
public String alipayTrade() throws Exception { if (this.is_success.equalsIgnoreCase("T")
&& "TRADE_SUCCESS".equalsIgnoreCase(this.trade_status)) { of = (OrderForm) orderFormService
.findOrderFormsByOut_trade_no(this.out_trade_no); if (of != null) {
of.setTradeStatus(1);
of.setTradeNo(this.trade_no);
of.setNotifyTime(new Date());
orderFormService.updateOldModel(of); // 更新 List<OrderList> orderList = orderListService
.findOrderFormsByOutTradeNo(this.out_trade_no);
for (OrderList ol : orderList) {
//这里省去了处理订单逻辑代码……………………
}
}
//回调成功之后,给支付宝返回一个 "success" 字符就可以了
return SUCCESS; } return "failure"; }
}

============================================================================================

就这样,支付宝的第三方即时到账接口就算实现了。

本文转自:http://blog.csdn.net/saindy5828/article/details/6800331

java 支付宝 第三方即时到账支付 接口的更多相关文章

  1. ***CodeIgniter框架集成支付宝即时到账支付SDK

    本文为CI集成支付宝即时到账支付接口 1.下载支付宝官方demo ;即时到账交易接口(create_direct_pay_by_user)(DEMO下载) 原文地址:https://doc.open. ...

  2. 支付宝PC即时到账和手机网站支付同步

    前几个月做了一个旅游网站,有PC站和手机站,涉及支付宝支付功能. 要求:PC站下的单,用户用手机登录也能支付;同理,手机站下的单,PC端登录也能支付. 附支付宝开放平台网址:即时到账 ,手机网站支付. ...

  3. 自己动手搞定支付宝手机Wap网站支付接口 FOR ECShop

    支付宝WAP网站版本的支付接口网上整合的比较少,看到很多网站在卖,顿觉无语. 主要是得自己查看支付宝官方提供的SDK中的开发文档. 支付宝sdk下载地址:https://doc.open.alipay ...

  4. 支付宝(alipay)即时到账收款接口开发中的那些事儿

    不会做,看看也可以会,要做好就还是需要多学习 国庆回来就一直没状态,看完<银河护卫队>,印象最深的竟然是只有两句台词的呆萌groot,昨天才休息一天,大耍大吃,今天还是把昨天的知识学习一下 ...

  5. 支付宝即时到账交易接口C#接入方式的几个坑

    1.在官方文档中 https://docs.open.alipay.com/62/104743 可以清楚看到input_charset前面没有要求加下横杠,可是请求示例是带着的.经过实验得知,这个必须 ...

  6. java微信小程序调用支付接口(转)

    简介:微信小程序支付这里的坑还是有的,所以提醒各位在编写的一定要注意!!! 1.首先呢,你需要准备openid,appid,还有申请微信支付后要设置一个32位的密钥,需要先生成一个sign,得到pre ...

  7. 个人免签即时到账收款接口 bufpay.com 支持多账号收款

    有很多 bufpay 的用户反馈,单个手机收款有些时候不太方便,切换手机太麻烦:或者是营业额比较多,希望分摊到多个账号上面. 基于以上的问题,bufpay 开发了多手机收款的功能:每个收款的手机安装 ...

  8. java微信小程序调用支付接口

    简介:微信小程序支付这里的坑还是有的,所以提醒各位在编写的一定要注意!!! 1.首先呢,你需要准备openid,appid,还有申请微信支付后要设置一个32位的密钥,需要先生成一个sign,得到pre ...

  9. JAVA 调用第三方短信平台接口发送短信

    做了几个调用三方短信平台发送短信的例子,大部分需要 携带参数,向指定URL发送请求 回顾对接第一个平台时痛苦的乱码经历,这里放一份代码,算是个模版,再用到的时候过来copy一下就OK. 在进入主题之前 ...

随机推荐

  1. Why do we live in this world?

    Why do we live in this world? It seems to me there is nothing but two reasons, - to live the livabil ...

  2. compass color 颜色 对比色[Sass和compass学习笔记]

    最基本的api 是对比色,对与我这种菜鸟来说,没有什么比在一个背景色下 用什么颜色的文字坑蛋疼的事情了,这个工具可以帮助大家很好解决这个问题 api 地址 http://compass-style.o ...

  3. angularJS学习资源最全汇总

    基础 官方: http://docs.angularjs.org angularjs官方网站已被墙,可看 http://www.ngnice.com/: 官方zip下载包 https://github ...

  4. Mysql 中的事件//定时任务

    什么是事件 一组SQL集,用来执行定时任务,跟触发器很像,都是被动执行的,事件是因为时间到了触发执行,而触发器是因为某件事件(增删改)触发执行: 开启事件 查看是否开启: show variables ...

  5. weblogic的下载安装及myeclipse的配置

    weblogic的下载可以参考:http://jingyan.baidu.com/article/c910274b94e179cd371d2d7c.html 安装及myeclipse的配置参考:htt ...

  6. java命令行引入jar包

    编译: E:/>javac -cp e:/jdom.jar test1.java 执行: E:/>java -classpath e:/jdom.jar; test1

  7. NOIP2014初赛分数线及金华上线名单

    NOIP2014初赛分数线及金华上线名单 分数线:提高组81.5,普及组93 这分数线还能再高些吗?悲催的浙江. 金华上线普及组名单: 地市 姓名 学校 年级 参赛语种 成绩 金华 成浩鹏 稠州丹溪校 ...

  8. canvas中的rotate的使用方法

    今天在绘制一个足球滚动的时候,想使用rotate方法,之前看到这个方法的时候,并没有引起任何重视,无非就是和CSS3里的rotate一样的用么... 遗憾的是,事实并非如此,由于代码在公司,我也就不去 ...

  9. php上传大文件时,服务器端php.ini文件中需要额外修改的选项

    几个修改点: 1.upload_max_filesize 上传的最大文件 2.post_max_size 上传的最大文件 3.max_execution_time 修改为0表示无超时,一直等待 4.m ...

  10. PHP 使用 mcrypt 扩展中的 mcrypt_encrypt() 和 mcrypt_decrypt() 对数据进行加密和解密

    <?php /* 使用 mcrypt 扩展中的 mcrypt_encrypt() 和 mcrypt_decrypt() 对数据进行加密和解密 */ // 加密 $algorithm = MCRY ...