java练习(16.08.03)支付问题

java实现支付宝app支付 上一篇介绍了java实现微信app支付,这篇介绍支付宝的app 支付,支付宝在支付方面比微信方便太多,如下: 引入maven依赖: <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java&... 阅读详情

题目详情

利用面向对象的思想实现一套代码,要求一个APP支持微信支付,支付宝支付,银联支付,以后甚至更多的支付方式。支付通常包含鉴权(authorization)、支付订单生成(generateBill)、最后确认支付(pay)过程。


实现代码

主要思路:设计一个Paymet接口,不同的支付方式分别设计不同的实现类 

Payment接口:移动支付的接口

package fgb;

//移动支付接口
public interface Payment {
	//登录授权
	public void authorization();
	//订单生成
	public void generateBill();
	//确认支付
	public void pay();
	
	Account account=new Account("1234", "pass@word");
}
Account是内部类,这里已经预设了已经绑定好的账号


Payment接口的三个实现类如下

Alipay类:实现支付宝支付的类

package fgb;

import java.util.Scanner;

//支付宝支付
public class Alipay implements Payment{
	@Override
	public void authorization() {
		System.out.println("跳转到支付宝页面并授权登陆");
	}
	@Override
	public void generateBill() {
		System.out.println("在支付宝页面中生成订单");
	}
	@Override
	public void pay() {
		System.out.println("请输入密码确认支付宝支付");
		long startTime=System.currentTimeMillis();
		Scanner scanner=new Scanner(System.in);
		String pw=scanner.nextLine();
		long endTime=System.currentTimeMillis();
		if(endTime-startTime>60000){
			System.out.println("支付超时");
		}else if(Payment.account.config(pw)){
			System.out.println("支付成功");
		}else{
			System.out.println("密码输入错误");
		}
	}
}

WeChatPay类:微信支付的实现类

package fgb;

import java.util.Scanner;

//微信支付
public class WeChatPay implements Payment{
	@Override
	public void authorization() {
		System.out.println("跳转至微信支付页面并进行授权登陆");
	}
	@Override
	public void generateBill() {
		System.out.println("在微信页面上生成订单");
	}
	@Override
	public void pay() {
		System.out.println("请输入密码确认微信支付");
		long startTime=System.currentTimeMillis();
		Scanner scanner=new Scanner(System.in);
		String pw=scanner.next();
		long endTime=System.currentTimeMillis();
		if(endTime-startTime>60000){
			System.out.println("支付超时");
		}else if(Payment.account.config(pw)){
			System.out.println("支付成功");
		}else{
			System.out.println("密码输入错误");
		}
	}
}

UnionPay类:银联支付的实现类

package fgb;

import java.util.Scanner;

//银联支付
public class UnionPay implements Payment{
	@Override
	public void authorization() {
		System.out.println("跳转至银联支付页面并授权登陆");
	}
	@Override
	public void generateBill() {
		System.out.println("在银联支付页面上生成订单");
	}
	@Override
	public void pay() {
		System.out.println("请输入密码确认银联支付");
		long startTime=System.currentTimeMillis();
		Scanner scanner=new Scanner(System.in);
		String pw=scanner.next();
		long endTime=System.currentTimeMillis();
		
		if(endTime-startTime>60000){
			System.out.println("支付超时");
		}else if(Payment.account.config(pw)){
			System.out.println("支付成功");
		}else{
			System.out.println("密码输入错误");
		}
	}
}

PaymentFactory类:用于创建Payment接口实现类的类

package fgb;

import java.util.Scanner;

public class PaymentFactory {
	public static Payment paymentSwitcher(){
		System.out.println("请选择支付方式");
		System.out.println("1.微信支付\t2.支付宝支付\t3.银联支付");
		Scanner scanner=new Scanner(System.in);
		int flag=scanner.nextInt();
		switch (flag) {
		case 1:
			return (new WeChatPay());
		case 2:
			return (new Alipay());
		case 3:
			return (new UnionPay());
		
		default:
			System.out.println("貌似不支持这种支付方式呢,请重新选择");
			return paymentSwitcher();
		}
	}
}

Account类:支付所用到的银行账号

package fgb;

public final class Account {
	private String username;
	private String password;

