参考开发文档:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.FjX7f6&treeId=193&articleId=105285&docType=1#s0
文档中其它地方还好理解,倒是第三步有点容易让人误会,下面是第三步中的一张表,红色字体解释了让人容易误会的地方:
配置通用接入参数:
参数名称 | 参数说明 |
APP_ID |
开放平台应用的APPID,详见创建应用并获取APPID,应用审核上线后生成的一个appid |
APP_PRIVATE_KEY |
开发者应用私钥,详见配置密钥,注意:这个私钥是secret_key_tools工具生成的pkcs8结尾的私钥文件 |
CHARSET |
请求和签名使用的字符编码格式,支持GBK和UTF-8 |
ALIPAY_PUBLIC_KEY |
支付宝公钥,详见配置密钥,配置应用公钥后生成的支付宝公钥 |
即时交易开发文档:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.xXBAjT&treeId=62&articleId=104743&docType=1,不知道为什么新版本开发文档中找不到即时交易,并且沙箱模式不支持即时交易。
下面代码是我使用支付宝沙箱模式做的一个demo:
![复制代码](https://common.cnblogs.com/images/copycode.gif)
1 /**
2 * 阿里支付平台接入参数配置类
3 * @author gaojunming
4 *
5 */
6 public class Config {
7 //商户UID
8 public static final String SELLER_ID="2088102169470215";
9 /*以下为通用接入参数*/
10 //开放平台应用的APPID
11 public static final String APP_ID="2016080100142192";
12 //请求和签名使用的字符编码格式
13 public static final String CHARSET="UTF-8";
14 //支付宝公钥
15 public static final String ALIPAY_PUBLIC_KEY="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIgHnOn7LLILlKETd6BFRJ0GqgS2Y3mn1wMQmyh9zEyWlz5p1zrahRahbXAfCfSqshSNfqOmAQzSHRVjCqjsAw1jyqrXaPdKBmr90DIpIxmIyKXv4GGAkPyJ/6FTFY99uhpiq0qadD/uSzQsefWo0aTvP/65zi3eof7TcZ32oWpwIDAQAB";
16 //开发者应用私钥
17 public static final String APP_PRIVATE_KEY="MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAN2tw80/8XA6vE6qLwIKlFCo8yEZ3+YMvwbWJJK/2QX+oTcriMC26XOGrMlXRIGPTWgS6UPLwArd8H1R4oHHBhx6teHjLyN0NBPBd5Zdzf9e4I9sKQNXOF4siury0eJVUWAQOps5s5k06vdpsBzjX+Sh3Zi3BANgBX6Wq4LszY8lAgMBAAECgYAPf6Se5weUVybvQQrEU8UG1qkY+VwkE2QPsE0iTXN47dKLrumCv8cWoqXV9dn+TOyWiCvy533nxJiZym3RsP6GQeEczEzcqCUMOtRamxU3HVoVz8oevnJjv4ieXLhMqCXCAWtreW4SJMlqid637PM8i9Oh1yzquvyrvq6nf7NpwQJBAPbPl/8OYt29KhrPK2Rth8Hjq5Lpq5MRbrE8maoOImJmmJ+lM1FgcFXF1hseSrhHbv9BuYfyiqcRDfznTnwhMI0CQQDl7qGkHnbINL2htWlUWC/0hrbS4ckKX80RzSZplGf7uLXUn9wSQNucPIWUOeRJ+6iHq0+NACgpgxfNXmXr/C75AkAtOMw4x4IF7usQDnV86TS+qeB+AqKVR9RoVRoytnRGY1YDqllEx87NaHpabapzKWOFEZ3U8vPEuLM/a4JN7CbhAkEAxKaygn43kwVghlR0kFmYMiehZ30KB6Bl8GqoBraRtH2GriJHAymLafVtPZfBwvDEc7w1nl9a+h4Plmq8+vbFaQJBAIzz0mA55/pkdIMUruAm8bsRmCeWhktMemyJPGjqs3wRz2y67V4DpVkh0vVI1osEw44/MfRIykAsZrItr/eIYYQ=";
18 //支付宝网关
19 public static final String URL="https://openapi.alipaydev.com/gateway.do";//注意沙箱模式的支付宝网关和正式支付宝网关是不同的
20 }
![复制代码](https://common.cnblogs.com/images/copycode.gif)
1 /**
2 * 阿里支付平台功能类
3 *
4 * @author gaojunming
5 *
6 */
7 public class Alipay {
8 // 初始化alipayClient对象
9 public static AlipayClient alipayClient = new DefaultAlipayClient(
10 Config.URL, Config.APP_ID, Config.APP_PRIVATE_KEY, "json",
11 Config.CHARSET, Config.ALIPAY_PUBLIC_KEY);
12
13 /**
14 * wap支付
15 *
16 * @return
17 * @throws AlipayApiException
18 */
19 public static AlipayTradeWapPayResponse pay(String content) throws AlipayApiException {
20 // 创建API对应的request
21 AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();
22 // 在公共参数中设置回跳和通知地址(应用提供给支付宝的请求路径),沙箱模式中不起作用(不知道是不是这个原因,支付宝技术客服告诉我正式上线后就没问题)
23 alipayRequest.setReturnUrl("http://xxx.com/xxx");
24 alipayRequest.setNotifyUrl("http://xxx.com/xxx");
25 // 填充业务参数
26 alipayRequest.setBizContent(content);
27 AlipayTradeWapPayResponse alipayResponse = alipayClient
28 .pageExecute(alipayRequest);
29 return alipayResponse;
30 }
31 }
1 /**
2 * 移动端网页支付
3 * @param content 业务参数
4 * @throws IOException
5 * @throws AlipayApiException
6 */
7 @RequestMapping(value="wab/pay",method=RequestMethod.POST)
8 public void wapPay(@RequestParam(value = "content", required = true) String content) throws IOException, AlipayApiException {
9 //设置将发送到客户端的响应的内容类型
10 response.setContentType("text/html;charset="+Config.CHARSET);
11 AlipayTradeWapPayResponse alipayResponse= Alipay.pay(content);
12 String from= alipayResponse.getBody();
13 System.out.println(from);
14 //输出支付宝返回的表单页面
15 printHtml(from);
16 }
支付宝开放平台支持中心:https://support.open.alipay.com/alipay/support/index.htm