PayMaya / PayMaya-Android-SDK-v2

MIT License
12 stars 6 forks source link

Missing/invalid parameters on Checkout #10

Closed jcchikikomori closed 3 years ago

jcchikikomori commented 3 years ago

Screen Shot 2020-09-30 at 5 56 52 PM copy

Code snippet:

// Items list
List<Item> productList = new ArrayList<>();

// Process current bag and pass to items list
for (int i = 0; i < productModels.size(); i++) {
    ProductModel pm = productModels.get(i);
    List<OptionsModel> options = new ArrayList<>(pm.getBagModel().getOptions());
    List<BestWithModel> bestWiths = new ArrayList<>(pm.getBagModel().getBestWith());

    BigDecimal mainProductPrice = BigDecimal.valueOf(
            pm.getBagModel().getPrice() * pm.getQuantity());

    TotalAmount mainProductTotalAmount = new TotalAmount(mainProductPrice, currency, null);

    // ADD MAIN PRODUCT
    Item mainProduct = new Item(
            pm.getName(),
            pm.getQuantity(),
            pm.getBagModel().getPoscode(),
            null, null,
            mainProductTotalAmount);

    productList.add(mainProduct);
}

// Set final total amount (accumulated) before passing to CheckoutRequest
TotalAmount finalTotalAmount = new TotalAmount(new BigDecimal(dTotalPrice), currency, null);
DebugLog.d(TAG, "[PayMaya] finalTotalAmount: " + finalTotalAmount.getValue());
// Prepare params for PayMayaCheckout
String successURL = BuildConfig.CASHLESS_REDIRECT_URL_SUCCESS;
String failedURL = BuildConfig.CASHLESS_REDIRECT_URL_FAILED;
String canceledURL = BuildConfig.CASHLESS_REDIRECT_URL_CANCELED;
// Compile to a class
RedirectUrl redirectUrl = new RedirectUrl(successURL, failedURL, canceledURL);
// Prepare Checkout instance with final details
CheckoutRequest checkout = new CheckoutRequest(
        finalTotalAmount, pmBuyer,
        productList, referenceNumber, redirectUrl, null);
// Prepare PayMayaCheckout singleton
mPayMayaCheckout = PayMayaCheckout.Companion.newBuilder()
        .clientPublicKey(midPublicKey)
        .environment(PayMayaEnvironment.PRODUCTION)
        .logLevel(BuildConfig.DEBUG ? LogLevel.VERBOSE : LogLevel.ERROR)
        .build();

Stacktrace:

2020-09-30 17:36:19.540 13771-13771/ph.mobext.REDACTED.debug D/CheckoutActivity: onActivityResult Request Code: 10000
2020-09-30 17:36:19.540 13771-13771/ph.mobext.REDACTED.debug D/CheckoutActivity: onActivityResult Result Code: 1063
2020-09-30 17:36:19.552 13771-13771/ph.mobext.REDACTED.debug E/PayMayaSDK: PayMaya Checkout result: FAILURE
2020-09-30 17:36:19.552 13771-13771/ph.mobext.REDACTED.debug E/PayMayaSDK: PaymentError(code=2553, message=Missing/invalid parameters., parameters=[PaymentErrorParameter(field=items[1].totalAmount.value, description=value must be at least 0), PaymentErrorParameter(field=items[2].totalAmount.value, description=value must be at least 0)], details=null)
jcchikikomori commented 3 years ago

Apparently, the Web SDK of PayMaya Checkout also facing this issue.

Last night, we notified that the issue was fixed last night, so we tested our client app again, and it already fixed. Closing this.