当前位置: 首页 > news >正文

谷歌官方网站产品工艺设计

谷歌官方网站,产品工艺设计,护肤品网站建设环境分析,西宁哪家网络公司做网站好stripe pay介绍 如果您使用任何网关#xff0c;您都可以在我们的库中实现该网关并支持开源世界#xff0c;我们将非常高兴地欢迎贡献者。 您可以在这里找到我们的github存储库 在开始实现网关之前#xff0c;您应该首先看到其他一些类。 以下是简要定义的类。 HTTP客户端… stripe pay 介绍 如果您使用任何网关您都可以在我们的库中实现该网关并支持开源世界我们将非常高兴地欢迎贡献者。 您可以在这里找到我们的github存储库 在开始实现网关之前您应该首先看到其他一些类。 以下是简要定义的类。 HTTP客户端 使用网关时最主要的是将一些数据发布到网关并解析响应。 为了处理http post请求此类提供了两个重载的静态httpPost方法。 公共静态HTTPResponse httpPost字符串url字符串postParamsContentType contentType 公共静态HTTPResponse httpPost字符串url字符串postParamsContentType contentType字符集charset 因此您不必担心处理http请求。 帮手 当您使用多个网关时开发人员通常面临的主要问题是某些网关接收xml而某些网关接收JSON或查询字符串因为J2pay始终返回JSON响应因此您不必担心在这些xmlJSON或任何xml之间进行数据转换。请求参数。 这是com.tranxactive.paymentprocessor.net程序包中的帮助程序类的列表。 QueryStringHelper JSONHelper StringHelper XMLHelper 注意助手类中定义的所有方法都是静态的。 回应 为了提供通用响应j2pay在com.tranxactive.paymentprocessor.gateways.responses包中提供了五个响应类。 错误响应 购买响应 重新付款响应 退款回应 虚空响应 因为您可以使用它们的名称来标识您是否正在使用购买方法所以您将使用PurchaseResponse类如果使用重新计费方法则将使用RebillRespons类依此类推 ErrorResponse类是将在所有四个方法中使用的唯一类。 一件事您还应该知道四个类但ErrorResponse被视为成功响应。 因此当且仅当交易成功时我们才会退还它们。 参数列表 ParamList是位于com.tranxactive.paymentprocessor.gateways.parameters包中的一个枚举包含所有交易中必须保持通用的变量列表例如如果您想将交易ID分配给变量transactionId则可能会出现拼写错误但是如果您将使用paramList枚举非常安全。 这是在JSON中分配transactionId时如何使用它。 JSONObject json new JSONObject();Json.put(ParamList.TRANSACTION_ID.getName(), 1234567890);例 现在您已经拥有集成新网关所需的全部知识。 在此示例中我们将集成NMI网关。 在研究此示例时我们假设您已阅读NMI官方文档。 让我们编码。 为了集成NMI网关我们将在com.tranxactive.paymentprocessor.gateways包中创建一个名称为NMIGateway的类。 接下来我们将扩展Gateway类这将导致我们实现网关中必须存在的所有方法。 这是我们班的样子。 public class NMIGateway extends Gateway{Overridepublic HTTPResponse purchase(JSONObject apiParameters, Customer customer, CustomerCard customerCard, Currency currency, float amount) { }Overridepublic HTTPResponse refund(JSONObject apiParameters, JSONObject refundParameters, float amount) { }Overridepublic HTTPResponse rebill(JSONObject apiParameters, JSONObject rebillParameters, float amount) { }Overridepublic HTTPResponse voidTransaction(JSONObject apiParameters, JSONObject voidParameters) { }Overridepublic JSONObject getApiSampleParameters() { }Overridepublic JSONObject getRefundSampleParameters() { }Overridepublic JSONObject getRebillSampleParameters() { }Overridepublic JSONObject getVoidSampleParameters() { }} 接下来我们将在课程末尾添加以下四个方法。 这些将帮助我们构建需要在网关上发布的最终参数。 private JSONObject buildPurchaseParameters(JSONObject apiParameters, Customer customer, CustomerCard customerCard, Currency currency, float amount){}private JSONObject buildVoidParameters(JSONObject apiParameters, JSONObject voidParameters) {}private JSONObject buildRefundParameters(JSONObject apiParameters, JSONObject refundParameters, float amount){}private JSONObject buildRebillParameters(JSONObject apiParameters, JSONObject rebillParameters, float amount){} 接下来我们将全局定义apiURL变量在该变量中将发布所有请求。 private final String apiURL https://secure.networkmerchants.com/api/transact.php; 接下来我们将研究四个SampleParameters方法。 首先也是最重要的是执行所有事务所需的getApiSampleParameters方法。 如果您已阅读NMI文档则将看到API参数是用户名和密码。 这是getApiSampleParameters方法的外观。 Overridepublic JSONObject getApiSampleParameters() {return new JSONObject().put(username, the api user name use demo as the user name for testing).put(password, the api password use password as the password for testing);} 以下是更新后剩下的三种方法。 Overridepublic JSONObject getRefundSampleParameters() {return new JSONObject().put(ParamList.TRANSACTION_ID.getName(), the transaction id which will be refunded);}Overridepublic JSONObject getRebillSampleParameters() {return new JSONObject().put(customerVaultId, the customer vault id);}Overridepublic JSONObject getVoidSampleParameters() {return new JSONObject().put(ParamList.TRANSACTION_ID.getName(), the transaction id which will be void);} 接下来我们将研究四种buildparameters方法。 这是插入我们的代码后的样子。 private JSONObject buildPurchaseParameters(JSONObject apiParameters, Customer customer, CustomerCard customerCard, Currency currency, float amount) {JSONObject object new JSONObject();object.put(type, sale).put(username, apiParameters.getString(username)).put(password, apiParameters.getString(password)).put(ccnumber, customerCard.getNumber()).put(ccexp, customerCard.getExpiryMonth() customerCard.getExpiryYear().substring(2)).put(cvv, customerCard.getCvv()).put(amount, amount).put(currency, currency).put(first_name, customer.getFirstName()).put(last_name, customer.getLastName()).put(address1, customer.getAddress()).put(city, customer.getCity()).put(state, customer.getState()).put(zip, customer.getZip()).put(country, customer.getCountry().getCodeISO2()).put(phone, customer.getPhoneNumber()).put(email, customer.getEmail()).put(ipaddress, customer.getIp()).put(customer_vault, add_customer);return object;}private JSONObject buildVoidParameters(JSONObject apiParameters, JSONObject voidParameters) {JSONObject object new JSONObject();object.put(type, void).put(username, apiParameters.getString(username)).put(password, apiParameters.getString(password)).put(transactionid, voidParameters.getString(ParamList.TRANSACTION_ID.getName()));return object;}private JSONObject buildRefundParameters(JSONObject apiParameters, JSONObject refundParameters, float amount) {JSONObject object new JSONObject();object.put(type, refund).put(username, apiParameters.getString(username)).put(password, apiParameters.getString(password)).put(transactionid, refundParameters.getString(ParamList.TRANSACTION_ID.getName())).put(amount, Float.toString(amount));return object;}private JSONObject buildRebillParameters(JSONObject apiParameters, JSONObject rebillParameters, float amount) {JSONObject object new JSONObject();object.put(username, apiParameters.getString(username)).put(password, apiParameters.getString(password)).put(customer_vault_id, rebillParameters.getString(customerVaultId)).put(amount, Float.toString(amount));return object;} 接下来我们将研究购买方法。 首先我们将使用buildPurchaseParameters方法构建最终需要发布在网关上的最终参数。 JSONObject requestObject this.buildPurchaseParameters(apiParameters, customer, customerCard, currency, amount); 接下来我们将定义一些变量来处理请求不用担心这完全取决于您的编码方式。 JSONObject responseObject;String requestString;String responseString;int responseCode;requestObject JSONHelper.encode(requestObject);requestString QueryStringHelper.toQueryString(requestObject);HTTPResponse httpResponse;PurchaseResponse successResponse null;ErrorResponse errorResponse new ErrorResponse(); 由于NMI需要发布queryString数据因此我们使用了两个帮助器类。 JSONHelper和QueryStringHelper 首先我们将借助此代码对buildPurchaseParameters返回的json进行urlencode。 requestObject JSONHelper.encode(requestObject); 接下来借助此代码将编码的json转换为查询字符串。 requestString QueryStringHelper.toQueryString(requestObject); 您一定想知道为什么我们初始化errorResponse却将successResponse设置为null。 这一切使某些编程登录可以轻松处理请求。 接下来我们将数据发布到网关这是我们将如何做的。 httpResponse HTTPClient.httpPost(this.apiURL, requestString, ContentType.APPLICATION_FORM_URLENCODED); 这里有两个场景必须牢记。 与网关服务器的通信成功。 出现某些网络问题或者网关服务器暂时不可用。 这是您处理第二种情况的方法。 if (httpResponse.getStatusCode() -1) {return httpResponse;} 如果与网关服务器的通信成功那么我们的代码将不会从此处返回并继续。 接下来我们将获取网关响应并将其解析为JSON以便我们可以轻松地处理响应。 responseString httpResponse.getContent();responseObject JSONHelper.decode(QueryStringHelper.toJson(responseString));responseCode responseObject.getInt(response_code); 如您所见我们再次使用了QueryStringHelper和JSONHelper。 借助辅助类并不是那么容易。 我们知道网关响应是否成功因此它必须返回响应代码100。请参见以下代码。 if (responseCode 100) {httpResponse.setSuccessful(true);successResponse new PurchaseResponse();successResponse.setMessage(responseObject.getString(responsetext));successResponse.setTransactionId(responseObject.get(transactionid).toString());successResponse.setCardValuesFrom(customerCard);successResponse.setAmount(amount);successResponse.setCurrencyCode(currency);successResponse.setRebillParams(new JSONObject().put(customerVaultId, responseObject.get(customer_vault_id).toString()));successResponse.setRefundParams(new JSONObject().put(ParamList.TRANSACTION_ID.getName(), responseObject.get(transactionid).toString()));successResponse.setVoidParams(new JSONObject().put(ParamList.TRANSACTION_ID.getName(), responseObject.get(transactionid).toString()));} else {errorResponse.setMessage(responseObject.getString(responsetext));} 让我们逐行了解上面的代码。 httpResponse.setSuccessful(true); 默认情况下httpResponse将成功设置为false因此我们仅在成功情况下才将其设置为true如上所述。 successResponse new PurchaseResponse(); 我们初始化了在方法开头定义的successResponse变量。 当您查看PurchaseResponse类的代码时您将看到在返回响应之前必须设置的所有参数。 //this sets the gateway success message.successResponse.setMessage(responseObject.getString(responsetext));//this sets the gateway returned transaction id.successResponse.setTransactionId(responseObject.get(transactionid).toString());//this is our standard we provide some card detail in purchase response. You will see in final response.successResponse.setCardValuesFrom(customerCard);successResponse.setAmount(amount);successResponse.setCurrencyCode(currency); 接下来我们设置要收取的金额和货币。 由于我们有责任提供重新使用退款或作废所需的即用型参数。 这是我们的操作方式。 successResponse.setRebillParams(new JSONObject().put(customerVaultId, responseObject.get(customer_vault_id).toString()));successResponse.setRefundParams(new JSONObject().put(ParamList.TRANSACTION_ID.getName(), responseObject.get(transactionid).toString()));successResponse.setVoidParams(new JSONObject().put(ParamList.TRANSACTION_ID.getName(), responseObject.get(transactionid).toString())); 但是如果React不成功怎么办我们会遇到一些错误例如资金不足或avs错误。 这是我们在else块中执行此操作的方式。 errorResponse.setMessage(responseObject.getString(responsetext)); 接下来我们将返回最终的响应即HTTPResponse。 if (successResponse ! null) {successResponse.setGatewayResponse(responseObject);httpResponse.setContent(successResponse.getResponse().toString());} else {errorResponse.setGatewayResponse(responseObject);httpResponse.setContent(errorResponse.getResponse().toString());}return httpResponse; 这就是我们已经成功集成了NMI购买方法的全部接下来的三种方法将相同除了您将为每种方法使用不同的Response类即您将使用 RebillRebill方法中的响应。 RefundResponse退款方式。 voidTransaction方法中的VoidResponse。 而不是PurchaseResponse。 强烈建议查看所有这些响应类的来源以及示例响应在此处给出 要查看NMI网关的完整代码请参见我们的github存储库 。 翻译自: https://www.javacodegeeks.com/2018/12/j2pay-implementing-gateway.htmlstripe pay
http://www.pierceye.com/news/84929/

