支付宝、京东支付场景之策略模式实战

article/2025/9/12 5:09:33

我是「猿码天地」,一个热爱技术、热爱编程的IT猿。技术是开源的,知识是共享的!

写作是对自己学习的总结和记录,如果您对 Java、分布式、微服务、中间件、Spring Boot、Spring Cloud等技术感兴趣,可以关注我的动态,我们一起学习,一起成长!

用知识改变命运,让家人过上更好的生活,互联网人一家亲!

——公众号《猿码天地》

设计模式

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

必须清楚应用设计模式目的

1、易扩展,易维护

2、少改代码,不改代码

策略模式核心思想

策略模式的核心思想是在一个计算方法中把容易变化的算法抽出来作为“策略”参数传进去,从而使得新增策略不必修改原有逻辑。  

即:创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。

实现步骤

1、不同策略实现同一个接口,即定义一个策略接口。 
2、不同策略定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 
3、定义实现策略的策略上下文。

实例讲解

源码获取方式:由于实战源码较多,如需获取源码,请关注公众号"猿码天地",回复“设计模式”即可获取源码。

example1 应用于商场打折场景

假设网站针对普通会员、Prime会员有不同的折扣,同时活动期间还有一个满100减20的活动,这些就可以作为策略实现。  

1、先定义打折策略接口:DiscountStrategy接口

2、实现各种策略

普通用户策略:UserDiscountStrategy类

满减策略:OverDiscountStrategy类

Prime会员策略:PrimeDiscountStrategy类 

3、新建一个策略上下文:DiscountContext类  
4、新建测试类:Test类

调用方必须首先创建一个DiscountContext,并指定一个策略(或者使用默认策略),即可获得折扣后的价格。

example2 应用于支付宝和京东支付场景

假设第三方支付平台需要对接支付宝、京东支付,怎样使用策略模式进行支付呢?  

1、先定义支付策略接口:Payment接口

2、实现支付宝和京东各自的支付策略

阿里支付策略:AliPayment类

京东支付策略:JDPayment类
3、定义支付策略上下文:PayContext类
4、新建测试Test类,创建一个策略上下文对象,调用各自支付策略。

优点和缺点

优点: 

1、算法可以自由切换。 

2、避免使用多重条件判断。 

3、扩展性良好。 
缺点: 

1、策略类会增多。 

2、所有策略类都需要对外暴露。 

使用总结

1、策略模式是为了允许调用方选择一个算法,从而通过不同策略实现不同的计算结果。 
2、通过扩展策略,不必修改主逻辑,即可获得新策略的结果。  

扫描二维码关注公众号 : 猿码天地

你多学一样本事,就少说一句求人的话,现在的努力,是为了以后的不求别人,实力是最强的底气。记住,活着不是靠泪水博得同情,而是靠汗水赢得掌声。

——《写给程序员朋友》


http://chatgpt.dhexx.cn/article/81on4Q3L.shtml

相关文章

支付安全不能说的那些事

原文链接:https://www.inforsec.org/wp/?p1759 在线支付已经走进每个人的生活。抢红包、网上购物、生活缴费等服务中处处都有在线支付的身影。但是在线支付体系暴露过许多次安全问题,黑客利用在线支付的漏洞可以悄无声息的免费清空购物车等&#xff0c…

京东商品接口加解密算法解析

最近,闲来没事,打开看了一下京东图书的热销榜,想通过接口查看下它接口的加密方式,于是直接打开了M站的地址:https://m.jd.com/,然后打开搜索页面,如下图。 打开页面,打开开发者工具,往下滑动鼠标,获取接口地址。 解析一下接口,接口返回值跟没什么特殊说明,首尾加…

支付宝、财付通、网银、百度钱包、京东钱包接口费率

在集成支付功能时,遇到了付款方式接口选择的问题,于是对支付宝,财付通,PayPal,网银在线,快钱有了具体的认识,并分享出来。 支付渠道费用(2016) 渠道名称接入费交易手续费…

手把手教学京东api接口全部操作过程

jd.readme接入文档item_get获得JD商品详情item_search按关键字搜索商品item_search_img按图搜索京东商品(拍立淘)item_search_shop获得店铺的所有商品item_history_price获取商品历史价格信息item_recommend获取推荐商品列表upload_img上传图片到JDitem_…

京东APP下单接口调用

首先声明本人对于以下研究仅出于学习目的,不存在任何商业化行为。 通过京东app的api调用下单接口直接下单需要做一下两步: 签名:京东app的每一个接口都会带上sign参数,值是由body,st,sv,clien…

6.0 增加京东支付

给系统(只适合版本6.0)增加京东支付,系统原本是没有京东支付, 1、先在met_pay_config表中,增加京东支付参数,7京东支付 2、在系统中,浏览器在手机状态下增加京东支付 路径:\app\sy…

uniapp 让支付触手可及,封装了微信支付、QQ支付、支付宝支付、京东支付、银联支付常用的支付方式以及各种常用的接口

