একটি Android পেমেন্ট অ্যাপ থেকে শিপিং এবং যোগাযোগের তথ্য প্রদান করা

ওয়েব পেমেন্ট API-এর সাথে শিপিং ঠিকানা এবং প্রদানকারীর যোগাযোগের তথ্য প্রদান করতে আপনার Android পেমেন্ট অ্যাপ কীভাবে আপডেট করবেন।

সাহেল শরিফী
Sahel Sharify

প্রকাশিত: 17 জুলাই, 2020, শেষ আপডেট: মে 27, 2025

একটি ওয়েব ফর্মের মাধ্যমে শিপিং ঠিকানা এবং যোগাযোগের তথ্য প্রবেশ করা গ্রাহকদের জন্য একটি কষ্টকর অভিজ্ঞতা হতে পারে। এটি ত্রুটি এবং কম রূপান্তর হার হতে পারে.

এই কারণেই অর্থপ্রদানের অনুরোধ API শিপিং ঠিকানা এবং যোগাযোগের তথ্যের অনুরোধ করার জন্য একটি বৈশিষ্ট্য সমর্থন করে। এটি একাধিক সুবিধা প্রদান করে:

  • ব্যবহারকারীরা মাত্র কয়েকটি ট্যাপ দিয়ে সঠিক ঠিকানা বেছে নিতে পারেন।
  • ঠিকানাটি সর্বদা প্রমিত বিন্যাসে ফেরত দেওয়া হয়।
  • একটি ভুল ঠিকানা জমা দেওয়ার সম্ভাবনা কম।

ব্রাউজারগুলি একটি একীভূত অর্থপ্রদানের অভিজ্ঞতা প্রদান করতে একটি অর্থপ্রদান অ্যাপে শিপিং ঠিকানা এবং যোগাযোগের তথ্য সংগ্রহকে পিছিয়ে দিতে পারে। এই কার্যকারিতাকে ডেলিগেশন বলা হয়।

যখনই সম্ভব, Chrome একজন গ্রাহকের শিপিং ঠিকানা এবং যোগাযোগের তথ্য সংগ্রহ করা Android পেমেন্ট অ্যাপে অর্পণ করে। প্রতিনিধি দল চেকআউটের সময় ঘর্ষণ হ্রাস করে।

বণিক ওয়েবসাইট গতিশীলভাবে শিপিং বিকল্প এবং মোট মূল্য আপডেট করতে পারে গ্রাহকের শিপিং ঠিকানা এবং শিপিং বিকল্পের পছন্দের উপর নির্ভর করে।

শিপিং বিকল্প এবং শিপিং ঠিকানা কর্মে পরিবর্তন. এটি কীভাবে শিপিং বিকল্পগুলি এবং মোট মূল্যকে গতিশীলভাবে প্রভাবিত করে তা দেখুন৷

ইতিমধ্যে বিদ্যমান Android পেমেন্ট অ্যাপে প্রতিনিধি সমর্থন যোগ করতে, নিম্নলিখিত পদক্ষেপগুলি বাস্তবায়ন করুন:

  1. সমর্থিত প্রতিনিধি দল ঘোষণা করুন
  2. প্রয়োজনীয় অর্থপ্রদানের বিকল্পগুলির জন্য PAY অভিপ্রায় অতিরিক্ত বিশ্লেষণ করুন
  3. পেমেন্ট প্রতিক্রিয়ায় প্রয়োজনীয় তথ্য প্রদান করুন
  4. [ঐচ্ছিক] গতিশীল প্রবাহ সমর্থন :
    1. ব্যবহারকারীর নির্বাচিত অর্থপ্রদানের পদ্ধতি, শিপিং ঠিকানা, বা শিপিং বিকল্পের পরিবর্তন সম্পর্কে বণিককে অবহিত করুন
    2. বণিকের কাছ থেকে আপডেট করা অর্থপ্রদানের বিবরণ পান (উদাহরণস্বরূপ, নির্বাচিত শিপিং বিকল্পের খরচের উপর ভিত্তি করে সামঞ্জস্যপূর্ণ মোট পরিমাণ)