	public Account(String name, String password) {
		this.username = name;
		this.password = password;
	}
<span style="white-space:pre">	</span>//验证密码是否输入正确
	public boolean config(String pw) {
		if (this.password.equals(pw)) {
			return true;
		} else {
			return false;
		}
	}
}


最后是测试Test类

package fgb;

public class Test {
	public static void main(String[] args) {
		Payment payment=PaymentFactory.paymentSwitcher();
		payment.authorization();
		payment.generateBill();
		payment.pay();
	}
}
运行结果如下:
请选择支付方式
1.微信支付	2.支付宝支付	3.银联支付
2
跳转到支付宝页面并授权登陆
在支付宝页面中生成订单
请输入密码确认支付宝支付
pass@word
支付成功

说明

若选择给定以外的支付方式则会被要求重新选择

若输入密码的时间超过一分钟则会提示支付超时


搞定支付接口(一) 支付宝即时到账支付接口详细流程和代码 搞定支付接口(一) 支付宝即时到账支付接口详细流程和java代码 为避免你们和我一样被支付接口搞得焦头烂额,写一个从申请开始到能收到钱为止的详细教程,实际上各个语言都可以用来集成支付接口,我用java来举例。 正所谓知己知彼,百战不殆。首先,我们来看一看支付宝平台给我们的说明。 打开支付宝 选择商家平台 选择电脑支付 进行如上操作后,来到如下图所示的页面 没 阅读详情

相关推荐

Zigbee智能开关和单火取电技术

ZigBee智能开关(单火线)是在ZigBee协议基础上开发由单火线供电的开关,它可以控制各种类型负载的开关,如LED灯,白炽灯,荧光灯和钨丝灯等。配合相应的主机用户可以使用手机远程控制它,进而达到控制灯光开关的目的。它具有自组网功能,使用简单方便,给你的居家生活带来无线享受。可应用于家庭,办公,医院和酒店等场合。

danhuoxian的博客 1万+

Java如何实现支付功能

Java 可以通过以下几种方式实现支付功能: 使用第三方支付平台的 SDK,如支付宝、微信等,这些 SDK 提供了 Java 的接口可以直接使用。 使用 Java 的网络编程技术,如 HttpClient 等,发起网络请求直接调用支付接口。 使用 Java 的第三方库如 Spring 框架,封装了支付接口的调用。 推荐使用第三方库或者第三方支付平台的 SDK来实现支付功能,因为它们在支付方面都...

weixin_35750953的博客 4824

决策规划算法四:Piecewise Jerk Path Optimizer

一,问题分析 路径规划的本质目的:规划出一条安全(无碰撞),舒适(平滑),符合车辆运动学的轨迹。 如下图所示,决策算法开辟凸空间后,路径规划算法用数值优化的方法搜索出一条最优路径,即将问题转化为二次规划的问题,采用二次规划的求解器进行求解。 二次规划问题的求解顺序: 1,确定优化变量 2,确定目标函数 3,确定约束条件 4,将目标函数和约束条件变形为二次规划的标准形式 5,用二次规划求解器进行求解,获得优化变量的序列,使得目标函数取得最小值。 注:路径的最终表达式为:,..

肥嘟嘟的左卫门 8562

微信JSAPI 统一下单 退款 回调,项目源代码可用

