本次介绍支付宝沙箱支付
1、生成RSA密匙
关于RSA介绍和使用 传送门
注意:工具生成的是应用公匙和应用私匙 可以下载支付宝开发工具来生成
2、沙箱配置公匙和秘钥(可以查看官网)存储过后可一直使用
3.接下来就是配置我们的项目了
maven项目加入依赖
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>3.7.110.ALL</version>
</dependency>
一下配置均可在沙箱环境中查找
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://localhost:8080/order/myorder";
// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 return_url.jsp
public static String return_url ="http://localhost:8080/order/myorder";
// 签名方式
public static String sign_type = "RSA2";
// 字符编码格式
public static String charset = "utf-8";
// 支付宝网关
public static String gatewayUrl = "";
// 支付宝网关
public static String log_path = "C:\\";
//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
/**
* 写日志,方便测试(看网站需求,也可以改成把记录存入数据库)
* @param sWord 要写入日志里的文本内容
*/
public static void logResult(String sWord) {
FileWriter writer = null;
try {
writer = new FileWriter(log_path + "alipay_log_" + System.currentTimeMillis()+".txt");
writer.write(sWord);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
同步和异步回调表示支付宝回调你的网站,你需要做一个订单是否成功,在自己的系统做业务逻辑,等待支付宝回调(一下章节简介)
4.控制层
@Controller
public class PayController {
@Resource
private OrderService orderService;
@RequestMapping("/toPay")
@ResponseBody
public String toPay(String orderid,String price,String title) throws Exception {
//获得初始化的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);
try {
//发送请求参数 orderid 订单id,price表示价格,title表示订单标题
alipayRequest.setBizContent("{\"out_trade_no\":\"" + orderid + "\","
+ "\"total_amount\":\"" + price + "\","
+ "\"subject\":\"" + title+ "\","
+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
//请求
String result;
result = alipayClient.pageExecute(alipayRequest).getBody();
System.out.println("*********************\n返回结果为:" + result);
return result;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
}
支付宝会返回一个表单提交的代码直接执行,自动跳转支付页面
使用自己的沙箱支付宝软件即可支付,支付成功后,支付宝就会调回我们网站的接口,也就是上述描述的,详细请看下一章