java支付

208 阅读1分钟

支付

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…