stripe pay_J2Pay –完整示例

stripe pay

介绍

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

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

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

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

stripe pay

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

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

相关文章

Linux主机通过直连线直连,【IT基础】网线的直连线与交叉线之间的区别

小续嵌入式开发的运行环境是目标板&#xff0c;而开发环境是宿主机。因此需要把宿主机中经过编译之后的可执行文件下载到目标板上去。需要注意的是&#xff0c;这里所讲的下载是下载到目标机中的SDRAM常见的下载方式有网络下载(如TFTP、FTP等方式)、串口下载、USB下载等当用TFT…

字符集和字符编码的学习

文章目录标准 ASCII扩展 ASCIIGB2312 编码GBK 编码GB18030 编码Unicode 编码UCS-2 字符集UCS-4 字符集UTF-8 编码先有字符集&#xff0c;然后对每个字符进行编码&#xff0c;这叫字符编码&#xff0c;不同的编码规则就产生了不同的编码方案。 标准 ASCII 标准 ASCII 码也叫基…

移动端怎么让底部固定_移动端排名应该怎么做?两种匹配移动端实战排名干货分享...

关于移动端优化的问题、最近一些兄弟一直在问我应该怎么做&#xff1f;毕竟现在是手机的时代、绝大部分情况下、PC显得有点鸡肋&#xff01;在讲移动端排名之前、逆冬先来讲两个容易被大家搞错的问题&#xff08;移动端&#xff09;。1、逆冬老师你好、我观察现在的移动端都是独…

stripe pay_J2Pay –入门

stripe pay入门将指导您如何通过非常简单的步骤快速开始使用J2pay。 下载 J2Pay在Maven上可用。 <dependency><groupId>com.tranxactive</groupId><artifactId>j2pay</artifactId><version>2.4.0</version></dependency>您…

基于linux设计的贪吃蛇论文,毕业设计(论文)LINUX平台下基于C的贪食蛇游戏设计与实现.doc...

毕业设计(论文)LINUX平台下基于C的贪食蛇游戏设计与实现正在输入(豆丁网laoshutou)为您倾心整理(下载后双击删除)如有需求请发豆丁站内信(下载后双击删除)目 录TOC \h \z \t "样式1,1,样式4,1,样式5,2,样式6,3" HYPERLINK \l "_Toc" 摘 要 PAGEREF _Toc \h…

缓存和缓冲的区别

参考&#xff1a; https://www.cnblogs.com/mlgjb/p/7991903.html https://www.cnblogs.com/xiangxiaolin/p/11840278.html

java环境变量的配置_Java的下载及环境变量的配置

讲讲java的安装,java的官方下载地址为https://www.oracle.com/technetwork/java/javase/downloads/index.html目前oracle官网提供了java的很多版本&#xff0c;但大多数开发者使用的还是java8&#xff0c;博主也是java8&#xff0c;java8目前最稳定&#xff0c;java分为javase,…

cassandra使用心得_避免在Cassandra中使用清单

cassandra使用心得Apache Cassandra是一种快速且可扩展的数据库&#xff0c;多年来&#xff0c;它变得与传统SQL数据库一样容易使用。 至少在表面上。 您使用类似SQL的查询&#xff0c;但是它们有很多限制&#xff1b; 您有一个模式&#xff0c;但是修改它并不像在SQL数据库中…

union的作用 c语言,C语言(union类型及应用)

大端模式、小端模式“大端”和”小端”表示多字节值的哪一端存储在该值的起始地址处。大端字节序(BigEndian)&#xff1a;最高有效位(第一字节)存于最低内存地址处&#xff0c;最低有效位存于最高内存处&#xff1b; (空间向大地址处增长)小端字节序(LittleEndian)&#xff1a;…

Java文件下载/下载文件的案例

文章目录需求分析实现步骤示例代码下载的文件中文名显示问题需求 1.页面显示超链接 2.点击超链接后弹出下载对话框 3.完成图片文件下载 分析 超链接指向的资源如果能够被浏览器解析&#xff0c;则直接在浏览器中展示&#xff0c;如果不能解析&#xff0c;则弹出下载提示框。…

