java支付宝开发-02-手机网站支付

news/2024/5/14 1:18:14/文章来源:https://blog.csdn.net/weixin_34297704/article/details/89665383

源码已上传github,欢迎专注:https://github.com/shirayner/alipay-wap

一、基础部分

1.手机网站支付产品介绍

1.1 阅读官方介绍: 手机网站支付产品介绍

1.2 看完官方的介绍之后,可以做出如下总结:

通过接入此接口,能让商家接入支付宝的支付功能。具体支付流程如下:

(1)若用户已安装支付宝客户端,则在支付时会唤起支付宝客户端进行支付。

(2)若用户未安装支付宝客户端,则需要在网页中登录支付宝账号进行支付。

 

2.接入准备

 参考:java支付宝开发-01-沙箱环境接入  ,配置好沙箱环境,并下载好沙箱钱包

 

 

二、代码实现

1.AlipayConfig

此文件主要存放支付宝的一些配置信息 ,大家需要  登录沙箱环境  ,找到相关配置参数,并据此修改配置文件。

package com.ray.alipaywap.config;/*** @author : shirayner* @date : 2018/3/9* @time : 9:36* @desc : 支付宝的相关配置**/
public class AlipayConfig {//支付宝网关名-正式环境//public static final String OPEN_API_DOMAIN="https://openapi.alipay.com/gateway.do";//支付宝网关名-沙箱环境public static final String OPEN_API_DOMAIN="https://openapi.alipaydev.com/gateway.do";/**  一、应用相关**//*** 1.应用ID*/public static final String APP_ID="2016091100487746";/*** 2.应用私钥*/public static final String APP_PRIVATE_KEY="应用私钥";/*** 3.应用公钥*/public static final String APP_PUBLIC_KEY="应用公钥";/*** 4.支付宝公钥*/public static final String ALIPAY_PUBLIC_KEY="支付宝公钥";/*** 二、商家相关*//*** 1.app域名* 需要改成自己应用的地址*/public static final String APP_DOMAIN = "http://rayge.nat300.top";    /*** 2.回跳url* 即付款之后跳回到此页面。注:沙箱环境下,有bug,不会跳到此页面。正式环境下正常。*/public static final String RETURN_URL = APP_DOMAIN + "/return_url.jsp";/*** 3.通知url*/public static final String NOTIFY_URL = APP_DOMAIN + "/notify_url.jsp";/*** 三、此部分不用修改*//*** 5.app_auth_token在ISV代替商家调用接口时使用,商家自己调用,可传null。*/public static final String APP_AUTH_TOKEN="";public static final String SIGN_TYPE = "RSA2";public static final String CHAR_SET = "UTF-8";public static final String FORMAT = "json";
}
View Code

 

2.service 

2.1 接口——WapPayService

package com.ray.alipaywap.service;import com.alipay.api.response.AlipayTradeWapPayResponse;/*** @author : shirayner* @date : 2018/3/12* @time : 10:48* @desc :**/
public interface WapPayService {public  AlipayTradeWapPayResponse pay(String content) throws Exception;}
View Code

 

 

2.2 实现类——WapPayServiceImpl

package com.ray.alipaywap.service.impl;import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradeWapPayRequest;
import com.alipay.api.response.AlipayTradeWapPayResponse;
import com.ray.alipaywap.config.AlipayConfig;
import com.ray.alipaywap.service.WapPayService;/*** @author : shirayner* @date : 2018/3/12* @time : 11:02* @desc :**/
public class WapPayServiceImpl  implements WapPayService{// 初始化alipayClient对象public static AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.OPEN_API_DOMAIN, AlipayConfig.APP_ID, AlipayConfig.APP_PRIVATE_KEY, AlipayConfig.FORMAT,AlipayConfig.CHAR_SET, AlipayConfig.ALIPAY_PUBLIC_KEY);/***  手机网站支付* @param content 订单信息* @return* @throws AlipayApiException*/@Overridepublic AlipayTradeWapPayResponse pay(String content) throws AlipayApiException {//1. 创建API对应的requestAlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();//2. 在公共参数中设置回跳和通知地址(应用提供给支付宝的请求路径),沙箱模式中不起作用(不知道是不是这个原因,支付宝技术客服告诉我正式上线后就没问题)alipayRequest.setReturnUrl(AlipayConfig.APP_DOMAIN+"/index.jsp");alipayRequest.setNotifyUrl(AlipayConfig.NOTIFY_URL);// 填充业务参数
        alipayRequest.setBizContent(content);//3.执行请求AlipayTradeWapPayResponse alipayResponse = alipayClient.pageExecute(alipayRequest);return alipayResponse;}
}
View Code

 

3. servlet-WapPayServlet

接收前台订单信息,并调用支付宝接口,来唤起支付宝app来进行支付。

package com.ray.alipaywap.controller;import com.alipay.api.response.AlipayTradeWapPayResponse;
import com.ray.alipaywap.config.AlipayConfig;
import com.ray.alipaywap.service.WapPayService;
import com.ray.alipaywap.service.impl.WapPayServiceImpl;import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class WapPayServlet extends javax.servlet.http.HttpServlet {private WapPayService wapPayService;@Overridepublic void init() throws ServletException {super.init();wapPayService = new WapPayServiceImpl();}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException {//1.设置将发送到客户端的响应的内容类型resp.setContentType("text/html;charset="+ AlipayConfig.CHAR_SET);//1.1String subject = request.getParameter("subject");String total_amount = request.getParameter("total_amount");String  out_trade_no = String.valueOf(System.currentTimeMillis());//1.2//2.填充业务参数String content="{" +" \"out_trade_no\":\""+out_trade_no+"\"," +" \"total_amount\":\""+total_amount+"\"," +" \"subject\":\""+subject+"\"," +" \"product_code\":\"QUICK_WAP_PAY\"" +" }";//3.去支付AlipayTradeWapPayResponse alipayResponse= null;try {alipayResponse = wapPayService.pay(content);} catch (Exception e) {e.printStackTrace();}String form= alipayResponse.getBody();System.out.println(form);//4.输出支付宝返回的表单页面resp.setContentType("text/html;charset=" + AlipayConfig.CHAR_SET);resp.getWriter().write(form);//直接将完整的表单html输出到页面
        resp.getWriter().flush();resp.getWriter().close();}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}}
View Code

 

 

4.前台JSP页面

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<h2>订单详情</h2>
</body>
<form action="/wapPayServlet" method="post" >商品: <input id="subject" type="text" name="subject" value="IphoneX 128G"/>  <br><br>总价: <input id="total_amount" type="text" name="total_amount" value="99.88"/>   <br><br><input type="submit" value="提交订单" />  <br><br>
</form></html>
View Code

 

5.web.xml

<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><servlet><servlet-name>wapPayServlet</servlet-name><servlet-class>com.ray.alipaywap.controller.WapPayServlet</servlet-class></servlet><servlet-mapping><servlet-name>wapPayServlet</servlet-name><url-pattern>/wapPayServlet</url-pattern></servlet-mapping></web-app>
View Code

 

 

三、参考资料

1.SpringBoot_03_依赖本地jar

 

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大型网站系统架构的演化

2019独角兽企业重金招聘Python工程师标准>>> 前言 一个成熟的大型网站&#xff08;如淘宝、京东等&#xff09;的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性&#xff0c;它总是随着用户量的增加&#xff0c;业务功能的扩展逐渐演变完善的&#…

可以发外链的网站_SEO优化就是写文章发外链吗?到底该怎么优化一个网站呢?...

点击箭头处“蓝色字”&#xff0c;关注我们哦&#xff01;&#xff01;在某个群里有很多“大侠”对SEO优化很是有误解&#xff0c;有的人说优化就是使劲的发文章&#xff0c;把外链做到极致就可以了&#xff0c;也有的人对优化不屑一顾&#xff0c;觉得优化没技术含量&#xff…

网站输入正确账号密码页面刷新一下_对某钓鱼网站的一次渗透测试

文章作者&#xff1a;Mochazz文章来源&#xff1a;Mochazz的博客原文链接&#xff1a;https://mochazz.github.io/2019/07/01/对某钓鱼网站的一次渗透测试/周末在某个CTF群偶然看到这个钓鱼网站&#xff1a;http://gggggg.cn (声明&#xff1a;本文中出现的域名、IP均被替换&am…

免密登录_以Airbnb为例,用selenium免密登录网站

大家好&#xff0c;这篇文章介绍了如何通过selenium利用cookie免密登陆网站&#xff08;第一次写文章 &#xff09;zzh2027/zzh2027.github.io​github.comfrom selenium import webdriver from selenium.webdriver.common.keys import Keys## 模拟键盘用的包 from selenium.we…

SEO流量定义,什么是搜索引擎优化策略营销?

SEO流量定义&#xff0c;什么是搜索引擎优化策略营销&#xff1f; 搜索引擎优化&#xff08;SEO&#xff09;看起来非常简单。你挑选几个关键词&#xff0c;然后瞧&#xff01;您的网页针对搜索引擎优化进行了优化 还没。 很多人都明白SEO的基本原则&#xff0c;但在过去的十年…

疯狂的多域名富关键词网站优化策略

疯狂的多域名富关键词网站优化策略 SEO中一个被很多人看重的排名因素就是根域名含有关键词&#xff0c;中文也一样&#xff0c;就是含有拼音&#xff0c;在相同的条件下&#xff0c;显然根域名含有关键词就有较好的排名&#xff0c;有一些SEO.er利用搜索引擎的这个排名策略&…

实时搜索SEO如何应对

实时搜索(Real-time Search)已经大势所趋&#xff0c;不是SEO不明白&#xff0c;是互联网变化太快&#xff0c;每天都有新名词&#xff0c;每天都有新主题&#xff0c;搜索引擎如何为用户及时的返回丰富又有意义的即时结果&#xff0c;Google推出Caffeine也正是适应这种趋势&am…

国内优秀的免费素材网站大比拼

奇遇网络专业提供seo优化服务&#xff0c;seo优化外包&#xff0c;免费建站模板&#xff0c;免费wordpress模板&#xff0c;DIVCSS模板,几千种免费网页模板&#xff0c;收集最好最全的html5模板及css3模板,html5是目前最前瞻的网页技术,本站为大家提供免费技术交流平台。 国内优…

ASP.NET新建解决方案和网站

新建解决方案和网站 1.打开visual studio&#xff0c;选择新建项目&#xff0c;然后选择解决方案。 2.解决方案建好之后&#xff0c;右键点击解决方案选择新建网站。注意&#xff0c;路径。我在solution1文件夹下面又建了一个site文件夹。 3.右键点击site选择添加新项。 好了&a…

网站架构演化阶段

网站架构演化阶段 网站架构需要工程师从全局把握一个网站的前台、后台&#xff0c;要知道什么地方会有瓶颈&#xff0c; 对网站的可扩展性、安全性等需要有一个成熟的把握。 下面说的几个阶段可以了解网站架构演化。 1&#xff09;单机部署 最简单的情况&#xff0c;可以把各个…

IOS-5个可以帮你优化App的优秀网站

也许现在有一款App可以提供所有你需要的&#xff0c;你不需要的&#xff0c;或者你可以想象到的内容。但是&#xff0c;有多少App真的可以不仅满足需求而且还能提供很好的用户体验呢? 相信很多APP并没有这样的能力。有一些APP的设计特别烂&#xff0c;以至于用户很难去完成一些…

安工大计算机作业提交网站,安工大教务处教务系统:http://jwc.ahut.edu.cn

各有关学院&#xff1a;根据教育部高等教育教学评估中心和中国工程教育专业认证协会联合发布《关于接受2020年工程教育认证申请的通告》(工程教育认证通告〔2019〕第3号)(附件1)文件精神&#xff0c;2020年工程教育专业认证申请工作现已开始。请各有关学院根据工程教育认证标准…

20点提高网站访问速度缩短网页加载时间

网友上网都不喜欢用太多的时间等待网页的打开&#xff0c;等待的越长&#xff0c;用户可能会直接关闭网页&#xff0c;这样就会损失很多流量!其次&#xff0c;关键字的排名与网页的打开速度也有关系&#xff0c;这个主要体现搜索引擎对用户体验度上&#xff0c;用户体验度好&am…

网站管理助手 mysql_巧用网站管理助手Mysql数据库损坏修复方法

站访问提示mysql错误:Table XXX is marked as crashed and should be repaired修复方法如下&#xff1a;一、管理助手方式&#xff1a;打开管理助手&#xff0c;打开mysql数据库选项&#xff0c;双击需要修复的数据库&#xff0c;点击修复按钮修复。如果没有修复成功&#xff0…

网站运营

网站如何经营&#xff0c;流量如何拉动&#xff0c;点击率如何获取&#xff0c;这些问题似乎从互联网诞生之日就出现了。然而关于它们的答案总是在不断更新。如今&#xff0c;传统媒体报业都在经受新媒体的冲击和挑战&#xff0c;如何去适应一个全新的&#xff0c;高度互联&…

网站爬取准备

2019独角兽企业重金招聘Python工程师标准>>> 1. 爬虫作用用网络爬虫技术让重复性的手工流程实现自动化处理。 2. 爬取准备a. 检查robots.txt在链接后加robots.txt查看是否有要求或限制User-agent : 后表示禁止的用户代理Crawl-delay : 后表示要求的爬取延迟Sitemap …

网站性能优化的作用_优化Laravel网站性能的tips

php中文网最新课程每日17点准时技术干货分享Laravel是一个功能强大的框架&#xff0c;组件很多&#xff0c;代码也很庞大&#xff0c;它的易用方便是牺牲了性能的&#xff0c;即便如此它仍然是一个优秀的框架&#xff0c;但在正式环境下要做好优化提升网站的打开速度。1.关闭de…

宝塔面板windows建站教程_关于在宝塔面板的基础上搭建Wordpress个人博客的教程...

此教程是在你已经有个人服务器并且已经做好宝塔面板的基础上进行的&#xff0c;如果没有做好也可以提前进行学习。如果在搭建过程中出现问题也希望大家积极指出。那么就开始我们的搭建吧1、 首先登录我们网站后台登录宝塔面板&#xff0c;关于这个是你之前已经设置好的密码&…

php博客系统开发实战视频,Laravel博客网站项目开发实战视频教程

Laravel是一套简洁、优雅PHP Web开发框架(PHP Web Framework)&#xff0c;可以将开发者从意大利面条式的杂乱代码中解放出来&#xff0c;通过简单、高雅、表达式语法开发出很棒的Web应用&#xff0c;Laravel拥有更富有表现力的语法、高质量的文档、丰富的扩展包&#xff0c;被称…

虚拟主机怎么搭建网站

1、建站首先要有域名&#xff0c;没有域名的&#xff0c;可在我们网站西部数码代理平台上海盐谷上购买&#xff0c;后缀功能齐全 2、域名购好后&#xff0c;接下来我们就是要买虚拟主机。我们购买主机要考虑好要不要备案。如果不备案&#xff0c;就直接购买香港和国外主机。…