相关文章:

  • 黄骅市官方网站临沂市建设局的网站
  • 券多多是谁做的网站中国工商网查询入口
  • 网站通栏苏州网站建设建网站
  • 深圳最好的营销网站建设公司wordpress下载面板美化
  • 综合性门户网站有seo咨询顾问
  • 做一个网站链接怎么做家政 东莞网站建设
  • 如何自已建网站简洁大气的公司网站
  • 中国工程建设协会网站网站建设公司目标客户
  • 优化图片大小的网站牟平做网站
  • 雪锐琴网站建设怎么用 c文件做网站
  • 网站建设项目的实训报告网页设计与制作代码软件
  • 点蜜免费空间上传网站仿站工具教程
  • 阜新市建设学校管方网站分销是怎么做的
  • 广州网站运营专注乐云seo合肥酒店团购网站建设
  • 在线咨询网站开发价格临西做网站报价
  • 北仑网站建设29gz企业网站建立网络虚拟社区时对于企业
  • 珠宝类网站建设河北网站制作
  • 免费素材网站素材库图片列表wordpress主题
  • 手机网站 制作教程农产品电子商务网站建设
  • 做现货去哪些网站营销好呢网站风格优势
  • 单位建设网站的目的网络营销的特点主要有
  • 怎么做电影引流网站百度竞价托管外包代运营
  • 山东平台网站建设平台管理网站怎么做的
  • 网站黑色代码海宏集团网站建设方案
  • 展示型装饰网站模板下载wordpress 3清新主题
  • 怎么介绍自己做的网站效果图地产网站建设案例
  • 手工网站做蛋糕盒子接网站开发私活如何签合同
  • 做网站的备案有帮忙做ppt的网站或人吗
  • 重庆中企动力地址上海企业seo
  • 网站搭建哪里找最好it外包企业