java 支付宝沙箱环境网页支付

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:43   1277   0

首先去支付宝开发平台入驻https://open.alipay.com/

1:开发入驻

输入信息入驻后进入 研发服务--》沙箱

2:查看appid和支付宝网关

因为是沙箱环境 所以网关统一都是测试环境 https://openapi.alipaydev.com/gateway.do

3:生成密钥

在沙箱环境中配置应用公钥

得到支付宝公钥

4:配置

新建配置

package com.sinosoft.config;

public class AlipayConfig {
    //客户appid
    public static String APPID="第二步的appid";
    //私钥
    public static String RSA_PRIVATE_KEY="应用私钥 第三步需要配置到java中的";
    //服务器异步通知页面路径
    public static String notify_url="http://www.baidu.com";
    public static String return_url="http://www.baidu.com";
    //请求网关地址
    public static String URL="https://openapi.alipaydev.com/gateway.do";
    //编码
    public static String CHARSET = "UTF-8";
    //返回格式
    public static String FORMAT="json";
    //支付宝公钥
    public static String ALIPAY_PUBLIC_KEY="配置应用公钥之后生成的支付宝公钥";
    //RSA2
    public static String SIGNTYPE="RSA2";
}

5:编写请求页面和java

package com.sinosoft.controller;

import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.AlipayTradePagePayModel;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.response.AlipayTradePagePayResponse;
import com.sinosoft.config.AlipayConfig;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

@RestController
public class OrderController {
    /**
     * 阿里支付
     */
    @PostMapping("/oalipay")
    public String alipay(String out_trade_no,String subject,String total_amount,String body,String product_code) throws AlipayApiException {
        AlipayConfig alipayConfig = new AlipayConfig();
        //封装RSA签名方式
        AlipayClient alipayClient = new DefaultAlipayClient(
                alipayConfig.URL,//请求网关
                alipayConfig.APPID,//收款ID
                alipayConfig.RSA_PRIVATE_KEY,//私钥
                alipayConfig.FORMAT,//返回格式
                alipayConfig.CHARSET,//字符编码格式
                alipayConfig.ALIPAY_PUBLIC_KEY,//支付宝公钥
                alipayConfig.SIGNTYPE);//加密方式
        //创建request
        AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
        //设置异步回调地址
        request.setNotifyUrl(alipayConfig.notify_url);
        //设置同步回调地址
        request.setReturnUrl(alipayConfig.return_url);
        //封装参数
        AlipayTradePagePayModel model = new AlipayTradePagePayModel();
        model.setOutTradeNo(UUID.randomUUID().toString());//商品id
        model.setBody(body);//商品描述
        model.setSubject(subject);//商品名称
        model.setTimeoutExpress("30m");//超市
        model.setTotalAmount(total_amount);//支付金额
        model.setProductCode("FAST_INSTANT_TRADE_PAY");
        //设置request参数
        request.setBizModel(model);
        /*alipayRequest.setBizContent("{\"out_trade_no\":\"" + out_trade_no + "\","
                + "\"total_amount\":\"" + total_amount + "\","
                + "\"subject\":\"" + subject + "\","
                + "\"body\":\"" + body + "\","
                + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");*/

        //生成表单
        AlipayTradePagePayResponse alipayTradePagePayResponse = alipayClient.pageExecute(request);
        String result = alipayTradePagePayResponse.getBody();
        return result;
    }
}
<!DOCTYPE html>
<html lang="en">
<head>
       <meta charset="UTF-8">
       <title>Title</title>
</head>
<body>
<H1>支付宝demo测试</H1>
<hr>
<form action="/oalipay" method="post">
       *商户订单 :<br>
       <input type="text" name="out_trade_no"><br>
       *订单名称 :<br>
       <input type="text" name="subject"><br>
       *付款金额 :<br>
       <input type="text" name="total_amount"><br>
        商品描述 :<br>
       <input type="text" name="body"><br>
          商品码 :<br>
       <input type="text" name="product_code"><br>
       <input type="submit" value="支付宝支付">
</form>
</body>
</html>

6:访问

7:点击支付

跳转到支付页面

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP