尚品汇-支付宝介绍、跳转支付订单页面实现(四十六)

news2024/11/12 21:30:27

目录:

(1)支付宝介绍

(1)支付宝介绍

(3)显示付款页面信息

(5)创建支付控制器PaymentController

(1)支付宝介绍

支付宝简介

支付宝(中国)网络技术有限公司 [1]  是国内的第三方支付平台,致力于提供简单、安全、快速的支付解决方案 [2]  。支付宝公司从2004年建立开始,始终以信任作为产品和服务的核心。旗下有支付宝支付宝钱包两个独立品牌。自2014年第二季度开始成为当前全球最大的移动支付厂商。

当用户提交订单会跳转到选择支付渠道页面!

http://payment.gmall.com/pay.html?orderId=43

当用户点击立即支付时生成支付的二维码

 

使用支付宝app 进行扫码支付

过程分析

对接支付宝的准备工作

1、申请条件

1.  企业或个体工商户可申请;

2.  提供真实有效的营业执照,且支付宝账户名称需与营业执照主体一致;

3.  网站能正常访问且页面信息有完整商品内容;

4.  网站必须通过ICP备案,个体户备案需与账户主体一致。

(团购类网站不支持个体工商户签约)

支付手续费

申请步骤

  1. 支付宝商家中心中申请 https://www.alipay.com/
  2. https://b.alipay.com/signing/productSetV2.htm?mrchportalwebServer=https%3A%2F%2Fmrchportalweb.alipay.com

 

 

 

 

 

 

 

 

一个工作日后登录到蚂蚁金服开发者中心:

可以查看到一个已经签约上线的应用。 其中非常重要的是这个APPID,需要记录下来之后的程序中要用到这个参数。

点击查看

到此为止,电商网站可以访问支付宝的最基本的准备已经完成。

 

接下来搭建支付模块

(1)支付宝介绍

支付宝开发手册:https://docs.open.alipay.com/270/105900/

搭建service-payment

搭建方式如service-order

修改pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
      <groupId>com.atguigu.gmall</groupId>
      <artifactId>service</artifactId>
      <version>1.0</version>
   </parent>

   <version>1.0</version>
   <artifactId>service-payment</artifactId>
   <packaging>jar</packaging>
   <name>service-payment</name>
   <description>service-payment</description>

   <dependencies>   
<dependency>
       <groupId>com.atguigu.gmall</groupId>
       <artifactId>service-order-client</artifactId>
       <version>1.0</version>
    </dependency>
 </dependencies>

   <build>
      <finalName>service-payment</finalName>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>

</project>

添加配置

bootstrap.properties

spring.application.name=service-payment
spring.profiles.active=dev
spring.cloud.nacos.discovery.server-addr=192.168.200.129:8848
spring.cloud.nacos.config.server-addr=192.168.200.129:8848
spring.cloud.nacos.config.prefix=${spring.application.name}
spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml

 

 

启动类

package com.atguigu.gmall.payment;


@SpringBootApplication
@ComponentScan({"com.atguigu.gmall"})
@EnableDiscoveryClient
@EnableFeignClients(basePackages= {"com.atguigu.gmall"})
public class ServicePaymentApplication {

   public static void main(String[] args) {
      SpringApplication.run(ServicePaymentApplication.class, args);
   }

}

 

导入sdk包

https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java

<!--导入支付宝支付sdk-->
<dependency>
   <groupId>com.alipay.sdk</groupId>
   <artifactId>alipay-sdk-java</artifactId>
   <version>4.8.73.ALL</version>
</dependency>

(3)显示付款页面信息

支付页面信息展示流程

 

在根据订单id获取订单信息接口

在service-order添加接口

OrderService接口


/**
 * 根据订单Id 查询订单信息
  * @param orderId
 * @return
 */
OrderInfo getOrderInfo(Long orderId);

实现类: 


@Override
public OrderInfo getOrderInfo(Long orderId) {
    OrderInfo orderInfo = orderInfoMapper.selectById(orderId);
    QueryWrapper<OrderDetail> queryWrapper = new QueryWrapper<>();
    queryWrapper.eq("order_id", orderId);
    List<OrderDetail> orderDetailList = orderDetailMapper.selectList(queryWrapper);
    orderInfo.setOrderDetailList(orderDetailList);
    return orderInfo;
}
OrderApiController
/**
 * 内部调用获取订单
  * @param orderId
 * @return
 */
@GetMapping("inner/getOrderInfo/{orderId}")
public OrderInfo getOrderInfo(@PathVariable(value = "orderId") Long orderId){
    return orderService.getOrderInfo(orderId);
}

在service-order-client添加远程调用接口

OrderFeignClient


/**
 * 获取订单
  * @param orderId
 * @return
 */
