Java web 支付宝电脑支付(沙箱)


一、什么是沙箱(网络编程虚拟执行环境)

    Sandboxie(又叫沙箱、沙盘)即是一个虚拟系统程序,允许你在沙盘环境中运行浏览器或其他程序,因此运行所产生的变化可以随后删除。它创造了一个类似沙盒的独立作业环境,在其内部运行的程序并不能对硬盘产生永久性的影响。其为一个独立的虚拟环境,可以用测试不受信任的应用程序或上网行为。

二、 蚂蚁沙箱环境

    蚂蚁沙箱环境是协助开发者进行接口功能开发及主要功能联调的辅助环境,只用于开发者测试或学习。正式应用:创建企业或个人账号 -> 创建应用 -> 签约 -> 上线。

三、步骤

1、创建账号

蚂蚁金服官网 ,点击右上角有 免费入驻 按钮,选择账号类型,如图,如果只是开发或学习,入驻“自研开发者”即可,可直接关联自己的支付宝账号。完善信息后即可开发。


2、配置沙箱环境

(1)如果想体验使用官方文档配置的话,可以直接去蚂蚁金服的 沙箱环境使用说明
(2)进入 沙箱环境界面,会看到支付宝已经为我们提供了测试用的APPID,支付宝网关等信息,这些信息会用在后面的支付宝Java web案例中。RSA2(SHA256)密钥需要自己下载工具配置,下文中会讲解。

(3)创建 RSA2(SHA256)密钥,下载 Windows办的秘钥生成工具,解压后会看到如下内容,执行bat脚本。执行脚本后,会进入程序,点击生成秘钥即可。应用私钥会用在后面的支付宝的Java web案例中,应用公钥需要上传。


(4)上传“ 应用公钥”,得到支付宝公钥,如果未上传,此处会让你上传;上传后会生成支付宝公钥

(5)验证应用公钥的正确性,下载 工具,将 商户应用私钥复制到工具的左侧输入框,点击生成签名,将生成的信息粘贴到第一幅图的输入框中,点击验证即可。

3.运行程序

(1)下载支付宝的 demo,下载Java版本的;导入项目后,目录结构如下。

(2)修改配置文件信息,AlipayConfig.java
  • 应用ID,即沙箱环境的APPID
        
  • 商户私钥,即使用工具跟商户应用公钥一块生成的商户应用私钥(不是应用公钥)
        
  • 支付宝公钥,即上传应用公钥后生成的支付宝公钥
        
  • 两个路径均改为localhost:8080即可
  • 支付宝网关:
          
  • 注意:支付宝的沙箱网关跟实际应用的网关不相同
        

4.测试,查看效果

(1)执行程序,访问项目,效果如图,点击付款->点击登录账户付款->输入密码->付款成功。 测试账户


支付成功后会返回支付信息,此处用的支付宝的默认界面

(2)体验扫码支付,下载沙箱版支付宝,登录测试账户,即可扫码付款

支付宝账号: wgjwub8119@sandbox.com
登录密码:111111 
支付密码:111111

注:本人小白,有什么不对的地方,还望大神指出!

### Java项目中集成支付宝沙箱进行Web支付测试 #### 准备工作 在开始之前,需要完成一些准备工作以确保项目的顺利运行。这包括创建支付宝开发者账号并启用沙箱环境,下载官方提供的SDK以及配置必要的参数。 - 创建支付宝开放平台账户,并进入【应用管理】页面创建一个新的应用。 - 启用沙箱功能,获取到对应的App ID、商户私钥、支付宝公钥以及其他必要信息[^1]。 #### 配置文件设置 为了简化开发流程,通常会将所有的配置项集中在一个类中以便于管理和维护: ```java public class AlipayConfig { public static final String APP_ID = "your_app_id"; // 替换为实际的AppID public static final String MERCHANT_PRIVATE_KEY = "merchant_private_key"; public static final String ALIPAY_PUBLIC_KEY = "alipay_public_key"; public static final String NOTIFY_URL = "http://yourdomain.com/notify_url"; public static final String RETURN_URL = "http://yourdomain.com/return_url"; public static final String GATEWAY_URL = "https://openapi.alipaydev.com/gateway.do?"; } ``` 上述代码片段展示了如何定义常量来存储敏感数据和回调URLs。其中`GATEWAY_URL`指向的是沙箱环境下的网关地址[^3]。 #### 实现支付请求逻辑 当用户发起一次购买行为时,服务端需构建相应的订单详情并向支付宝提交该笔交易的信息。下面是一个简单的实现方式: ```java import com.alipay.api.AlipayApiException; import com.alipay.api.internal.util.AlipaySignature; // 构建业务参数模型对象 AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest(); alipayRequest.setReturnUrl(AlipayConfig.RETURN_URL); alipayRequest.setNotifyUrl(AlipayConfig.NOTIFY_URL); Map<String, Object> bizContent = new HashMap<>(); bizContent.put("out_trade_no", orderNo); // 商户网站唯一订单号 bizContent.put("total_amount", totalAmount.toString()); // 订单金额 bizContent.put("subject", subject); // 商品名称 bizContent.put("product_code", "FAST_INSTANT_TRADE_PAY"); alipayRequest.setBizContent(JSON.toJSONString(bizContent)); String form = ""; try { form = client.pageExecute(alipayRequest).getBody(); // 调用SDK生成表单HTML } catch (AlipayApiException e) { throw new RuntimeException(e.getMessage(), e); } model.addAttribute("form", form); // 将html传递至前端展示 ``` 此部分负责组装待发送的数据包并通过`pageExecute()`方法得到最终用于重定向或者嵌入iframe内的HTML字符串形式的结果[^2]。 #### 处理异步通知 除了同步跳转外,还需要处理来自支付宝服务器推送过来的通知消息。一般情况下采用POST方式进行通信,因此可以在Spring Boot控制器里新增如下方法接收这些更新事件: ```java @PostMapping("/notify") @ResponseBody public String notify(@RequestBody Map<String,String[]> params){ boolean verifyResult=false; try{ verifyResult=AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY,"utf-8","RSA2"); }catch(Exception ex){ } if(!verifyResult){ log.error("验签失败!"); return "fail"; } // TODO 更新数据库状态等操作 return "success"; } ``` 以上即完成了整个基于Java语言利用支付宝沙盒环境下模拟真实场景下网页版付款的整体过程概述。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值