使用以下支付接口
我们使用这个支付宝的:统一下单并支付页面接口
正题
首先进入沙箱环境网址:
https://openhome.alipay.com/platform/appDaily.htm?tab=account
这里有 APPID ,还有密钥
进入沙箱应用之后可以看到信息配置部分需要设置RSA2(SHA256)密钥,由于我已经设置过了,这里就没有相应的截图。
上传密钥
先下载RSA签名验签工具生成密钥和公钥 https://docs.open.alipay.com/291/105971
如果找不到可以到网盘下载 java dome 以及签名工具
百度网盘:https://pan.baidu.com/s/1YNkRyLe0C8xXISNr9z4QpA 提取码:speh
复制公钥设置到沙箱环境中的RSA2(SHA256)密钥中上传就会显示相应的支付公钥给你
下载Java Dmo下载Java Demo网址: https://docs.open.alipay.com/270/106291/ ,将Demo解压,然后下载沙箱版的手机支付宝,到沙箱环境中查看商家信息,和买家信息。
拉到你的项目中的lib下,后新建一个类
AlipayConfig:
public class AlipayConfig {
//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
public static String app_id = "";
// 商户私钥,您的PKCS8格式RSA2私钥
public static String merchant_private_key = "";
// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
public static String alipay_public_key = "";
// 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String notify_url = "";
// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String return_url = "";
// 签名方式
public static String sign_type = "";
// 字符编码格式
public static String charset = "";
// 支付宝网关
public static String gatewayUrl = "";
// 支付宝网关
public static String log_path = "";
//JSON格式
public static String format = "JSON";
}
在控制器Controller代码:
protected void ZhiFuBaoDanMianFu (HttpServletRequest request, HttpServletResponse response) throws IOException{
//获得初始化的AlipayClient
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
//设置请求参数
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
alipayRequest.setReturnUrl(AlipayConfig.return_url); alipayRequest.setNotifyUrl(AlipayConfig.notify_url);
//商户订单号,商户网站订单系统中唯一订单号,必填
String out_trade_no = "201905141044";
//付款金额,必填
String total_amount = "10";
//订单名称,必填
String subject = "支付宝测试";
//商品描述,可空
String body = "购买此课程";
alipayRequest.setBizContent(
"{\"out_trade_no\":\""+ out_trade_no +"\","
+ "\"total_amount\":\""+ total_amount +"\","
+ + "\"subject\":\""+ subject +"\","
+ + "\"body\":\""+ body +"\","
+ + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
//请求
String result;
try {
result = alipayClient.pageExecute(alipayRequest).getBody(); response.setContentType("text/html;charset=" + AlipayConfig.charset);
response.getWriter().write(result);
//直接将完整的表单html输出到页面
response.getWriter().flush();
response.getWriter().close();
} catch (AlipayApiException e)
{
e.printStackTrace();
response.getWriter().write("捕获异常出错"); response.getWriter().flush();
response.getWriter().close();
}
}
这样就已经完成了,执行后到这个Controller的时候就会执行支付页面。
效果: