支付宝支付接口沙箱环境demo

支付宝签名方式选择:普通公钥、公钥证书
下面介绍公钥证书方式的接入:

1、生成RSA秘钥,官方参考文档:

https://docs.open.alipay.com/291/105971/
在这里插入图片描述

这里我选择第一种,不需要下载直接在线生成密钥。
在这里插入图片描述
此时生成了应用公钥,应用私钥。

点击生成csr按钮
在这里插入图片描述
说明:

组织/公司 名称一定要和开发者中心门户账号信息的公司名称保持一致,否则会导致后续步骤中上传 CSR 证书文件校验失败。

沙箱环境下 组织/公司 名称应填写为 沙箱环境。

2、控制台配置:

登录开发者中心控制台 >研发服务>沙箱应用:
在这里插入图片描述
点击设置:
在这里插入图片描述

加签模式选择公钥证书 ,上传证书文选择上传 CSR 文件在线生成证书或者上传已申请证书,即可完成公钥证书的设置。上传证书文件。即可完成公钥证书的设置。
选择上传CS 文件在线生成证书并点击上传 CSR 文件在线生成证书
在这里插入图片描述

选择 上传已申请证书,点击,选择上一步骤生成的 .csr 文件上传。上传完成证书后,系统会自动识别证书的加密方式。

3、编码:
pom依赖

 <!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
        <dependency>
            <groupId>com.alipay.sdk</groupId>
            <artifactId>alipay-sdk-java</artifactId>
            <version>3.0.0</version>
        </dependency>

一、支付接口

控制层:

    /**
     * 支付
     * @param response
     * @throws IOException
     * @throws AlipayApiException
     */
    @ResponseBody
    @GetMapping("/toPay")
    public CommonResult toPay(Order order, HttpServletResponse response) throws IOException, AlipayApiException {
   
        AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.APP_ID, AlipayConfig.APP_PRIVATE_KEY, "json",
                AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.sign_type);
        // 保存订单
        Boolean flag = orderService.save(order);
        flag = goodsService.saveBatch(order.getGoods());
        if (flag){
   
            //设置请求参数
            AlipayTradePagePayRequest alipayRequest = new
### Spring Boot 集成支付宝沙箱环境的演示示例 为了展示如何在Spring Boot项目中集成支付宝沙箱环境,下面提供了一个简单的例子来说明主要组件和流程。 #### 1. 添加依赖项 首先,在`pom.xml`文件里加入必要的Maven依赖: ```xml <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>LATEST_VERSION_HERE</version> </dependency> ``` 注意替换`LATEST_VERSION_HERE`为实际最新版本号[^1]。 #### 2. 创建配置类 创建名为`AlipayConfig.java`的Java配置类用于设置应用ID、私钥以及公钥等信息: ```java @Configuration public class AlipayConfig { @Value("${alipay.app-id}") private String appId; @Value("${alipay.merchant-private-key}") private String merchantPrivateKey; @Bean(name="alipayClient") public AlipayClient alipayClient() throws Exception{ return new DefaultAlipayClient( "https://openapi.alipaydev.com/gateway.do", appId, merchantPrivateKey, "json", "UTF-8", ALIPAY_PUBLIC_KEY, // 这里的常量应该被替换成真实的支付宝公钥字符串 "RSA2" ); } } ``` 此部分展示了如何初始化一个`AlipayClient`实例以便后续调用API服务。 #### 3. 实现支付请求处理逻辑 定义控制器`PaymentController.java`用来接收前端发起的付款请求并构建相应的参数发送给支付宝网关: ```java @RestController @RequestMapping("/pay/alipay") public class PaymentController { @Autowired private AlipayClient alipayClient; @PostMapping("/create-order") public ResponseEntity<String> createOrder(@RequestBody Map<String,Object> orderDetails){ try { AlipayTradePagePayRequest request = new AlipayTradePagePayRequest(); JSONObject bizContentJson = new JSONObject(orderDetails); request.setBizContent(bizContentJson.toJSONString()); String form = alipayClient.pageExecute(request).getBody(); return ResponseEntity.ok(form); } catch (Exception e) { log.error("Failed to process payment.",e); throw new RuntimeException(e.getMessage()); } } } ``` 上述代码片段解释了怎样通过POST方式接受来自客户端的数据,并将其转换成适合支付宝接口的形式提交出去。 #### 4. 处理异步通知 对于支付完成后由支付宝服务器主动推送过来的状态更新消息,则需编写专门的服务端点如`NotifyService.java`来进行验证与业务逻辑处理: ```java @Service @Slf4j public class NotifyService { @Autowired private PayDemoOrderController payDemoOrderController; @Transactional(rollbackFor=Exception.class) public void handleNotification(Map<String,String[]> paramsMap)throws AlipayApiException{ boolean verifyResult = AlipaySignature.rsaCheckV1(paramsMap, ALIPAY_PUBLIC_KEY,"utf-8","RSA2"); if (!verifyResult) { log.warn("Invalid signature from Alipay."); return ; } String tradeStatus = paramsMap.get("trade_status")[0]; String out_trade_no = paramsMap.get("out_trade_no")[0]; switch(tradeStatus){ case "TRADE_SUCCESS": case "TRADE_FINISHED": // 更新订单状态至已支付 payDemoOrderController.updateDemoOrderPaid(out_trade_no); break; default: log.info("Received unknown status:{}",tradeStatus); } } } ``` 这里描述的是接收到异步回调后的签名校验过程及其对应的订单状态变更操作[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值