支付
java支付宝支付的实现,支付宝有沙盒可以给我们提供支付测试环境,微信支付因为没有测试用密钥,需要经营证件之类的东西开通商家账户,所以我选择放弃
支付宝
pom.xml
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.35.139.ALL</version>
</dependency>
AlipayConfig配置类
package com.it.controller;
public class AlipayConfig {
// 应用ID
public static String app_id = "20210000000000000";
// 商户私钥,PKCS8格式RSA2私钥
public static String merchant_private_key = "xxxxx";
// 支付宝公钥
public static String alipay_public_key = "xxxxx";
// 签名方式
public static String sign_type = "RSA2";
// 字符编码格式
public static String charset = "utf-8";
// 支付宝网关
public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";
// 服务器异步通知页面路径 须外网可以正常访问
public static String NOTIFY_URL = "http://192.168.000.000:8080/orders/alipayReturnNotice";
// 支付成功后的返回页面
public static String RETURN_URL = "http://192.168.000.000:8080/orders/alipayReturnUrl";
}
支付核心代码
//跳转到支付宝付款页面
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl,
AlipayConfig.app_id, AlipayConfig.merchant_private_key,
"json", AlipayConfig.charset, AlipayConfig.alipay_public_key,
AlipayConfig.sign_type, AlipayConfig.NOTIFY_URL, AlipayConfig.RETURN_URL);
//支付宝回调
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
alipayRequest.setReturnUrl(AlipayConfig.RETURN_URL);//返回页面
alipayRequest.setNotifyUrl(AlipayConfig.NOTIFY_URL);//通知页面
//订单号
String out_trade_no = orders.getOrdersCode().toString();
out_trade_no = URLDecoder.decode(out_trade_no, "UTF-8");
//总金额
String total_amount = orders.getTotal().toString();
total_amount = URLDecoder.decode(total_amount, "UTF-8");
//商品名称
String shopName = "商品:" + goodsName;
shopName = URLDecoder.decode(shopName, "UTF-8");
//商品描述
String intro = "";
intro = URLDecoder.decode(intro, "UTF-8");
//回调函数
alipayRequest.setBizContent("{" +
" "out_trade_no":"" + out_trade_no + ""," +
" "product_code":"FAST_INSTANT_TRADE_PAY"," +
" "total_amount":" + total_amount + "," +
" "subject":"" + shopName + ""," +
" "body":"" + intro + """ +
" }" +
" }");
String form = "";
try {
form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单
} catch (AlipayApiException e) {
e.printStackTrace();
}
jsonObject.put("code", 200);
jsonObject.put("formData", form);
return jsonObject.toJSONString();
微信
待补充
可参考微信支付文档:blog.csdn.net/emttxdy/art…