下载地址 https://gitee.com/zscat/mallplus 1.uniapp 接入各种h5支付 // 用户点击支付方式处理async toPayHandler(code) {let params = {orderId:this.orderId};let data = {payment_code: code,payment_type: this.type}data[orderId] = (this.type == 1 || this.type == …

RN对接京东支付sdk(IOS)

京东支付IOS接入说明文档 1、根据 京东支付IOS接入说明文档 集成sdk依赖的framework,配置相关的内容(xcode 需要配置签名) 2、在ios 下封装调用sdk的方法 JDPayManager.h // // JDPayManager.h // b2bapp // // Created by edz on 2021/…

Ecshop小京东支付插件【小京东个人支付宝即时到帐支付插件支持PC电脑版+手机版】

商之翼建立了一整套以标准化电商软件为基础的"一站式"全网营销电商解决方案。包括基于不同运维模式的B2B2B2C、B2B2C、B2C等被企业用户广泛使用的电商解决方案,还包括基于生鲜、农村、汽车、商超百货、建材、母婴、酒行业、跨境、社区等具体解决方案&…

京东支付逻辑存在不安全因素

写在前面的话: 写本文只想引起足够重视,不管是开发还是用户; 关于本文提到问题也提交给京东官方,希望他们能重视. 同时也希望看到本文的用户多一个心眼 希望大家都不要达到以下的全部假设; --------------------------- 以下测试完成于2015-09-08日; 测试条件与步骤: 一手机…

京东支付SDK重构设计与实现

背景 众所周知,软件开发效率、维护成本与自身复杂度成正比,而客户端软件复杂度则主要体现在业务规模上。 京东支付Android SDK从2015年启动以来,已历经五个春秋,如今发展到纯支付业务代码7.5W行的规模(不含支付团队内…

php支付接口要改动的参数,京东支付接口2.0PHP集成遇到的一些问题:所有参数必须是string!...

最近发现京东的支付接口升级了,原来的接口以及不一样了,就花了点时间做了升级,但是遇到了一些很基础很二的问题,之前的时候接口跳转通知是get方式的,用在原来的支付驱动上面很正常,但是2.0的接口就没法正常…

京东支付接口

官方文档:http://payapi.jd.com/docList.html?methodName0# 一、本地测试(用官方自带参数测试) 1、下载官方接口文件: 京东支付PC&H5接口文档>>京东支付2.0-PHP 2、测试,把“京东支付2.0-PHP”解压出来的文件放到PHP环境中,什…

RN对接京东支付sdk(Android)

京东支付Android接入说明文档 1、根据 京东支付Android接入说明文档 集成sdk依赖的jar包,配置相关的内容(主要根据文档一步一步配置就行,这里就不细说了,本章主要是关于使用RN调用sdk) 2、在../android/app/src/java …

京东支付功能流程

1:目前市场上支付API的第三方很多,主流的接口有 支付宝,微信,京东,云闪付,银联 等等 主要包含 付款码支付 , JSAPI支付, APP支付,H5支付 , 小程序支付&…

微信公众账号自动回复小程序链接

<a data-miniprogram-appid"appid" data-miniprogram-path"路径" href"可以不写">小程序</a>效果图 文章引用于&#xff1a; http://dy.163.com/v2/article/detail/DR1H8P840511AOT5.html

微信开发者工具预览/真机调试报错SyntaxError: Invalid or unexpected token [1.06.2210310][win32-x64]

项目在微信开发者工具上能正常运行&#xff0c;但是当点击【预览】或者【真机调试】就会报错&#xff1a; SyntaxError: Invalid or unexpected token [1.06.2210310][win32-x64] 如果是本地调试的话&#xff0c;将以下这些勾选上。

问题解决:微信开发者工具显示清除登录状态失败 TypeError: Failed to fetch [1.06.2303220][win32-x64]

问题&#xff1a; 在编译之前&#xff0c;会进行清除全部缓存操作&#xff0c;但是点击后出现清除清除登录状态失败。 清除登录状态失败 TypeError: Failed to fetch [1.06.2303220][win32-x64]原因&#xff1a; 未连接网络&#xff0c;或者被你连接的网络拦截。 解决&#xf…

公众号自动回复消息添加跳转小程序链接

业务说明&#xff1a; 是要实现在小程序授权公众号收发消息功能 解决方案&#xff1a; 在用户关注后自动回复消息&#xff08;因为要实现授权前提是用户必须先关注了公众&#xff09;&#xff0c;在消息中添加可跳转小程序的链接&#xff0c;就可以将小程序的参数传到授权页面进…

传奇GOM原版引擎支持光柱吗?

很多新手不会设置GOM原版引擎的地面特效&#xff0c;或者说不知道在什么地方设置地面特效功能&#xff0c;今天传奇工具网就把设置方法分享给你们&#xff0c;需要先说明&#xff0c;免费版是不支持设置地面特效的&#xff0c;只有商业版才有这个功能。(文章未附插件下载&#…