@GetMapping("/api/order/inner/getOrderInfo/{orderId}")
OrderInfo getOrderInfo(@PathVariable(value = "orderId") Long orderId);
OrderDegradeFeignClient

@Override
public OrderInfo getOrderInfo(Long orderId) {
    return null;
}

 

- server-gateway模块网关配置

- id: web-payment
  uri: lb://web-all
  predicates:
  - Host=payment.gmall.com
- id: service-payment
  uri: lb://service-payment
  predicates:
  - Path=/*/payment/** # 路径匹配

(5)创建支付控制器PaymentController

Web-all模块

 

package com.atguigu.gmall.payment.controller;
@Controller
public class PaymentController {

    @Autowired
    private OrderFeignClient orderFeignClient;

    /**
     * 支付页
           * @param request
     * @return
     */
    @GetMapping("pay.html")
    public String success(HttpServletRequest request, Model model) {
        String orderId = request.getParameter("orderId");
        OrderInfo orderInfo = orderFeignClient.getOrderInfo(Long.parseLong(orderId));
        model.addAttribute("orderInfo", orderInfo);
        return "payment/pay";
    }
}

 页面渲染


<div class="checkout-tit">
   <h4 class="tit-txt"><span class="success-icon"></span><span  class="success-info">订单提交成功,请您及时付款,以便尽快为您发货~~</span></h4>
   <div class="paymark">
      <span class="fl">请您在提交订单<em class="orange time">4小时</em>之内完成支付,超时订单会自动取消。订单号:<em th:text="${orderInfo.id}">00</em></span>
      <span class="fr"><em class="sui-lead">应付金额:</em><em  class="orange money" th:text="'¥'+${orderInfo.totalAmount}">¥1</em></span>
   </div>
</div>

跳转到支付页面:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2113180.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

没资料的屏幕怎么点亮?思路分享

这次尝试调通一个没资料的屏幕&#xff0c;型号是HYT13264&#xff0c;这个是淘宝上面的老王2.9元屏&#xff0c;成色很好但是长期库存没有资料和代码能点亮&#xff0c;仅仅只有一个引脚定义。这里我使用Arduino Nano作为控制器尝试点亮这个模块。 首先&#xff0c;已知别人找…

当水泵遇上物联网:智能水务新时代的浪漫交响

在当代科技的宏伟乐章中&#xff0c;物联网&#xff08;IoT&#xff09;技术宛如一位技艺高超的指挥家&#xff0c;引领着各行各业迈向智能化的新纪元。当这股创新浪潮涌向古老的水务行业时&#xff0c;一场前所未有的“智能水务”革命便悄然上演&#xff0c;而水泵——这一传统…

vue3 自定义指令 directive

1、官方说明&#xff1a;https://cn.vuejs.org/guide/reusability/custom-directives 除了 Vue 内置的一系列指令 (比如 v-model 或 v-show) 之外&#xff0c;Vue 还允许你注册自定义的指令 (Custom Directives)。 我们已经介绍了两种在 Vue 中重用代码的方式&#xff1a;组件和…

828华为云征文 | 华为云Flexusx实例,高效部署Servas书签管理工具的优选平台

需要了解 本文章主要讲述在 华为云Flexus X 实例上使用docker快速部署Servas&#xff0c;一款功能强大的自托管书签管理工具&#xff0c;专为追求高效与个性化的用户设计。选择合适的云服务器&#xff1a; 本文采用的是 华为云服务器 Flexus X 实例&#xff08;推荐使用&#x…

Vue 中 watch 和 watchEffect 的区别

watch 和 watcheffect 都是 vue 中用于监视响应式数据的 api&#xff0c;它们的区别在于&#xff1a;watch 用于监视特定响应式属性并执行回调函数。watcheffect 用于更通用的响应式数据监视&#xff0c;但回调函数中不能更新响应式数据。Vue 中 watch 和 watchEffect 的区别 …

C++ 日历计算器的实现

日历计算器 创建一个日期类对运算符进行重载代码 创建一个日期类 年月日为类的成员变量&#xff0c;所以放到私有区域&#xff0c;又因为成员变量为内置类型&#xff0c;编译器自动生成的默认构造函数对其不做处理&#xff0c;所以需要我们显示定义一个构造函数&#xff0c;而…

亿发:中小型制造企业数字化转型典型场景、痛点、解决方案

随着全球制造业的不断发展&#xff0c;中小型制造企业正面临前所未有的挑战和机遇。数字化转型成为了企业提升竞争力、优化生产效率、应对市场变化的关键路径。然而&#xff0c;对于资源相对有限的中小型制造企业而言&#xff0c;数字化转型并非易事。他们在推进转型的过程中往…

视频的编码与传输 学习笔记2 信息论