最近做微信支付,踩了一点坑。就留下代码防止各位入坑。哈不多说,上代码 service package com.sjc.wx.service; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.Map; /** * 微信下单功能接口 * @param...

会飞的程序猿的博客 1134

字节跳动扣子AI应用开发平台之实战

推出背景:扣子平台由字节跳动推出,旨在让非开发者也能快速创建、调试和优化聊天机器人。上线时间:扣子平台于2024年2月1日正式上线。功能定位:扣子是一个AI聊天机器人和应用程序编辑开发平台,可以理解为字节跳动版的GPTs。

恩爸编程 5899

Claude Code vs Codex

Claude Code 提供了一个生产就绪(production-ready)的实现,包含良好的错误处理、优雅的关闭逻辑、详细注释和文档,以及内置测试。Claude Code 输出了一个可运行的 Next.js + TypeScript 前端,但错过了一些设计里的黄色主题元素;Codex 则生成自己的版本,没有导出设计中的图片,也没严格遵照设计主题。Codex 完成同样功能,但更简洁直接,文档和注释少一些但功能达标。任务都用同样的提示,使用 TypeScript 实现,并在一天内完成。

weixin_49869937的博客 2394

java消费金额_Java程序设计(五)---消费金额

/* (程序头部注释开始)/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2012, 烟台大学计算机学院学生* All rights reserved.* 文件名称:* 作 者: 刘镇* 完成日期: 2012 年 09 月 14 日* 版 本 号: 2.005* 对任务及求解方法的描述部分* 输入描述: ......* 问题描述: 消费金额* 程序输出: .....

weixin_35548486的博客 1071

Mplus—交叉滞后面板模型(Cross-Lagged Panel Model, CLPM)

本文介绍交叉滞后模型相关知识,以及显变量模型与潜变量模型在Mplus中的语法。

m0_54401011的博客 1万+

JavaWeb项目练习--支付模块、后台部分模块(手风琴下拉菜单、上传技术)

易宝支付 在线支付的两种形式: 1. 电商与银行直连! 安全 不收手续费 不与小电商合作! 2. 第三台支付平台 支付宝 易宝 财富通 好处: 不安全 收手续费(1%) 小电商可以与其合作! 需要在第三方注册账户 需要认证! 我们有一个易宝的测试账户 钱转过去就要不回来了! 易宝支付 1 去银行 易宝给了我们一个网址(支付网关),重定向...

一万年行不行的博客 3010

量子计算入门指南:密度算符的核心概念与应用解析

本文深入解析了量子计算中密度算符的核心概念与应用。作为描述量子系统“状态的状态”的关键数学工具,密度算符能有效处理混合态与子系统描述,是理解量子噪声、量子纠错和开放系统演化的基石。文章通过对比纯态与混合态,阐释了密度矩阵的数学定义与物理意义,并结合代码示例演示了其在实际量子计算问题中的强大威力。

day7的博客 471

R语言机器学习算法实战系列(四)随机森林算法分类器+SHAP值 (Random Forest)

本文介绍了如何使用R语言实现随机森林算法,用于构建乳腺癌分类器。随机森林通过多棵决策树投票判断标签,具有避免偏差和提升模型效果的优势。文章详细讲解了数据下载、R包加载、数据预处理、特征选择、模型构建与评估等步骤。数据集包含569份恶性和良性肿瘤样本的32类指标,通过随机森林模型进行特征选择和分类。最终,文章提供了完整的代码和可视化结果,帮助读者理解并实现随机森林算法。

专注生信领域 3323

【定义一个接口PayAble,包含计算电话话费的方法pay()。在手机类定义中增加计算话费异常,如果话费小于0则抛出异常。】

【问题描述】 定义了一个接口PayAble,包含计算电话话费的方法pay()。在手机类定义中增加计算话费异常,如果话费小于0则抛出异常。 要点提示:1) 自定义一个异常类,表示话费小于0的异常;2) 计算话费时如果小于0则抛出异常,在测试类中处理异常。 【输入形式】无 【输出形式】话费结果或者异常 【样例输入】10 0.5 【样例输出】 Fee=5.0 【样例输入】0 0。7 【样例输出】 Exception isPayException: Fee is 0! Fee=0.0 import java.u

m0_47163275的博客 5236

025、空间降噪与时域降噪:噪声抑制与细节保留的平衡艺术

《降噪技术的平衡艺术:空间与时域降噪的协同优化》 本文深入探讨了图像处理中空间降噪与时域降噪的技术原理与工程实践。空间降噪通过像素级处理提升单帧质量,而时域降噪则利用帧间信息增强稳定性。文章揭示了两种方法在实际应用中的矛盾点:过度降噪会导致细节损失,影响后续算法性能。作者结合车载环视系统等实战案例,详细分享了参数调优经验,包括运动自适应策略、边缘保持技巧和嵌入式平台优化方案。特别强调降噪的最终目标应服务于下游算法需求,而非单纯追求图像美观。文章为工程人员提供了从理论到实践的完整指导,展现了降噪技术在效果与性

sundong_81的博客 187

【超详细,全流程】java对接支付宝支付

JAVA对接支付宝支付

weixin_45352783的博客 2万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

java支付宝支付

java支付宝支付3 、接收支付结果通知 1.申请签约 目的是得到开发使用的合作伙伴身份(PID)和MD5秘钥,申请地址(即时到账收款):https://b.alipay.com/order/productDetail.htm?productId=2015110218012942 ———————————————————————————————————————————————————————— 申请...

qq_41404188的博客 840

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java调用支付宝支付接口

一、场景:公司需要在网站上进行支付宝支付。二、API:使用支付宝开放平台的支付能力-即时到账接口。支付宝开放平台链接三、分析:1、支付宝的文档比较容易看,主要是有相应的DEMO,我这里看的DEMO是 JAVA-UTF-8版本。2、导入DEMO,在com.alipay.config中填入对应的partner和key(在对应的商户后台获取)就可以直接运行了解支付流程了。3、改写:我这边使用的是spri

Teacher_Lee_ZZSXT的博客 3万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

JAVA 微信APPV3支付(保姆级)

可根据需求定制 这里以APP支付和申请退款为例。

扭曲的影子 2万+

java微信支付超时请重新发起支付

Java微信支付超时请重新发起支付 微信支付是一种便捷的支付方式,但有时候在支付过程中可能会遇到超时的情况。当出现支付超时时,用户需要重新发起支付操作。本文将介绍如何在Java中处理微信支付超时问题,并给出相应的代码示例。 微信支付超时处理流程 在发起微信支付时,用户需要通过调用微信支付接口生成支付链接,用户在支付链接上完...

weixin_41377933的博客 2392

java支付宝支付,支付手机支付,pc网站支付

java 版手机PC 支付宝支付

MR_wb的博客 6496

java 调用支付宝支付接口

最近公司在做支付模块,在接入过程中遇到了很多坑,费了不少事,现在分享一下接入方法,也记录一下,以后可能还用的到。用的是支付宝的即时到帐支付功能和微信的扫码支付功能,相比起来,个人感觉支付宝的文档和接入方式都比微信的容易理解和操作,也不用自己写页面,接入起来比较方便,毕竟是支付起家的,比微信支付少很多坑,下面就分别介绍着两种支付的接入方法。 支付宝支付 1、申请签约 目的是得到开发使用的...

zuihongyan518的博客 3772

Java版微信/支付宝支付

文章目录一、微信支付接入与介绍1、微信支付产品介绍2、接入指引二、支付安全基础(证书/**秘钥**/**签名)**1、安全基础2、**对称加密和非对称加密**3、摘要算法4、数字签名与证书4.1 数字签名4.2 数字证书4.3 **https协议中的数字证书**三、基础支付API V31、支付配置准备1.1 引入支付参数1.2 加载商户私钥1.3 **获取签名验证器和HttpClient**1.4 **API字典和相关工具**1.5 设置全局返回类2、签名和验签解析2.1 签名2.2 验签3、Native支

