Java前后端 Vue+SpringCloud 整合 支付宝 完成支付(沙箱) 操作流程【详解】

12 篇文章 1 订阅
6 篇文章 0 订阅

Java前后端 Vue+SpringCloud 整合 支付宝 完成支付(沙箱) 操作流程【详解】

在我们的项目中实现 支付宝 支付功能,其实很简单。话不多说,开门见山!

准备工作

  • 百度进入支付宝官网

  • 选择我是开发者

  • 点击控制台并登录 

  • 选择沙箱

| 关键配置类

  • 进入沙箱之后,我们需要先将该配置类准备好
package com.alipay.config;

import java.io.FileWriter;
import java.io.IOException;

/* *
 *类名:AlipayConfig
 *功能:基础配置类
 *详细:设置帐户有关信息及返回路径
 *修改日期:2017-04-05
 *说明:
 *以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
 *该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
 */

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://工程公网访问地址/alipay.trade.page.pay-JAVA-UTF-8/notify_url.jsp";

	// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
	public static String return_url = "http://工程公网访问地址/alipay.trade.page.pay-JAVA-UTF-8/return_url.jsp";

	// 签名方式
	public static String sign_type = "RSA2";
	
	// 字符编码格式
	public static String charset = "utf-8";
	
	// 支付宝网关
	public static String gatewayUrl = "https://openapi.alipay.com/gateway.do";
	
	// 支付宝网关
	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();
                }
            }
        }
    }
}

  • 将配置类中的各参数替换为如下图所示的沙箱应用中的信息

  • 点击公钥模式的查看(对应匹配配置类字段如图所示)

 

|| 完整配置效果如图所示: 

项目结合

        准备工作做好啦,接下来进入我们的项目结合环节;

| 导入支付宝依赖

        首先导入 支付宝支付 依赖;

<!--  支付宝支付最新版依赖  -->
<dependency>
    <groupId>com.alipay.sdk</groupId>
    <artifactId>alipay-sdk-java</artifactId>
    <version>4.22.49.ALL</version>
</dependency>

|| 编写测试类测试

        测试配置是否正确

  • 测试成功。封装工具类

| 工具类

package com.yangdaxian.payment.utils;

import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.response.AlipayTradePagePayResponse;
import com.carrey.common_utils.SnowflakeIdWorker;
import com.yangdaxian.payment.config.AlipayConfig;

/**
 * @ClassName MyAlipayUtil
 * @Description TODO
 * @Author yangdaxian
 * @DATE 2022/3/5 07:33:37
 * @Version 1.0
 */
public class MyAlipayUtil {
    /**
     * @description
     * @author Benjamin Yang @date 2022/3/6 19:29:01
     * @param out_trade_no: 订单编号 唯一
     * @param total_amount: 商品/支付 价格
     * @param subject: 主题
     * @return {@link :java.lang.String}
     * @Throws
     */
    public static String createOrderForm(String out_trade_no, String total_amount, String subject) throws AlipayApiException {
        DefaultAlipayClient alipayClient = new DefaultAlipayClient(
                AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key,
                "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
        AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
        request.setNotifyUrl(AlipayConfig.notify_url);
        request.setReturnUrl(AlipayConfig.return_url);
        JSONObject bizContent = new JSONObject();
        bizContent.put("out_trade_no", out_trade_no);
        bizContent.put("total_amount", total_amount);
        bizContent.put("subject", subject);
        bizContent.put("product_code", "FAST_INSTANT_TRADE_PAY");
        request.setBizContent(bizContent.toJSONString());
        AlipayTradePagePayResponse response = alipayClient.pageExecute(request);
        String body = response.getBody();
        return body;
    }

    public static void main(String[] args) throws AlipayApiException {
        DefaultAlipayClient alipayClient = new DefaultAlipayClient(
                AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key,
                "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
        AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
        request.setNotifyUrl(AlipayConfig.notify_url);
        request.setReturnUrl(AlipayConfig.return_url);
        JSONObject bizContent = new JSONObject();
        bizContent.put("out_trade_no", SnowflakeIdWorker.generateId());
        bizContent.put("total_amount", 0.01);
        bizContent.put("subject", "测试商品");
        bizContent.put("product_code", "FAST_INSTANT_TRADE_PAY");
        request.setBizContent(bizContent.toJSONString());
        AlipayTradePagePayResponse response = alipayClient.pageExecute(request);
        String body = response.getBody();
        System.out.println(body);
        if (response.isSuccess()) {
            System.out.println("调用成功");
        } else {
            System.out.println("调用失败");
        }
    }

}

| 后端支付方法接口调用

  •  控制层的使用

| 前端关键代码

效果实现

  • 代码编写完成,当我们点击前端支付按钮后,便自动跳转至如下界面,代表接口调用成功,后面基本上就全自动化完成了

| 账户信息在此获取

        随便充钱儿~咱也体验一下把钱当数字的感觉

  • 输入密码后确认付款即可

  • 交易完成,等待自动跳转

        交易完成后就会自动跳转回你配置文件中指定的地址return_url,到这里我们的支付宝支付就完成啦。

--

更多功能的实现及微信支付后续文章会陆续发出..敬请关注...

祝 玩的开心~


Thanks 

  • 8
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hah杨大仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值