【问题标题】:Implementing Google Pay in Android application using BlueSnap使用 BlueSnap 在 Android 应用程序中实现 Google Pay
【发布时间】:2019-09-26 22:19:51
【问题描述】:

我想在我的 android 应用程序中实现 Google pay,我希望 BlueSnap 作为 Google Pay 处理器。我在 May 应用中实现了Google Pay,并且还创建了BlueSnap 沙盒帐户。当我输入我的实时卡详细信息时,我会收到此祝酒词成功收到付款数据。我还在GatewayMerchantId 的网关和沙盒商户ID 中写了bluesnap。现在我被卡住了,有人可以帮我解决如何将此付款数据发送到BlueSnap 并从BlueSnap 获得付款确认,以便我的付款将显示在BlueSnap 沙盒仪表板上。

谢谢。

我已经上传了我接收 toast 的 handlePaymentSuccess() 代码和我写网关和商家 ID 的 gatewatTokenization() 方法。如果你需要更多代码,我可以上传。

private void handlePaymentSuccess(PaymentData paymentData) {

        String paymentInformation = paymentData.toJson();

        // Token will be null if PaymentDataRequest was not constructed using fromJson(String).
        if (paymentInformation == null) {
            return;
        }
        JSONObject paymentMethodData;

        try {

            paymentMethodData = new JSONObject(paymentInformation).getJSONObject("paymentMethodData");
            // If the gateway is set to "example", no payment information is returned - instead, the
            // token will only consist of "examplePaymentMethodToken".
            if (paymentMethodData
                    .getJSONObject("tokenizationData")
                    .getString("type")
                    .equals("PAYMENT_GATEWAY")
                    && paymentMethodData
                    .getJSONObject("tokenizationData")
                    .getString("token")
                    .equals("examplePaymentMethodToken")) {
                android.app.AlertDialog alertDialog =
                        new android.app.AlertDialog.Builder(this)
                                .setTitle("Warning")
                                .setMessage(
                                        "Gateway name set to \"example\" - please modify "
                                                + "Constants.java and replace it with your own gateway.")
                                .setPositiveButton("OK", null)
                                .create();
                alertDialog.show();
            }

            String billingName =
                    paymentMethodData.getJSONObject("info").getJSONObject("billingAddress").getString("name");

            JSONObject testing =
                    paymentMethodData.getJSONObject("info");

            JSONObject testingNew =
                    paymentMethodData;

            try {
                String paymentToken = createBlsTokenFromGooglePayPaymentData(paymentData);
                //Toast.makeText(this, String.valueOf(paymentToken), Toast.LENGTH_LONG).show();
            } catch (Exception e) {
                e.printStackTrace();
            }

            Log.d("BillingName", billingName);
            Toast.makeText(this, getString(R.string.payments_show_name, billingName), Toast.LENGTH_LONG).show();
            //Toast.makeText(this, String.valueOf(testing), Toast.LENGTH_LONG).show();


            // Logging token string.
            Log.d("GooglePaymentToken", paymentMethodData.getJSONObject("tokenizationData").getString("token"));
        } catch (JSONException e) {
            Log.e("handlePaymentSuccess", "Error: " + e.toString());
            return;
        }
    }
private static JSONObject getGatewayTokenizationSpecification() throws JSONException {
    return new JSONObject(){{
      put("type", "PAYMENT_GATEWAY");
      put("parameters", new JSONObject(){{
        put("gateway", "bluesnap");
        put("gatewayMerchantId", "######");//i've hidden MerchantId
        }
      });
    }};
  }

【问题讨论】:

    标签: java android google-pay bluesnap


    【解决方案1】:

    根据BlueSnap's documentation

    这个paymentToken 应该被发送到BlueSnap API,这在Processing Transactions 部分中有详细说明。

    我认为相关的部分是向 BlueSnap 发出 HTTP POST,其中包含您收到的 paymentToken 作为createBlsTokenFromGooglePayPaymentData 的一部分:

    curl -v -X POST https://sandbox.bluesnap.com/services/2/transactions \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \ 
    -H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \
    -d '
    {
        "cardTransactionType": "AUTH_CAPTURE",
        "softDescriptor": "DescTest",
        "amount": 11.00,
        "currency": "USD",
        "wallet": {
          "walletType": "GOOGLE_PAY",
          "encodedPaymentToken": "ImRhdGEiOiJuY1AvRitIUy8zeG5bXhCMFd"
        }
    }
    

    其中paymentToken 被分配给encodedPaymentToken 的值。

    【讨论】:

      猜你喜欢
      • 2022-07-04
      • 2019-05-29
      • 2014-10-25
      • 2015-12-10
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多