说白了&#xff0c;关键点就三个&#xff1a;信源&#xff0c;压缩与信道 DMS就是无记忆的信源&#xff0c;该输出什么就输出什么。 马尔卡夫信源&#xff0c;准确来讲是m马尔卡夫&#xff0c;会受到前m个状态的影响。&#xff08;妈的&#xff0c;马尔卡弗还在追我&#xff0c…

【工具分享】针对加解密综合利用后渗透工具 - DecryptTools

下载地址&#xff1a; 链接: https://pan.quark.cn/s/2e451bd65d79工具介绍 支持22种OA、CMS 加解密密码查询功能 万户OA 用友NC 金蝶EAS 蓝凌OA 致远OA 宏景ERP 湖南强智 金和jc6 瑞友天翼 金和C6 Navicat 华天动力 FinalShell 亿赛通 帆软报表 H3C CAS Weblogic 金蝶云星空…

基于SSM+Vue+MySQL的可视化高校公寓管理系统

系统展示 管理员界面 宿管界面 学生界面 系统背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。这样的…

51单片机-第十二节-LCD1602液晶显示屏

一、LCD1602介绍&#xff1a; LCD1602是一种字符型液晶显示屏&#xff0c;可以显示ASCII码的标准字符和其他的内置特殊字符。 显示容量&#xff1a;16*2个字符&#xff0c;每个字符为5*7点阵。 二、引脚及应用电路&#xff1a; 其中&#xff1a;D0-7这8位数据是接在P0引脚上…

聚焦2024数博会|与天空卫士一起探索AI与数据安全的融合应用

中国国际大数据产业博览会&#xff08;简称数博会&#xff09;&#xff0c;是全球首个以大数据为主题的博览会&#xff0c;自2015年创办以来&#xff0c;经过多年的深厚沉淀&#xff0c;数博会已发展成为国际知名、引领前沿趋势的专业展示合作平台。 2024年8月28日至30日&#…

T1打卡——mnist手写数字识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 1.定义GPU import tensorflow as tfgpustf.config.list_physical_devices("GPU")if gpus:gpu0gpus[0]tf.config.experimental.set_memort_groth(gp…

重卡换电连接器的应用

电动汽车换电模式涉及在专门充电站集中存储和充电大量电池&#xff0c;实现统一配送&#xff0c;并在换电站对电动汽车进行快速电池更换服务&#xff0c;或整合充电、物流、调配和换电服务。新能源汽车面临续航限制和配套设施不完善等问题&#xff0c;影响了其大规模推广。电池…

Java创建线程(5种方法)

操作系统提供api操作线程 线程本身是操作系统提供的&#xff0c;操作系统提供API让我们操作线程&#xff0c;JVM对操作系统api进行了封装&#xff0c;在线程这一部分&#xff0c;就提供了Thread类&#xff0c;表示线程。 创建线程 创建一个MyThread类&#xff08;类的名字不…

基于PI控制算法的异步感应电机转速控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于PI控制算法的异步感应电机转速控制系统simulink建模与仿真。PI控制器是一种经典的线性控制器&#xff0c;它通过将控制量的比例部分和积分部分相结合来实现对系统输出的调…

【C-实践】网络聊天室(1.0)

概述 使用了 tcp epoll &#xff0c;实现网络聊天室 1.0 版&#xff0c;用户的显示框和输入框在一起 2.0 版&#xff0c;用户的显示框与输入框分离 功能 主要功能&#xff1a;用户连接服务器&#xff0c;就会自动进入网络聊天室与其他在线用户一起聊天 服务器搭建 创建用户数…

探索EasyCVR与AI技术深度融合:视频汇聚平台的新增长点

随着5G、AI、边缘计算、物联网&#xff08;IoT&#xff09;、云计算等技术的快速发展&#xff0c;万物互联已经从概念逐渐转变为现实&#xff0c;AIoT&#xff08;物联网人工智能&#xff09;的新时代正在加速到来。在这一背景下&#xff0c;视频技术作为信息传输和交互的重要手…

常见Python GUI库分析

引言 在Python环境下进行桌面编程时&#xff0c;选择合适的GUI&#xff08;图形用户界面&#xff09;库至关重要。在Python环境下进行桌面编程GUI开发时&#xff0c;有多个优秀的库可供选择。以下是一些推荐的GUI库&#xff0c;包括它们的推荐理由、优劣势以及简单的demo示例。…

【论文阅读】SwiftTheft: A Time-Efficient Model Extraction Attack Framework(2024)

完整标题 SwiftTheft: A Time-Efficient Model Extraction Attack Framework Against Cloud-Based Deep Neural Networks 摘要 With the rise of artificial intelligence(人工智能) and cloud computing(云计算), machine-learning-as-a-service platforms(机器学习即…