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

stripe pay_J2Pay –完整示例相关推荐

  1. eclipse 创建maven 项目 动态web工程完整示例

    需求表均同springmvc案例 此处只是使用maven 注意,以下所有需要建立在你的eclipse等已经集成配置好了maven了,说白了就是新建项目的时候已经可以找到maven了 没有的话需要安装m ...

  2. ViewPager详解(一)——ViewPager的基本使用完整示例

    MainActivity如下: package cn.ww;import java.lang.reflect.Field;import android.app.Activity; import and ...

  3. 【Java 泛型】泛型简介 ( 泛型类 | 泛型方法 | 静态方法的泛型 | 泛型类与泛型方法完整示例 )

    文章目录 一.泛型简介 二.泛型类 三.泛型方法 四.静态方法的泛型 五.泛型类与泛型方法完整示例 一.泛型简介 泛型 可以 简单理解为 参数化类型 , 主要作用在 类 , 方法 , 接口 上 ; j ...

  4. 【Kotlin】Lambda 表达式 ( 简介 | 表达式语法 | 表达式类型 | 表达式返回值 | 调用方式 | 完整示例 )

    文章目录 I . Lambda 表达式 简介 II . Lambda 表达式语法 III . Lambda 表达式类型 IV . Lambda 表达式返回值 V . Lambda 表达式调用 VI . ...

  5. react-template 包含客户端,服务端渲染完整示例

    原文链接 React version 16.2 版本脚手架 包含客户端,服务端渲染完整示例,使用了最新的react,并实现version 16.2 最新的服务端渲染; 解决了一些之前的服务端渲染bug ...

  6. 利用ffmpeg来进行视频解码的完整示例代码

    (转)利用ffmpeg来进行视频解码的完整示例代码(H.264) Decode() { FILE  * inpf; int  nWrite; int  i,p; int  nalLen; unsign ...

  7. java自建ocr完整示例_Java 7:完整的invokedynamic示例

    java自建ocr完整示例 我当前的Java 7系列中的另一个博客条目. 这次它处理的是invokedynamic,这是JVM上用于方法调用的新字节码指令. invokedynamic指令允许呼叫站点 ...

  8. Spring Integration完整示例

    本文是我们名为" Spring Integration for EAI "的学院课程的一部分. 在本课程中,向您介绍了企业应用程序集成模式以及Spring Integration如 ...

  9. jqGrid + JSON + WebService 完整示例

    真没找到这样的例子,于是自已写了个,分享出来. 第一步,首先在WebService上,添加[System.Web.Script.Services.ScriptService]属性标签,让WebServ ...

最新文章

  1. 生信分析平台方案推介,助力科研
  2. Docker问题记录
  3. 怎么用mysql存储系统数据库_mysql数据库之基本操作和存储引擎
  4. Golang CSP并发模型
  5. 阿里云ACM:云原生配置管理利器,让云上的Spring Cloud应用配置管理舞动起来
  6. Python爬虫入门教程24:下载某网站付费文档保存PDF
  7. 制作HTML表单(文本框设置对齐等)
  8. 2022软件测试常见抓包工具
  9. 【只推荐一位】木东居士,带着大家一起成长的数据科学大神!
  10. php urldecode 加号,php|urldecode urlencode 的加号问题
  11. 遇到不同网段互相访问的一些问题的总结
  12. HackerRank问题:Gary hiker valleys
  13. bzoj1305【CQOI2009】dance 跳舞
  14. 人员走动轨迹展示——小人走动行走动画
  15. What inspires designers? Preferences on inspirational approaches during idea generation
  16. U48565 金坷垃
  17. UEFI0067:A PCIe link training failure is observed in PCIe Slot 3 and the link is disabled. (已解决)
  18. Centos7: Docker安装与实践
  19. 【独立版】惠赚客V1.4.8公众号H5版,一款非常火爆的CPS引流系统
  20. 零基础掌握IP地址知识,小白必学知识点!

热门文章

  1. cf 1504 F. Flip the Cards
  2. 牛客题霸 [数组中出现次数超过一半的数字] C++题解/答案
  3. [TJOI2012] 旅游(树的直径)
  4. CF1580C Train Maintenance(分块)
  5. CF1322B-Present【双指针】
  6. P2052-[NOI2011]道路修建【树】
  7. nssl1337-矩形统计【单调栈】
  8. jzoj5223-B【矩阵乘法】
  9. nssl1185-试卷【状态压缩】
  10. ssl1010-方格取数