সমর্থিত প্রতিনিধি দল ঘোষণা করুন

ব্রাউজারকে অতিরিক্ত তথ্যের তালিকা জানতে হবে যা আপনার অর্থপ্রদান অ্যাপ প্রদান করতে পারে যাতে এটি সেই তথ্যের সংগ্রহ আপনার অ্যাপে অর্পণ করতে পারে। আপনার অ্যাপের AndroidManifest.xml- এ সমর্থিত প্রতিনিধিদের <meta-data> হিসেবে ঘোষণা করুন।

<activity
  android:name=".PaymentActivity"
    <meta-data
    android:name="org.chromium.payment_supported_delegations"
    android:resource="@array/chromium_payment_supported_delegations" />
</activity>

android:resource অবশ্যই একটি <string-array> নির্দেশ করতে হবে যাতে নিম্নলিখিত মানগুলির সমস্ত বা একটি উপসেট থাকে:

  • payerName
  • payerEmail
  • payerPhone
  • shippingAddress

নিম্নলিখিত উদাহরণটি শুধুমাত্র একটি শিপিং ঠিকানা এবং প্রদানকারীর ইমেল ঠিকানা প্রদান করতে পারে।

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string-array name="chromium_payment_supported_delegations">
    <item>payerEmail</item>
    <item>shippingAddress</item>
  </string-array>
</resources>

প্রয়োজনীয় অর্থপ্রদানের বিকল্পগুলির জন্য PAY অভিপ্রায় অতিরিক্ত বিশ্লেষণ করুন

paymentOptions অভিধান ব্যবহার করে বণিক অতিরিক্ত প্রয়োজনীয় তথ্য নির্দিষ্ট করতে পারেন। ক্রোম প্রয়োজনীয় বিকল্পগুলির তালিকা প্রদান করবে যা আপনার অ্যাপ প্রদান করতে পারে paymentOptions বিকল্প ইন্টেন্ট অতিরিক্তগুলি PAY কার্যকলাপে পাস করে।

paymentOptions

paymentOptions হল বণিকের নির্দিষ্ট অর্থপ্রদানের বিকল্পগুলির উপসেট যার জন্য আপনার অ্যাপ প্রতিনিধি সমর্থন ঘোষণা করেছে৷

কোটলিন

val paymentOptions: Bundle? = extras.getBundle("paymentOptions")
val requestPayerName: Boolean? = paymentOptions?.getBoolean("requestPayerName")
val requestPayerPhone: Boolean? = paymentOptions?.getBoolean("requestPayerPhone")
val requestPayerEmail: Boolean? = paymentOptions?.getBoolean("requestPayerEmail")
val requestShipping: Boolean? = paymentOptions?.getBoolean("requestShipping")
val shippingType: String? = paymentOptions?.getString("shippingType")

জাভা

Bundle paymentOptions = extras.getBundle("paymentOptions");
if (paymentOptions != null) {
    Boolean requestPayerName = paymentOptions.getBoolean("requestPayerName");
    Boolean requestPayerPhone = paymentOptions.getBoolean("requestPayerPhone");
    Boolean requestPayerEmail = paymentOptions.getBoolean("requestPayerEmail");
    Boolean requestShipping = paymentOptions.getBoolean("requestShipping");
    String shippingType = paymentOptions.getString("shippingType");
}

এটি নিম্নলিখিত পরামিতিগুলি অন্তর্ভুক্ত করতে পারে:

  • requestPayerName - প্রদানকারীর নাম প্রয়োজন কি না তা নির্দেশ করে বুলিয়ান।
  • requestPayerPhone - প্রদানকারীর ফোন প্রয়োজন কিনা তা নির্দেশ করে বুলিয়ান।
  • requestPayerEmail - প্রদানকারীর ইমেল প্রয়োজন কি না তা নির্দেশ করে বুলিয়ান।
  • requestShipping - শিপিং তথ্য প্রয়োজন কি না তা নির্দেশ করে বুলিয়ান।
  • shippingType - শিপিংয়ের ধরন দেখানো স্ট্রিং। শিপিংয়ের ধরন "shipping" , "delivery" বা "pickup" হতে পারে। ব্যবহারকারীর ঠিকানা বা শিপিং বিকল্পের পছন্দের জন্য জিজ্ঞাসা করার সময় আপনার অ্যাপটি তার UI-তে এই ইঙ্গিতটি ব্যবহার করতে পারে।

shippingOptions

shippingOptions হল বণিকের নির্দিষ্ট শিপিং বিকল্পগুলির পার্সেলযোগ্য অ্যারে। এই প্যারামিটারটি তখনই বিদ্যমান থাকবে যখন paymentOptions.requestShipping == true

কোটলিন

val shippingOptions: List<ShippingOption>? =
    extras.getParcelableArray("shippingOptions")?.mapNotNull {
        p -> from(p as Bundle)
    }

জাভা

Parcelable[] shippingOptions = extras.getParcelableArray("shippingOptions");
for (Parcelable it : shippingOptions) {
  if (it != null && it instanceof Bundle) {
    Bundle shippingOption = (Bundle) it;
  }
}

প্রতিটি শিপিং বিকল্প হল নিম্নলিখিত কীগুলির সাথে একটি Bundle

  • id - শিপিং বিকল্প শনাক্তকারী।
  • label - ব্যবহারকারীকে দেখানো শিপিং বিকল্প লেবেল।
  • amount - স্ট্রিং মান সহ currency এবং value কী ধারণকারী শিপিং খরচ বান্ডিল।
    • currency একটি ISO4217 সুগঠিত 3-অক্ষরের বর্ণমালা কোড হিসাবে শিপিং খরচের মুদ্রা দেখায়
    • value একটি বৈধ দশমিক আর্থিক মান হিসাবে শিপিং খরচের মান দেখায়
  • selected - পেমেন্ট অ্যাপ যখন শিপিং বিকল্পগুলি প্রদর্শন করে তখন শিপিং বিকল্পটি নির্বাচন করা উচিত কিনা।

selected ব্যতীত অন্য সমস্ত কীগুলির স্ট্রিং মান রয়েছে। selected একটি বুলিয়ান মান আছে।

কোটলিন

val id: String = bundle.getString("id")
val label: String = bundle.getString("label")
val amount: Bundle = bundle.getBundle("amount")
val selected: Boolean = bundle.getBoolean("selected", false)

জাভা

String id = bundle.getString("id");
String label = bundle.getString("label");
Bundle amount = bundle.getBundle("amount");
Boolean selected = bundle.getBoolean("selected", false);

একটি পেমেন্ট প্রতিক্রিয়া প্রয়োজনীয় তথ্য প্রদান

আপনার অ্যাপের PAY কার্যকলাপের প্রতিক্রিয়াতে প্রয়োজনীয় অতিরিক্ত তথ্য অন্তর্ভুক্ত করা উচিত।

এটি করার জন্য নিম্নলিখিত প্যারামিটারগুলিকে উদ্দেশ্য অতিরিক্ত হিসাবে নির্দিষ্ট করতে হবে:

  • payerName - প্রদানকারীর পুরো নাম। paymentOptions.requestPayerName সত্য হলে এটি একটি অ-খালি স্ট্রিং হওয়া উচিত।
  • payerPhone - প্রদানকারীর ফোন নম্বর। paymentOptions.requestPayerPhone সত্য হলে এটি একটি অ-খালি স্ট্রিং হওয়া উচিত।
  • payerEmail - প্রদানকারীর ইমেল ঠিকানা। paymentOptions.requestPayerEmail সত্য হলে এটি একটি অ-খালি স্ট্রিং হওয়া উচিত।
  • shippingAddress - ব্যবহারকারী প্রদত্ত শিপিং ঠিকানা। paymentOptions.requestShipping সত্য হলে এটি একটি অ-খালি বান্ডিল হওয়া উচিত। বান্ডেলটিতে নিম্নলিখিত কীগুলি থাকা উচিত যা একটি প্রকৃত ঠিকানার বিভিন্ন অংশকে উপস্থাপন করে।
    • countryCode
    • postalCode
    • sortingCode
    • region
    • city
    • dependentLocality
    • addressLine
    • organization
    • recipient
    • phone addressLine ব্যতীত অন্য সমস্ত কীগুলির স্ট্রিং মান রয়েছে। addressLine হল স্ট্রিংগুলির একটি অ্যারে।
  • shippingOptionId - ব্যবহারকারী-নির্বাচিত শিপিং বিকল্পের শনাক্তকারী। paymentOptions.requestShipping সত্য হলে এটি একটি অ-খালি স্ট্রিং হওয়া উচিত।

পেমেন্ট প্রতিক্রিয়া যাচাই

যদি আমন্ত্রিত অর্থপ্রদান অ্যাপ থেকে প্রাপ্ত একটি অর্থপ্রদানের প্রতিক্রিয়ার কার্যকলাপের ফলাফল RESULT_OK তে সেট করা হয়, তাহলে Chrome তার অতিরিক্তগুলিতে প্রয়োজনীয় অতিরিক্ত তথ্য পরীক্ষা করবে৷ বৈধতা ব্যর্থ হলে, Chrome নিম্নলিখিত বিকাশকারী-মুখোমুখী ত্রুটি বার্তাগুলির মধ্যে একটি সহ request.show() থেকে একটি প্রত্যাখ্যান প্রতিশ্রুতি ফিরিয়ে দেবে:

'Payment app returned invalid response. Missing field "payerEmail".'
'Payment app returned invalid response. Missing field "payerName".'
'Payment app returned invalid response. Missing field "payerPhone".'
'Payment app returned invalid shipping address in response.'
'... is not a valid CLDR country code, should be 2 upper case letters [A-Z].'
'Payment app returned invalid response. Missing field "shipping option".'

নিম্নলিখিত কোড নমুনা একটি বৈধ প্রতিক্রিয়া একটি উদাহরণ:

কোটলিন

fun Intent.populateRequestedPaymentOptions() {
    if (requestPayerName) {
        putExtra("payerName", "John Smith")
    }
    if (requestPayerPhone) {
        putExtra("payerPhone", "5555555555")
    }
    if (requestPayerEmail) {
        putExtra("payerEmail", "john.smith@gmail.com")
    }
    if (requestShipping) {
        val address: Bundle = Bundle()
        address.putString("countryCode", "CA")
        val addressLines: Array<String> =
                arrayOf<String>("111 Richmond st. West")
        address.putStringArray("addressLines", addressLines)
        address.putString("region", "Ontario")
        address.putString("city", "Toronto")
        address.putString("postalCode", "M5H2G4")
        address.putString("recipient", "John Smith")
        address.putString("phone", "5555555555")
        putExtra("shippingAddress", address)
        putExtra("shippingOptionId", "standard")
    }
}

জাভা

private Intent populateRequestedPaymentOptions() {
    Intent result = new Intent();
    if (requestPayerName) {
        result.putExtra("payerName", "John Smith");
    }
    if (requestPayerPhone) {
        presult.utExtra("payerPhone", "5555555555");
    }
    if (requestPayerEmail) {
        result.putExtra("payerEmail", "john.smith@gmail.com");
    }
    if (requestShipping) {
        Bundle address = new Bundle();
        address.putExtra("countryCode", "CA");
        address.putExtra("postalCode", "M5H2G4");
        address.putExtra("region", "Ontario");
        address.putExtra("city", "Toronto");
        String[] addressLines = new String[] {"111 Richmond st. West"};
        address.putExtra("addressLines", addressLines);
        address.putExtra("recipient", "John Smith");
        address.putExtra("phone", "5555555555");
        result.putExtra("shippingAddress", address);
        result.putExtra("shippingOptionId", "standard");
    }
    return result;
}

ঐচ্ছিক: গতিশীল প্রবাহ সমর্থন করে

কখনও কখনও একটি লেনদেনের মোট খরচ বেড়ে যায়, যেমন ব্যবহারকারী যখন এক্সপ্রেস শিপিং বিকল্পটি বেছে নেয়, বা যখন ব্যবহারকারী একটি আন্তর্জাতিক শিপিং ঠিকানা বেছে নেয় তখন উপলব্ধ শিপিং বিকল্পের তালিকা বা তাদের মূল্য পরিবর্তন হয়। যখন আপনার অ্যাপ ব্যবহারকারী-নির্বাচিত শিপিং ঠিকানা বা বিকল্প প্রদান করে, তখন এটি যেকোনো শিপিং ঠিকানা বা বিকল্প পরিবর্তন সম্পর্কে বণিককে অবহিত করতে এবং ব্যবহারকারীকে আপডেট করা অর্থপ্রদানের বিবরণ (বণিক দ্বারা সরবরাহ করা) দেখাতে সক্ষম হওয়া উচিত।

নতুন পরিবর্তন সম্পর্কে বণিককে অবহিত করতে, IPaymentDetailsUpdateServiceCallback ইন্টারফেস প্রয়োগ করুন এবং UPDATE_PAYMENT_DETAILS অভিপ্রায় ফিল্টার সহ আপনার AndroidManifest.xml এ ঘোষণা করুন৷

PAY অভিপ্রায় আহ্বান করার পরপরই, ক্রোম PAY অভিপ্রায়ের মতো একই প্যাকেজে UPDATE_PAYMENT_DETAILS পরিষেবার সাথে (যদি এটি বিদ্যমান থাকে) সংযোগ করবে এবং setPaymentDetailsUpdateService(service) কল করবে, IPaymentDetailsUpdateService এর বিকল্প সম্পর্কে ব্যবহারকারীর অর্থপ্রদানের পদ্ধতিতে পরিবর্তন করা হবে না। ঠিকানা

আন্তঃপ্রক্রিয়া কমিউনিকেশন (IPC) পাওয়ার সময় packageManager.getPackagesForUid(Binder.getCallingUid()) ব্যবহার করুন যে অ্যাপটি যেটি PAY ইন্টেন্টটি চালু করেছে সেটির প্যাকেজের নাম একই অ্যাপের মতো রয়েছে যেটি IPaymentDetailsUpdateServiceCallback পদ্ধতিগুলিকে আমন্ত্রণ জানিয়েছে৷

এআইডিএল

নিম্নলিখিত বিষয়বস্তু সহ দুটি AIDL ফাইল তৈরি করুন:

org/chromium/components/payments/IPaymentDetailsUpdateServiceCallback.aidl

package org.chromium.components.payments;

import android.os.Bundle;
import org.chromium.components.payments.IPaymentDetailsUpdateService;

interface IPaymentDetailsUpdateServiceCallback {
    oneway void updateWith(in Bundle updatedPaymentDetails);

    oneway void paymentDetailsNotUpdated();

    oneway void setPaymentDetailsUpdateService(IPaymentDetailsUpdateService service);
}

org/chromium/components/payments/IPaymentDetailsUpdateService.aidl

package org.chromium.components.payments;

import android.os.Bundle;
import org.chromium.components.payments.IPaymentDetailsUpdateServiceCallback;

interface IPaymentDetailsUpdateService {
    oneway void changePaymentMethod(in Bundle paymentHandlerMethodData,
            IPaymentDetailsUpdateServiceCallback callback);

    oneway void changeShippingOption(in String shippingOptionId,
            IPaymentDetailsUpdateServiceCallback callback);

    oneway void changeShippingAddress(in Bundle shippingAddress,
            IPaymentDetailsUpdateServiceCallback callback);
}

সেবা

IPaymentDetailsUpdateServiceCallback পরিষেবা বাস্তবায়ন করুন।

কোটলিন

class SampleUpdatePaymentDetailsCallbackService : Service() {
    private val binder = object : IPaymentDetailsUpdateServiceCallback.Stub() {
        override fun updateWith(updatedPaymentDetails: Bundle) {}

        override fun paymentDetailsNotUpdated() {}

        override fun setPaymentDetailsUpdateService(service: IPaymentDetailsUpdateService) {}
    }

    override fun onBind(intent: Intent?): IBinder? {
        return binder
    }
}

জাভা

import org.chromium.components.paymsnts.IPaymentDetailsUpdateServiceCallback;

public class SampleUpdatePaymentDetailsCallbackService extends Service {
    private final IPaymentDetailsUpdateServiceCallback.Stub mBinder =
        new IPaymentDetailsUpdateServiceCallback.Stub() {
            @Override
            public void updateWith(Bundle updatedPaymentDetails) {}

            @Override
            public void paymentDetailsNotUpdated() {}

            @Override
            public void setPaymentDetailsUpdateService(IPaymentDetailsUpdateService service) {}
        };

    @Override
    public IBinder onBind(Intent intent) {
        return mBinder;
    }
}

AndroidManifest.xml

আপনার AndroidManifest.xmlIPaymentDetailsUpdateServiceCallback এর পরিষেবাটি প্রকাশ করুন৷

<service
    android:name=".SampleUpdatePaymentDetailsCallbackService"
    android:exported="true">
    <intent-filter>
        <action android:name="org.chromium.intent.action.UPDATE_PAYMENT_DETAILS" />
    </intent-filter>
</service>

ব্যবহারকারীর নির্বাচিত অর্থপ্রদানের পদ্ধতি, শিপিং ঠিকানা, বা শিপিং বিকল্পের পরিবর্তন সম্পর্কে বণিককে অবহিত করুন

কোটলিন

try {
    if (isOptionChange) {
        service?.changeShippingOption(selectedOptionId, callback)
    } else (isAddressChange) {
        service?.changeShippingAddress(selectedAddress, callback)
    } else {
        service?.changePaymentMethod(methodData, callback)
    }
} catch (e: RemoteException) {
    // Handle the remote exception
}

জাভা

if (service == null) {
  return;
}

try {
    if (isOptionChange) {
        service.changeShippingOption(selectedOptionId, callback);
    } else (isAddressChange) {
        service.changeShippingAddress(selectedAddress, callback);
    } else {
        service.changePaymentMethod(methodData, callback);
    }
} catch (RemoteException e) {
    // Handle the remote exception
}

changePaymentMethod

ব্যবহারকারী-নির্বাচিত অর্থপ্রদানের পদ্ধতিতে পরিবর্তন সম্পর্কে বণিককে অবহিত করে। paymentHandlerMethodData বান্ডেলে methodName এবং স্ট্রিং মান সহ ঐচ্ছিক details কী রয়েছে। Chrome একটি অ-খালি methodName সহ একটি অ-খালি বান্ডিল পরীক্ষা করবে এবং বৈধতা ব্যর্থ হলে callback.updateWith এর মাধ্যমে নিম্নলিখিত ত্রুটি বার্তাগুলির মধ্যে একটি সহ একটি updatePaymentDetails পাঠাবে৷

'Method data required.'
'Method name required.'

changeShippingOption

ব্যবহারকারী-নির্বাচিত শিপিং বিকল্পের পরিবর্তন সম্পর্কে বণিককে অবহিত করে। shippingOptionId বণিক-নির্দিষ্ট শিপিং বিকল্পগুলির একটির শনাক্তকারী হওয়া উচিত। ক্রোম একটি অ-খালি shippingOptionId পরীক্ষা করবে এবং বৈধতা ব্যর্থ হলে callback.updateWith এর মাধ্যমে নিম্নলিখিত ত্রুটি বার্তা সহ একটি updatePaymentDetails পাঠাবে৷

'Shipping option identifier required.'

changeShippingAddress

ব্যবহারকারী-প্রদত্ত শিপিং ঠিকানায় পরিবর্তন সম্পর্কে বণিককে অবহিত করে। Chrome একটি বৈধ countryCode সহ একটি খালি shippingAddress বান্ডেল পরীক্ষা করবে এবং বৈধতা ব্যর্থ হলে callback.updateWith এর মাধ্যমে নিম্নলিখিত ত্রুটি বার্তা সহ একটি updatePaymentDetails পাঠাবে৷

'Payment app returned invalid shipping address in response.'

অবৈধ রাষ্ট্র ত্রুটি বার্তা

কোনো পরিবর্তনের অনুরোধ পাওয়ার পর Chrome যদি একটি অবৈধ অবস্থার সম্মুখীন হয় তবে এটি একটি সংশোধন করা updatePaymentDetails বান্ডেল সহ callback.updateWith কল করবে। বান্ডেলটিতে শুধুমাত্র "Invalid state" সহ error কী থাকবে। একটি অবৈধ অবস্থার উদাহরণ হল:

  • যখন Chrome এখনও পূর্ববর্তী পরিবর্তনের জন্য বণিকের প্রতিক্রিয়ার জন্য অপেক্ষা করছে (যেমন একটি চলমান পরিবর্তন ইভেন্ট)।
  • অর্থপ্রদান-অ্যাপ-প্রদত্ত শিপিং বিকল্প শনাক্তকারী কোনো বণিক-নির্দিষ্ট শিপিং বিকল্পের অন্তর্গত নয়।

বণিকের কাছ থেকে আপডেট করা পেমেন্টের বিবরণ পান

কোটলিন

override fun updateWith(updatedPaymentDetails: Bundle) {}

override fun paymentDetailsNotUpdated() {}

জাভা

@Override
public void updateWith(Bundle updatedPaymentDetails) {}

@Override
public void paymentDetailsNotUpdated() {}

updatedPaymentDetails হল PaymentRequestDetailsUpdate WebIDL অভিধানের সমতুল্য এবং এতে নিম্নলিখিত ঐচ্ছিক কীগুলি রয়েছে:

  • total - currency এবং value কী সমন্বিত একটি বান্ডিল, উভয় কীরই স্ট্রিং মান রয়েছে
  • shippingOptions - শিপিং অপশনের পার্সেলযোগ্য অ্যারে
  • error - একটি সাধারণ ত্রুটি বার্তা ধারণকারী একটি স্ট্রিং (যেমন যখন changeShippingOption একটি বৈধ শিপিং বিকল্প শনাক্তকারী প্রদান করে না)
  • stringifiedPaymentMethodErrors - একটি JSON স্ট্রিং যা অর্থপ্রদানের পদ্ধতির জন্য বৈধতা ত্রুটির প্রতিনিধিত্ব করে
  • addressErrors - শিপিং ঠিকানা এবং স্ট্রিং মানগুলির সাথে অভিন্ন ঐচ্ছিক কী সহ একটি বান্ডিল৷ প্রতিটি কী শিপিং ঠিকানার সংশ্লিষ্ট অংশের সাথে সম্পর্কিত একটি বৈধতা ত্রুটি উপস্থাপন করে।
  • modifiers - বান্ডেলগুলির একটি পার্সেলযোগ্য অ্যারে, প্রতিটিতে total এবং একটি methodData ক্ষেত্র রয়েছে, যেগুলি বান্ডেলও।

একটি অনুপস্থিত কী মানে এর মান পরিবর্তন হয়নি।