日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

stripe pay_J2Pay –实施网关

發布時間:2023/12/3 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stripe pay_J2Pay –实施网关 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

stripe pay

介紹

如果您使用任何網關,您都可以在我們的庫中實現該網關并支持開源世界,我們將非常高興地歡迎貢獻者。

您可以在這里找到我們的github存儲庫

在開始實現網關之前,您應該首先看到其他一些類。

以下是簡要定義的類。

HTTP客戶端

使用網關時,最主要的是將一些數據發布到網關并解析響應。

為了處理http post請求,此類提供了兩個重載的靜態httpPost方法。

  • 公共靜態HTTPResponse httpPost(字符串url,字符串postParams,ContentType contentType)
  • 公共靜態HTTPResponse httpPost(字符串url,字符串postParams,ContentType contentType,字符集charset)
  • 因此,您不必擔心處理http請求。

    幫手

    當您使用多個網關時,開發人員通常面臨的主要問題是某些網關接收xml,而某些網關接收JSON或查詢字符串,因為J2pay始終返回JSON響應,因此您不必擔心在這些xml,JSON或任何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.html

    stripe pay

    總結

    以上是生活随笔為你收集整理的stripe pay_J2Pay –实施网关的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。