Shawn的个人博客 9354

JAVA 支付宝支付 回调

我整理的一些关于【Java】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/bLN8S1JAVA 支付宝支付回调解析 在现代电商环境中,支付功能是实现交易的重要环节。支付宝作为国内主要的支付方式之一,其支付回调功能可以让商家了解用户的支付状态。本文将介绍如何使用 Java 实...

weixin_40595748的博客 1054

java支付宝电脑网页支付

java支付宝电脑网页支付 官网文档:https://opendocs.alipay.com/open/270/105902 电脑网站支付 1.先给应用申请电脑网页支付功能 2.根据接口文档 ,请求支付宝接口 文档地址 https://opendocs.alipay.com/apis/api_1/alipay.trade.page.pay?scene=API002020081300013629 电脑网站支付需要调用的接口是 alipay.trade.page.pay(统一收单下单并支付页面接口) 上面图

weferxe的博客 2566

苹果支付Java服务器实现

JAVA服务器的对接苹果内支付实现的参考代码示例

JohnyChina的博客 3672

java支付宝扫码支付,简单生成二维码方法

支付宝扫码支付 首先申请 appid、app_private_key,publicKey, 直接上代码: 方式一:可以禁用支付通道(disable_pay_channels) public static void main(String[] args) throws AlipayApiException { AlipayClient alipayClient = new DefaultAlipay...

sj_liu的博客 1万+
上一篇: java学习总结()16.07.28)java的IO流
下一篇: java练习(16.08.03)龟兔赛跑问题
Fgb3420
博客等级 码龄11年 24粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值