J2Pay –完整示例

介绍

在本节中,我们将详细探讨如何使用网关并成功调用所有四种方法,即购买,退款,作废和重新计费。

对于此示例,我们将使用授权网关。 让我们开始。

首先,我们将获得Authorize网关对象。

Gateway gateway = GatewayFactory.getGateway(AvailableGateways.AUTHORIZE);

但是,如果您想动态获取授权网关,例如从数据库中获取其名称,该怎么办。

这是您可以执行的操作。

Gateway gateway = GatewayFactory.getGateway(AvailableGateways.valueOf("AUTHORIZE"));

知道您可以了解如何获取所需网关对象的两种方法。

由于我们在测试环境中工作,因此第二件事就是启用测试模式。

gateway.setTestMode(true);

注意:测试模式仅在网关支持的情况下才起作用,否则它将被库忽略。

接下来最重要的是API参数,这些是我的商家服务提供商提供的唯一值,即API用户名和密码,必须包含在所有请求中,并且对于所有网关而言,它们始终是不同的。

由于我们使用的是J2pay,因此无需阅读任何文档即可授权网关变量。

这是您将使用样本参数方法的位置(请参阅样本参数部分)

这是您将如何做的。

JSONObject apiSampleParameters = gateway.getApiSampleParameters();

现在我们将打印它以查看参数是什么。

JSONObject apiSampleParameters = gateway.getApiSampleParameters();System.out.println(apiSampleParameters);//output{ "name" : "also called api user name / api login id", "transactionKey" : "the transaction key" }

如您所见,对于Authorize API,参数是name和transactionKey。 我们将填充这些值并传递给购买方法。

apiSampleParameters.put("name", "<your acount's user name here>");
apiSampleParameters.put("transactionKey", "<your account's transaction key here>");

采购

购买方法需要五个参数。

  1. JSONObject apiParamters,这是网关特定的参数,对于每个网关而言始终是唯一的。
  2. 客户客户,这个类代表客户的个人信息。
  3. CustomerCard customerCard,此类代表客户卡详细信息。
  4. 货币货币,即枚举,包含将收取金额的货币列表。
  5. 浮动金额,将要收取的金额。

我们已经在上面设置了apiParameters。

现在创建客户和客户卡对象。

注意:客户和客户卡类支持链设置器方法,并且下面使用的所有字段都是必需的。

Customer customer = new Customer();customer.setFirstName("test first name").setLastName("test last name").setCountry(Country.US).setState("TX").setCity("test city").setAddress("test address").setZip("12345").setPhoneNumber("1234567890").setEmail("email@domain.com").setIp("127.0.0.1");CustomerCard customerCard = new CustomerCard();customerCard.setName("test card name").setNumber("5424000000000015").setCvv(123).setExpiryMonth("01").setExpiryYear("2022");

注意:第4和第5参数不需要任何解释。

现在所有参数都准备好了,我们可以将它们传递给购买方法

HTTPResponse response = gateway.purchase(apiSampleParameters, customer, customerCard, Currency.USD, 45);

您可以通过调用isSuccessful方法来检查购买请求的状态,还可以通过调用getJSONResponse方法来获取JSON响应。

response.isSuccessful();response.getJSONResponse();

让我们将所有代码放在一起。

Gateway gateway = GatewayFactory.getGateway(AvailableGateways.AUTHORIZE);JSONObject apiSampleParameters = gateway.getApiSampleParameters();apiSampleParameters.put("name", "");apiSampleParameters.put("transactionKey", "");Customer customer = new Customer();customer.setFirstName("test first name").setLastName("test last name").setCountry(Country.US).setState("TX").setCity("test city").setAddress("test address").setZip("12345").setPhoneNumber("1234567890");CustomerCard customerCard = new CustomerCard();customerCard.setName("test card name").setNumber("5424000000000015").setCvv(123).setExpiryMonth("01").setExpiryYear("2022");gateway.setTestMode(true);HTTPResponse response = gateway.purchase(apiSampleParameters, customer, customerCard, Currency.USD, 45);System.out.println (response.isSuccessful());System.out.println (response.getJSONResponse());

让我们看看收到的回复。 考虑我们将响应保存在响应变量中。

JSONObject response = response.getJSONResponse();

