ওয়েব পেমেন্ট API-এর সাথে শিপিং ঠিকানা এবং প্রদানকারীর যোগাযোগের তথ্য প্রদান করতে আপনার Android পেমেন্ট অ্যাপ কীভাবে আপডেট করবেন।
প্রকাশিত: 17 জুলাই, 2020, শেষ আপডেট: মে 27, 2025
একটি ওয়েব ফর্মের মাধ্যমে শিপিং ঠিকানা এবং যোগাযোগের তথ্য প্রবেশ করা গ্রাহকদের জন্য একটি কষ্টকর অভিজ্ঞতা হতে পারে। এটি ত্রুটি এবং কম রূপান্তর হার হতে পারে.
এই কারণেই অর্থপ্রদানের অনুরোধ API শিপিং ঠিকানা এবং যোগাযোগের তথ্যের অনুরোধ করার জন্য একটি বৈশিষ্ট্য সমর্থন করে। এটি একাধিক সুবিধা প্রদান করে:
- ব্যবহারকারীরা মাত্র কয়েকটি ট্যাপ দিয়ে সঠিক ঠিকানা বেছে নিতে পারেন।
- ঠিকানাটি সর্বদা প্রমিত বিন্যাসে ফেরত দেওয়া হয়।
- একটি ভুল ঠিকানা জমা দেওয়ার সম্ভাবনা কম।
ব্রাউজারগুলি একটি একীভূত অর্থপ্রদানের অভিজ্ঞতা প্রদান করতে একটি অর্থপ্রদান অ্যাপে শিপিং ঠিকানা এবং যোগাযোগের তথ্য সংগ্রহকে পিছিয়ে দিতে পারে। এই কার্যকারিতাকে ডেলিগেশন বলা হয়।
যখনই সম্ভব, Chrome একজন গ্রাহকের শিপিং ঠিকানা এবং যোগাযোগের তথ্য সংগ্রহ করা Android পেমেন্ট অ্যাপে অর্পণ করে। প্রতিনিধি দল চেকআউটের সময় ঘর্ষণ হ্রাস করে।
বণিক ওয়েবসাইট গতিশীলভাবে শিপিং বিকল্প এবং মোট মূল্য আপডেট করতে পারে গ্রাহকের শিপিং ঠিকানা এবং শিপিং বিকল্পের পছন্দের উপর নির্ভর করে।
ইতিমধ্যে বিদ্যমান Android পেমেন্ট অ্যাপে প্রতিনিধি সমর্থন যোগ করতে, নিম্নলিখিত পদক্ষেপগুলি বাস্তবায়ন করুন:
- সমর্থিত প্রতিনিধি দল ঘোষণা করুন ।
- প্রয়োজনীয় অর্থপ্রদানের বিকল্পগুলির জন্য
PAY
অভিপ্রায় অতিরিক্ত বিশ্লেষণ করুন । - পেমেন্ট প্রতিক্রিয়ায় প্রয়োজনীয় তথ্য প্রদান করুন ।
- [ঐচ্ছিক] গতিশীল প্রবাহ সমর্থন :
সমর্থিত প্রতিনিধি দল ঘোষণা করুন
ব্রাউজারকে অতিরিক্ত তথ্যের তালিকা জানতে হবে যা আপনার অর্থপ্রদান অ্যাপ প্রদান করতে পারে যাতে এটি সেই তথ্যের সংগ্রহ আপনার অ্যাপে অর্পণ করতে পারে। আপনার অ্যাপের 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.xml
এ IPaymentDetailsUpdateServiceCallback
এর পরিষেবাটি প্রকাশ করুন৷
<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
ক্ষেত্র রয়েছে, যেগুলি বান্ডেলও।
একটি অনুপস্থিত কী মানে এর মান পরিবর্তন হয়নি।