公司电脑监控软件_公司电脑监控软件,如何限制公司电脑网络游戏

在互联网领域里&#xff0c;游戏行业之所以不断推陈出新&#xff0c;种类繁多&#xff0c;最根本的原因还是由于其用户的广泛性&#xff0c;市场的巨大性。玩网络游戏已经是我们身边最为常见的休闲方式&#xff0c;手机、电脑、平板电脑&#xff0c;方便的数码设备为我们提供了…

derby数据库的数据_Derby数据库备份

derby数据库的数据抽象 我已经发布了许多有关Derby的博客&#xff1a; 同一主机上的多个Derby网络服务器 Apache Derby数据库用户和权限 与Maven和内存中Derby数据库的集成测试 这本不打算是一个系列。 但是多年来&#xff0c;我越来越多地使用Derby。 最近&#xff0c;我开…

Servlet中获取请求行的数据

package priv.lwx.javaex.servlet_demo.web.servlet.request; /*** 获取请求行的数据** author liaowenxiong* date 2021/12/29 09:22*/import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import j…

没有内存条电脑能开机吗_开机键过时了!3种电脑开机方法,能让你睡懒觉的技术还不快来学...

电脑开机谁都会&#xff0c;按下电源键等他几十秒就好。不过还有其他的开机方式&#xff0c;有的能让你睡懒觉&#xff0c;有的能让你炫技&#xff0c;还有更多创意等你发挥&#xff0c;想不想来尝试一下呢&#xff1f;能睡懒觉的定时开机如果有每天定时开机的需求&#xff0c;…

c语言编程数独游戏,编程做数独游戏

数独游戏非常好玩&#xff0c;可以训练玩家的逻辑推理能力。数独游戏的规则是&#xff1a;1&#xff0e;在99的大九宫格内&#xff0c;已给定若干数字&#xff0c;其他宫位留白&#xff0c;玩家需要自己按照逻辑推敲出剩下的空格里是什么数字。2&#xff0e;必须满足的条件&…

反引号包裹反引号_五个金色反引号

反引号包裹反引号五种琴弦 从Java 1.0开始&#xff0c;我们就有了字符串文字"like this" 。 我们还想要其他什么字符串&#xff1f; 其他编程语言为我们提供&#xff1a; 表达式插值&#xff1a; s"I am ${age - 10} years old." 插值格式&#xff1a; f…

c语言iota怎么用,C++ std::iota用法及代码示例

存储顺序递增分配val的[first&#xff0c;last]个连续值范围内的每个元素&#xff0c;就像在写入每个元素之后以 val递增。模板&#xff1a;void iota (ForwardIterator first, ForwardIterator last, T val);参数&#xff1a;first, lastForward iterators to the initial and…

web自动化如何在不同浏览器运行_自动化决策环节的“心脏”将如何与众不同?...

原标题&#xff1a;自动化决策环节的“心脏”将如何与众不同&#xff1f;原宝钢研究院首席研究员郭朝晖博士认为&#xff1a;自动化本质是感知、决策和执行的统一自动化的理论基础是控制论。控制论诞生时&#xff0c;控制论之父维纳思考了这样一个问题&#xff1a;机器和人(动物…

Servlet中获取请求头的数据

package priv.lwx.javaex.servlet_demo.web.servlet.request;/*** 获取请求头的数据** author liaowenxiong* date 2021/12/29 11:21*/ import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.io.IOException; import java.ut…

jdk8 :: 什么意思_JDK 13:什么是AggressiveOpts?

jdk8 :: 什么意思JVM 11中已弃用Java VM标志-XX:AggressiveOpts [请参见JDK-8199777和JDK-8199778 ]“因为其行为是不明确的。” JDK-8199778的“问题”部分进一步解释了&#xff08;我强调了 &#xff09;&#xff1a; AggressiveOpts已被用作实现各种实验性能功能的一种包罗…