打印响应后,这就是我们得到的。

{"lr": {"amount": 2.5,"cardExpiryYear": "2017","message": "This transaction has been approved.","cardFirst6": "542400","cardExpiryMonth": "12","transactionId": "60036012175","maskedCard": "542400******0015","rebillParams": {"customerProfileId": "1813844918","paymentProfileId": "1808509554"},"success": true,"voidParams": {"transactionId": "60036012175"},"currencyCode": "USD","cardLast4": "0015","refundParams": {"transactionId": "60036012175","cardLast4": "0015"}},"gr": { //long gateway response }}

如您所见,对于进一步的交易(如退款,作废或重新开票),图书馆本身创建了必需的参数

重新开票

"rebillParams": {"customerProfileId": "1813844918","paymentProfileId": "1808509554"},

虚无

"voidParams": {"transactionId": "60036012175"},

退款

"refundParams": {"transactionId": "60036012175","cardLast4": "0015"}

注意:您可以将这些参数保存在数据库中,并将它们传递给合适的方法。

重新开票

对于重新计费,我们将调用getRebillSampleParameters方法。

JSONObject rebillSampleParameters = gateway.getRebillSampleParameters();

打印后,您将看到。

{"customerProfileId":"the customer profile id","paymentProfileId":"the customer payment profile id"}

如果将其与上面的购买响应rebillParams密钥相匹配,您将看到实际上没有任何区别。 购买响应已经包含这些参数以及填充的值。

因此,我们不会像上面的getApiSampleParameters那样创建它们,但是如果您尚未从该库中执行购买交易,则可以使用第二个选项来创建这些参数并将它们传递给rebill方法。 下面我们描述了两种方法,因此您可以使用更适合自己的方法。

第一种方法

这种方法是快速前进的。 我们将使用库生成的参数(rebillParams)。

由于重新开票方法需要三个参数

  1. JSON apiParameters
  2. JSON rebillParameters
  3. 浮动金额

我们已经讨论了apiParameters,只是提醒您我们将网关对象保存在网关变量中,并将购买响应保存在响应变量中。

这是我们可以轻松调用rebill方法的方法。

JSONObject rebillParams = response.getJSONObject("lr").getJSONObject("rebillParams")HTTPResponse rebillResponse = gateway.rebill(apiSampleParameters, rebillParams, 105);

仅仅两行就不是那么简单吗?

第二种方法

第二种方法与我们创建的apiParameters类似。

JSONObject rebillParams = gateway.getRebillSampleParameters();

打印rebillParams之后,我们得到了。

System.out.println(rebillParams);//output{"customerProfileId":"the customer profile id","paymentProfileId":"the customer payment profile id"}

现在,我们将填充这些值。

rebillParams.put("customerProfileId", "1813844918");rebillParams.put("paymentProfileId", "1808509554");

现在我们可以调用rebill方法。

HTTPResponse rebillResponse = gateway.rebill(apiSampleParameters, rebillParams, 105);

如上所示,您可以调用rebillResponse。 getJSONResponse()方法获取响应。 您还可以通过调用rebillResponse.isSuccessful()方法来检查事务是否成功。

您还可以注意到这两种方法都非常简单,可以随意使用更适合自己的方法,但是建议您使用第一种方法,因为这也非常简单,并且排除了任何可能的错误。

注意:在本示例的其余部分,我们将使用第一种方法。

退款

退款方式需要三个参数

  1. JSON apiParameters
  2. JSON退款参数
  3. 浮动金额

这与退款非常相似。 这就是我们称为退款方式的方式。

JSONObject refundParams = response.getJSONObject("lr").getJSONObject("refundParams")HTTPResponse refundResponse = gateway.refund(apiSampleParameters, refundParams, 2.5);

注意:其余工作将保持不变returnResponse包含实际的响应。

空洞

voidTransaction方法需要两个参数。

  1. JSON apiParameters
  2. JSON voidParameters

下面是示例代码。

JSONObject voidParams= response.getJSONObject("lr").getJSONObject("voidParams")HTTPResponse voidResponse = gateway.voidTransaction (apiSampleParameters, voidParams);

注意:其余工作将保持不变voidResponse包含实际的响应。

祝贺您完成示例。 您已经完全了解该库。

翻译自: https://www.javacodegeeks.com/2018/11/j2pay-complete-example.html

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

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

相关文章

ajax17,17个使用AJAX技术的数据表格控件

为了将数据高效的展示出来&#xff0c;数据需要有合适的结构&#xff0c;展现结构设计的越好&#xff0c;用户就越容易理解信息的内容。因此&#xff0c;提高数据的可萃取性和可扫描性非常有意义。表&#xff0c;是一个非常好的数据呈现结构&#xff0c;非常便于人们分析和理解…

【渝粤教育】电大中专测量学 (5)作业 题库

1.测量学是研究地球的形状和大小以及确定地面点&#xff08;&#xff09;位置的科学。 A.平面 B.空间 C.曲面 D.高程 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.测量学中的水准面是一个&#xff08;&#xff09;。 A.斜平面 B.水平面 C.竖直面 D.曲面 正确 正…

【渝粤教育】电大中专电商运营实操 (25)作业 题库

电子商务最重要的是&#xff08;&#xff09; A商务 B网站 C信息技术 D货物 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2下列关于电子商务的特点叙述错误的是&#xff08;&#xff09; A全球性 B简单的电子化支付手段 C交易环节多&#xff0c;营销成本高 D信息…

tx2无法识别网络_织点智能算法大牛刘思伟:商品识别在收银结算场景的应用与落地...

线下门店消费越快捷、过程越便利&#xff0c;就越能吸引顾客的二次购物。相较于传统的人工收银方式&#xff0c;使用自助收银设备不仅可以减少顾客排队等候的时间&#xff0c;提升收银效率&#xff0c;同时对经营者来说&#xff0c;可以有效降低人工成本。目前&#xff0c;市面…

windows服务器网站日志,windows服务器网站日志文件

windows服务器网站日志文件 内容精选换一换华为云帮助中心&#xff0c;为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档&#xff0c;帮助您快速上手使用华为云服务。网页防篡改可实时监控网站目录&#xff0c;并通过备份恢…

【渝粤教育】电大中专电子商务网站建设与维护 (4)作业 题库

1.阿里巴巴的盈利项目主要是哪些&#xff08; &#xff09; A.委托设计公司网站 B.诚信通 C.以上都正确 D.中国供应商 E.网上推广项目 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;未作答 2.阿里巴巴目前的电子商务在哪个阶段&#xff08; &#xff09; A.信息流 B…

初始化创建画布_使用HTML5,画布和开放数据创建全球降水(雨)可视化

初始化创建画布我目前正在为Three.js编写下一本书&#xff0c;其中一章涉及可视化开放数据。 在寻找可以使用的数据时&#xff0c;我遇到了来自NOAA的一组数据。 通过此站点&#xff0c;您可以以网格格式下载一组全世界的每月降水报告。 因此&#xff0c;我下载了它们&#xff…

【渝粤教育】电大中专药品储存与养护技术 (2)作业 题库

1.在能够预见到某种药品经过短时间储存易发生质量变化时&#xff0c;该种药品的出库原则是&#xff08;&#xff09;。 A.近效期先出 B.先产先出 C.先进先出 D.易变先出 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;B 2.药品批准文号的格式为&#xff08;&#xff…

星之卡比镜之迷宫机器人_机器人工程师入门(0)

前言&#xff1a;多年前看到一片知乎文章YY硕&#xff1a;机器人工程师学习计划​zhuanlan.zhihu.com当时看到这个&#xff0c;只觉醍醐灌顶&#xff0c;能看到有如此详尽的关于机器人工程师的个人技术发展规划&#xff0c;又不禁觉得有些遗憾&#xff0c;因为这个规划是本科大…

8代主板装服务器系统,微星B365主板搭配intel 8代cpu安装win7及bios设置教程

就在前不久发布华硕和华擎分别发布了b365主板&#xff0c;近期微星也发布了b365主板&#xff0c;有很多使用微星主板的网友问&#xff0c;微星B365主板其搭载intel 酷睿8代cpu可以安装安装win7吗&#xff1f;微星B365主板预装的是win10系统&#xff0c;用户还是喜欢win7系统&am…

【渝粤教育】电大中专计算机职业素养 (12)作业 题库

1.&#xff08; &#xff09;就是职业技能的标准化、规范化、制度化。 A.职业行为 B.职业意识 C.职业道德 D.职业化 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;未作答 2.&#xff08; &#xff09;就是合适的时间、合适的地点、做合适的事 A.职业意识 B.职业习惯…

修订和不变性

这是一个简短的帖子。 我不确定如何启动它。 这是审阅一些现有代码时“为什么我没有想到”的时刻之一。 由于存在NDA&#xff0c;我无法共享实际代码。 它与处理修订有关。 与我最相关的是WordPress&#xff08;WP&#xff09;如何处理博客文章和修订。 在WP中&#xff0c; wp…

[渝粤教育] 西南科技大学 农业推广学 在线考试复习资料

农业推广学——在线考试复习资料 一、单选题 1.“ 百千万”示范是指在村建百亩( )。 A.示范片 B.试验田 C.示范区 D.示范方 2.一个随机区组试验有8个处理,四次重复,误差自由度是( )。 A.27 B.21 C.32 D.28 3.在推广教师的指导下,学员运用已有的知识、经验,从事一定的实践工作…

autowired注入为 mapper为null_兰新高铁为区域经济发展注入活力

央视网消息 &#xff1a;连接甘肃兰州至新疆乌鲁木齐的兰新高铁&#xff0c;是我国“八纵八横”高速铁路网的重要组成部分。开通运营近六年来&#xff0c;兰新高铁已累计运输旅客6760多万人次&#xff0c;在推动地区协调发展&#xff0c;便捷旅客出行等方面发挥了重要作用。乘坐…

[渝粤教育] 西南科技大学 制造业信息化导论 在线考试复习资料

制造业信息化导论——在线考试复习资料 一、单选题 1.产品设计应面向( ),与用户保持密切联系,将用户纳入产品开发过程,以多变的产品、尽可能短的交货期来满足用户的需要。 A.用户 B.供应商 C.销售商 D.物流 2.企业的生产、经营状况可通过其产品结构、产值产量、经营总额、利税…

织梦同步静态文件到服务器,某猫织梦插件-织梦dedecms静态文件生成速度的区块插件...

经常使用织梦的朋友都可能都知道织梦cms 的静态生成速度有时候让人无法忍受&#xff1b;如果是企业展的几百篇的文章&#xff0c;那当然绰绰有余&#xff0c;但是一般数据量打起来生成速度也会大幅的降低&#xff0c;与同类的其他cms比如说帝国cms&#xff0c;还有phpcms相比差…

[渝粤教育] 西南科技大学 动态网页设计(JSP) 在线考试复习资料

动态网页设计&#xff08;JSP&#xff09;——在线考试复习资料 一、单选题 1.下面关于通过JDBC访问数据库哪项说明正确? A.对数据库操作一定要驱动程序 B.对数据库操作一定要DriverManager.getConnection C.对数据库操作一定要ResultSet对象 D.对数据库的操作一定要调用存储 …

webpack 异步加载配置文件_详解webpack异步加载业务模块

虽然把我们用到的JS文件全部打包一个可以节省请求数&#xff0c;但如果打包后的JS文件过大&#xff0c;那么也容易出现白屏现象&#xff0c;许多操作失灵。而且一些区域是点到才出现&#xff0c;那么相关的JS其实可以剥离出这个大JS文件外。这就涉及到异步加载了。异步加载是SP…

[渝粤教育] 西南科技大学 基础工业工程 在线考试复习资料

基础工业工程——在线考试复习资料 一、单选题 1.线路图是以作业现场为对象,对( )进行分析。 A.现场布置及物料和作业者的实际流通路线 B.物料的加工路线 C.人员的流通路线 D.机器、工作台的相互位置 2.流程程序图是对生产现场的整个制造程序作( )的记录。 A.全面 B.大概 C.详…

antlr4 代码 语法树_使用ANTLR4,用于代码镜像和基于Web的DSL的Primefaces扩展

antlr4 代码 语法树DSL是很酷的东西&#xff0c;但我不清楚它们有什么用。 然后我意识到它们对以下方面有好处&#xff1a; 摆脱复杂的UI 意思是 更快的做事方式 而已。 当我阅读此博客时&#xff0c;我得出了这个结论。 如果您的用户是技术人员&#xff0c;并且不惧怕类…