Skip to content

HTTP code Response 200 Tetapi error 400 di Snap Flow Transaksi (Credit Card) #171

Description

@threeadi

Masalah Integrasi Midtrans Snap (Android UI Kit)

Backend Request (Snap Flow)

{
  "payment_id": "PAY_***************",
  "transaction": {
    "transaction_details": {
      "order_id": "ORDER_************",
      "gross_amount": 949050
    },
    "item_details": [
      {
        "id": "PRODUCT_********-****-****-****-************",
        "variant_id": "VARIANT_********-****-****-****-************",
        "price": 950000,
        "quantity": 1,
        "name": "HP DeskJet 2336 Printer",
        "brand": "HP",
        "category": "Elektronik",
        "merchant_name": "***"
      },
      {
        "id": "SHIPPING_************",
        "price": 10000,
        "quantity": 1,
        "name": "Ongkos Kirim - J&T Express",
        "brand": "***",
        "category": "Shipping",
        "merchant_name": "***"
      },
      {
        "id": "PLATFORM_FEE",
        "price": 100,
        "quantity": 1,
        "name": "Biaya Platform",
        "brand": "***",
        "category": "Fee",
        "merchant_name": "***"
      },
      {
        "id": "ADJUSTMENT",
        "price": -11050,
        "quantity": 1,
        "name": "Penyesuaian",
        "brand": "***",
        "category": "Adjustment",
        "merchant_name": "***"
      }
    ],
    "customer_details": {
      "first_name": "***",
      "last_name": "***",
      "email": "***@***.com",
      "phone": "62***********",
      "billing_address": {
        "first_name": "***",
        "last_name": "***",
        "email": "***@***.com",
        "phone": "62***********",
        "address": "***",
        "city": "***",
        "postal_code": "*****",
        "country_code": "IDN"
      },
      "shipping_address": {
        "first_name": "***",
        "last_name": "***",
        "email": "***@***.com",
        "phone": "62***********",
        "address": "***",
        "city": "***",
        "postal_code": "*****",
        "country_code": "IDN"
      }
    },
    "enabled_payments": ["credit_card"],
    "credit_card": {
      "save_card": false,
      "secure": true,
      "installment": {
        "required": true,
        "terms": {
          "bni": [3]
        }
      }
    },
    "expiry": {
      "start_time": "2025-**-** **:**:** +0700",
      "unit": "hours",
      "duration": 24
    }
  }
}

kode Android

  midTransKit =  UiKitApi.Builder()
            .withMerchantClientKey(if (BuildConfig.DEBUG) Constant.MIDTRANS_KEY_SANDBOX else Constant.MIDTRANS_KEY_PRODUCTION)
            //.withMerchantClientKey(Constant.MIDTRANS_KEY_PRODUCTION)
            .withContext(this@PaymentGeneralActivity)
            .withMerchantUrl(if (BuildConfig.DEBUG) Constant.MIDTRANS_MERCHANT_URL_SANDBOX else Constant.MIDTRANS_MERCHANT_URL_PRODUCTION)
            //.withMerchantUrl(Constant.MIDTRANS_MERCHANT_URL_PRODUCTION)
            .enableLog(true)
            .build()
---
 midTransKit?.startPaymentUiFlow(
                        this@PaymentGeneralActivity,
                        launcherUIKit,
                        snapToken
                    )

Hasil Debug network

Dari hasil network log Android:

  • Midtrans Android UI Kit masih menggunakan API /v1/transactions
  • Sedangkan Snap.js (Web) sudah menggunakan API /v2/transactions

Perbedaan versi API ini menyebabkan request dari Android ditolak dengan HTTP 400

Image

untuk lengkap nya di file txt berikut
transaction.txt

Perbandingan dengan snap.js

Jika menggunakan snap.js (di web) sudah menggunakan api v2
https://app.sandbox.midtrans.com/snap/v2/transactions/01d4e763-a3dd-46a9-81e0-f6e7f44e02c6/charge

jika menggunakan v2, transaksi terjadi tanpa ada masalah

Image

Kesimpulan

Root Cause

Android UI Kit (com.midtrans:uikit) masih menggunakan Transaction API v1
Payload yang dikirim backend sudah kompatibel dengan API v2
Terjadi inkompatibilitas versi API (v1 vs v2)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions