# Kumpulkan nomor telepon dan alamat fisik Pelajari cara mengumpulkan alamat pelanggan dan nomor telepon di aplikasi seluler Anda dengan Elemen Alamat. # iOS (UIKit) > This is a iOS (UIKit) for when payment-ui is mobile and platform is ios. View the full page at https://docs.stripe.com/payments/mobile/collect-addresses?payment-ui=mobile&platform=ios. Untuk mengumpulkan alamat lengkap untuk penagihan atau pengiriman, gunakan [Address Element](https://docs.stripe.com/payments/mobile/address-element.md). Anda juga dapat menggunakan Address Element untuk: - Kumpulkan [nomor telepon](https://stripe.dev/stripe-ios/stripepaymentsheet/documentation/stripepaymentsheet/addressviewcontroller/addressdetails/phone) pelanggan - Manfaatkan pengisian otomatis (diaktifkan secara default di iOS) - Isikan otomatis informasi tagihan di Payment Element dengan meneruskan alamat pengiriman Stripe mengombinasikan informasi alamat yang dikumpulkan dan metode pembayaran untuk membuat *PaymentIntent* (API object that represents your intent to collect payment from a customer, tracking charge attempts and payment state changes throughout the process). ![Contoh proses checkout di mana pengguna memilih opsi Tambahkan Alamat Pengiriman. Kemudian mereka dibawa ke layar baru untuk menambahkan alamat pengirimannya ke formulir. Saat mereka mengetikkan alamatnya, saran pengisian otomatis disajikan untuk dipilih pengguna Anda.](https://b.stripecdn.com/docs-statics-srv/assets/ios-overview.4e83bb4e46fd7d131b5c4ff8abee27ea.png) ## Siapkan Stripe [Sisi server] [Sisi klien] Pertama, Anda membutuhkan akun Stripe. [Daftar sekarang](https://dashboard.stripe.com/register). [Stripe iOS SDK](https://github.com/stripe/stripe-ios) adalah sumber terbuka, yang [didokumentasikan lengkap](https://stripe.dev/stripe-ios/index.html), dan kompatibel dengan aplikasi yang mendukung iOS 13 ke atas. #### Swift Package Manager Untuk menginstal SDK, ikuti langkah-langkah ini: 1. Di Xcode, pilih **File** > **Tambahkan Dependensi Paket…** dan masukkan `https://github.com/stripe/stripe-ios-spm` sebagai URL repositori. 1. Pilih nomor versi terbaru dari [halaman rilis](https://github.com/stripe/stripe-ios/releases) kami. 1. Tambahkan produk **StripePaymentSheet** ke [target aplikasi Anda](https://developer.apple.com/documentation/swift_packages/adding_package_dependencies_to_your_app). #### CocoaPods 1. Jika Anda belum melakukannya, instal versi terbaru [CocoaPods](https://guides.cocoapods.org/using/getting-started.html). 1. Jika Anda tidak memiliki [Podfile](https://guides.cocoapods.org/syntax/podfile.html), jalankan perintah berikut untuk membuatnya: ```bash pod init ``` 1. Tambahkan baris ini ke `Podfile` Anda: ```podfile pod 'StripePaymentSheet' ``` 1. Jalankan perintah berikut: ```bash pod install ``` 1. Jangan lupa menggunakan file `.xcworkspace` untuk membuka proyek Anda di Xcode, sebagai ganti file `.xcodeproj`, mulai sekarang. 1. Di masa mendatang, untuk memperbarui ke versi terbaru SDK, jalankan: ```bash pod update StripePaymentSheet ``` #### Carthage 1. Jika Anda belum melakukannya, instal versi terbaru [Carthage](https://github.com/Carthage/Carthage#installing-carthage). 1. Tambahkan baris ini ke `Cartfile` Anda: ```cartfile github "stripe/stripe-ios" ``` 1. Ikuti [instruksi instalasi Carthage](https://github.com/Carthage/Carthage#if-youre-building-for-ios-tvos-or-watchos). Pastikan untuk menyematkan semua framework yang diwajibkan yang tercantum [di sini](https://github.com/stripe/stripe-ios/tree/master/StripePaymentSheet/README.md#manual-linking). 1. Di masa mendatang, untuk memperbarui ke versi terbaru SDK, jalankan perintah berikut: ```bash carthage update stripe-ios --platform ios ``` #### Kerangka Kerja Manual 1. Masuklah ke [halaman rilis GitHub](https://github.com/stripe/stripe-ios/releases/latest) kami lalu unduh dan unzip **Stripe.xcframework.zip**. 1. Seret **StripePaymentSheet.xcframework** ke bagian **Embedded Binaries** pengaturan **General** di proyek Xcode Anda. Pastikan memilih **Copy items if needed**. 1. Ulangi langkah 2 untuk semua framework yang diwajibkan yang tercantum [di sini](https://github.com/stripe/stripe-ios/tree/master/StripePaymentSheet/README.md#manual-linking). 1. Di masa mendatang, untuk memperbarui ke versi terbaru SDK kami, ulangi langkah 1–3. > Untuk detail mengenai rilis SDK terbaru dan versi sebelumnya, lihat halaman [Rilis](https://github.com/stripe/stripe-ios/releases) di GitHub. Untuk menerima notifikasi bila rilis baru diterbitkan, [lihat rilis](https://help.github.com/en/articles/watching-and-unwatching-releases-for-a-repository#watching-releases-for-a-repository) untuk repositori. Konfigurasikan SDK dengan [kunci yang dapat dipublikasikan](https://dashboard.stripe.com/test/apikeys) saat aplikasi dimulai. Hal ini memungkinkan aplikasi Anda membuat permintaan ke Stripe API. #### Swift ```swift import UIKitimportStripePaymentSheet @main class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {StripeAPI.defaultPublishableKey = "<>" // do any other necessary launch configuration return true } } ``` > Gunakan [kunci percobaan](https://docs.stripe.com/keys.md#obtain-api-keys) Anda saat mencoba serta mengembangkan, dan kunci [mode live](https://docs.stripe.com/keys.md#test-live-modes) bila Anda memublikasikan aplikasi. ## Siapkan saran pengisian alamat otomatis Pengisian otomatis diaktifkan secara default di iOS. ## Konfigurasikan Address Element Anda dapat mengonfigurasi Address Element dengan detail, seperti menampilkan nilai default, mengatur negara yang diizinkan, menyesuaikan tampilan, dan sebagainya. Lihat [AddressViewController.Configuration](https://github.com/stripe/stripe-ios/blob/address-element-private-beta-2/Stripe/AddressViewController%2BConfiguration.swift#L72-L162) untuk daftar lengkap opsi konfigurasi. ```swift let addressConfiguration = AddressViewController.Configuration( additionalFields: .init(phone: .required), allowedCountries: ["US", "CA", "GB"], title: "Shipping Address" ) ``` ## Ambil detail alamat Ambil detail alamat dengan menyesuaikan dengan `AddressViewControllerDelegate`, kemudian menggunakan [addressViewControllerDidFinish](https://github.com/stripe/stripe-ios/blob/address-element-private-beta-2/Stripe/AddressViewController.swift#L19) untuk menutup pengontrol tampilan. Nilai alamat adalah [alamat](https://github.com/stripe/stripe-ios/blob/8399ea6cfe4e32190238375882e0a793b483d426/Stripe/AddressViewController%2BConfiguration.swift#L16-L36) atau nil yang valid. ```swift extension MyViewController: AddressViewControllerDelegate { func addressViewControllerDidFinish(_ addressViewController: AddressViewController, with address: AddressViewController.AddressDetails?) { addressViewController.dismiss(animated: true) self.addressDetails = address } } ``` ## Sajikan Address Element Buat [AddressViewController](https://github.com/stripe/stripe-ios/blob/address-element-private-beta-2/Stripe/AddressViewController.swift#L26) menggunakan konfigurasi alamat dan delegasi dari langkah sebelumnya. Anda dapat menyajikannya di pengontrol navigasi atau mendorongnya ke pengontrol navigasi. ```swift self.addressViewController = AddressViewController(configuration: addressConfiguration, delegate: self) let navigationController = UINavigationController(rootViewController: addressViewController) present(navigationController, animated: true) ``` ## Optional: Isikan otomatis alamat pengiriman di Payment Element Jika Anda menggunakan Element Pembayaran seluler, atur [PaymentSheet.Configuration.shippingDetails](https://stripe.dev/stripe-ios/stripepaymentsheet/documentation/stripepaymentsheet/paymentsheet/configuration-swift.struct/shippingdetails/) toke alamat yang dikumpulkan oleh elemen alamat. Ketika `shippingDetails` diisi, pengguna akan memiliki alamat penagihan mereka yang terisi sebelumnya dan mereka akan melihat kotak centang **Alamat penagihan sama dengan alamat pengiriman**. PaymentIntents yang dikonfirmasi dengan `shippingDetails` terisi juga memiliki properti intent [shipping](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-shipping) terisi ketika PaymentIntent dikonfirmasi. ```swift var configuration = PaymentSheet.Configuration() // ... configuration.shippingDetails = { [weak self] in return self?.addressDetails } ``` ## Optional: Menyesuaikan penampilan Sekarang setelah menambahkan Elemen Alamat ke aplikasi, Anda dapat menyesuaikan tampilan agar sesuai dengan desain aplikasi lainnya. Anda dapat mengonfigurasi tampilan dengan [Appearance API](https://docs.stripe.com/elements/appearance-api/mobile.md?platform=ios) menggunakan [AlamatViewController.Configuration.appearance](https://github.com/stripe/stripe-ios/blob/address-element-private-beta-2/Stripe/AddressViewController%2BConfiguration.swift#L149). ## Optional: Atur detail tagihan default Untuk mengatur nilai default bagi detail tagihan yang dikumpulkan di lembar pembayaran, konfigurasikan properti `defaultBillingDetails`. `PaymentSheet` akan melengkapi bidang-bidangnya dengan nilai yang Anda berikan. ```swift var configuration = PaymentSheet.Configuration() configuration.defaultBillingDetails.address.country = "US" configuration.defaultBillingDetails.email = "foo@bar.com" ``` ## Optional: Sesuaikan pengumpulan detail tagihan Gunakan `billingDetailsCollectionConfiguration` untuk menentukan cara Anda ingin mengumpulkan detail tagihan di lembar pembayaran. Anda dapat mengumpulkan nama, email, nomor telepon, dan alamat pelanggan. Jika Anda hanya ingin detail tagihan yang diperlukan oleh metode pembayaran, atur `billingDetailsCollectionConfiguration.attachDefaultsToPaymentMethod` ke true. Dalam hal ini, `PaymentSheet.Configuration.defaultBillingDetails` diatur sebagai [detail tagihan](https://docs.stripe.com/api/payment_methods/object.md?lang=node#payment_method_object-billing_details) metode pembayaran. Jika Anda ingin mengumpulkan detail tagihan tambahan yang tidak diperlukan oleh metode pembayaran, atur `billingDetailsCollectionConfiguration.attachDefaultsToPaymentMethod` ke false. Dalam hal ini, detail tagihan yang dikumpulkan melalui `PaymentSheet` ditetapkan sebagai detail tagihan metode pembayaran. ```swift var configuration = PaymentSheet.Configuration() configuration.defaultBillingDetails.email = "foo@bar.com" configuration.billingDetailsCollectionConfiguration.name = .always configuration.billingDetailsCollectionConfiguration.email = .never configuration.billingDetailsCollectionConfiguration.address = .full configuration.billingDetailsCollectionConfiguration.attachDefaultsToPaymentMethod = true ``` > Konsultasikan dengan penasihat hukum mengenai undang-undang yang berlaku untuk mengumpulkan informasi. Hanya kumpulkan nomor telepon jika Anda memerlukannya untuk transaksi. # iOS (SwiftUI) > This is a iOS (SwiftUI) for when payment-ui is mobile and platform is plugins. View the full page at https://docs.stripe.com/payments/mobile/collect-addresses?payment-ui=mobile&platform=plugins. Untuk mengumpulkan alamat lengkap untuk penagihan atau pengiriman, gunakan [Address Element](https://docs.stripe.com/payments/mobile/address-element.md) di SwiftUI. Anda juga dapat menggunakan Address Element untuk: - Kumpulkan [nomor telepon pelanggan](https://stripe.dev/stripe-ios/stripepaymentsheet/documentation/stripepaymentsheet/addresselement/addressdetails/phone) - Gunakan fitur otomatis (diaktifkan secara default di iOS) - Isikan otomatis informasi tagihan di Payment Element dengan meneruskan alamat pengiriman Stripe mengombinasikan informasi alamat yang dikumpulkan dan metode pembayaran untuk membuat *PaymentIntent* (API object that represents your intent to collect payment from a customer, tracking charge attempts and payment state changes throughout the process). ![Contoh proses checkout di mana pengguna memilih opsi Tambah Alamat Pengiriman. Pengguna diarahkan ke layar baru untuk menambahkan alamat pengiriman mereka ke dalam formulir. Fitur isi otomatis menyarankan opsi yang akan dipilih oleh pengguna Anda.](https://b.stripecdn.com/docs-statics-srv/assets/ios-overview.4e83bb4e46fd7d131b5c4ff8abee27ea.png) ## Siapkan Stripe [Sisi server] [Sisi klien] Pertama, Anda membutuhkan akun Stripe. [Daftar sekarang](https://dashboard.stripe.com/register). [Stripe iOS SDK](https://github.com/stripe/stripe-ios) adalah sumber terbuka, yang [didokumentasikan lengkap](https://stripe.dev/stripe-ios/index.html), dan kompatibel dengan aplikasi yang mendukung iOS 13 ke atas. #### Swift Package Manager Untuk menginstal SDK, ikuti langkah-langkah ini: 1. Di Xcode, pilih **File** > **Tambahkan Dependensi Paket…** dan masukkan `https://github.com/stripe/stripe-ios-spm` sebagai URL repositori. 1. Pilih nomor versi terbaru dari [halaman rilis](https://github.com/stripe/stripe-ios/releases) kami. 1. Tambahkan produk **StripePaymentSheet** ke [target aplikasi Anda](https://developer.apple.com/documentation/swift_packages/adding_package_dependencies_to_your_app). #### CocoaPods 1. Jika Anda belum melakukannya, instal versi terbaru [CocoaPods](https://guides.cocoapods.org/using/getting-started.html). 1. Jika Anda tidak memiliki [Podfile](https://guides.cocoapods.org/syntax/podfile.html), jalankan perintah berikut untuk membuatnya: ```bash pod init ``` 1. Tambahkan baris ini ke `Podfile` Anda: ```podfile pod 'StripePaymentSheet' ``` 1. Jalankan perintah berikut: ```bash pod install ``` 1. Jangan lupa menggunakan file `.xcworkspace` untuk membuka proyek Anda di Xcode, sebagai ganti file `.xcodeproj`, mulai sekarang. 1. Di masa mendatang, untuk memperbarui ke versi terbaru SDK, jalankan: ```bash pod update StripePaymentSheet ``` #### Carthage 1. Jika Anda belum melakukannya, instal versi terbaru [Carthage](https://github.com/Carthage/Carthage#installing-carthage). 1. Tambahkan baris ini ke `Cartfile` Anda: ```cartfile github "stripe/stripe-ios" ``` 1. Ikuti [instruksi instalasi Carthage](https://github.com/Carthage/Carthage#if-youre-building-for-ios-tvos-or-watchos). Pastikan untuk menyematkan semua framework yang diwajibkan yang tercantum [di sini](https://github.com/stripe/stripe-ios/tree/master/StripePaymentSheet/README.md#manual-linking). 1. Di masa mendatang, untuk memperbarui ke versi terbaru SDK, jalankan perintah berikut: ```bash carthage update stripe-ios --platform ios ``` #### Kerangka Kerja Manual 1. Masuklah ke [halaman rilis GitHub](https://github.com/stripe/stripe-ios/releases/latest) kami lalu unduh dan unzip **Stripe.xcframework.zip**. 1. Seret **StripePaymentSheet.xcframework** ke bagian **Embedded Binaries** pengaturan **General** di proyek Xcode Anda. Pastikan memilih **Copy items if needed**. 1. Ulangi langkah 2 untuk semua framework yang diwajibkan yang tercantum [di sini](https://github.com/stripe/stripe-ios/tree/master/StripePaymentSheet/README.md#manual-linking). 1. Di masa mendatang, untuk memperbarui ke versi terbaru SDK kami, ulangi langkah 1–3. > Untuk detail mengenai rilis SDK terbaru dan versi sebelumnya, lihat halaman [Rilis](https://github.com/stripe/stripe-ios/releases) di GitHub. Untuk menerima notifikasi bila rilis baru diterbitkan, [lihat rilis](https://help.github.com/en/articles/watching-and-unwatching-releases-for-a-repository#watching-releases-for-a-repository) untuk repositori. Konfigurasikan SDK dengan [kunci yang dapat dipublikasikan](https://dashboard.stripe.com/test/apikeys) saat aplikasi dimulai. Hal ini memungkinkan aplikasi Anda membuat permintaan ke Stripe API. #### Swift ```swift import UIKitimportStripePaymentSheet @main class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {StripeAPI.defaultPublishableKey = "<>" // do any other necessary launch configuration return true } } ``` > Gunakan [kunci percobaan](https://docs.stripe.com/keys.md#obtain-api-keys) Anda saat mencoba serta mengembangkan, dan kunci [mode live](https://docs.stripe.com/keys.md#test-live-modes) bila Anda memublikasikan aplikasi. ## Siapkan saran pengisian alamat otomatis Pengisian otomatis diaktifkan secara default di iOS. ## Konfigurasikan Address Element Anda dapat mengonfigurasi Elemen Alamat dengan detail seperti menampilkan nilai bawaan, menetapkan negara yang diizinkan, menyesuaikan tampilan, dan sebagainya. Lihat `AddressElement.Configuration` untuk daftar lengkap opsi konfigurasi. ```swift var configuration = AddressElement.Configuration() configuration.allowedCountries = ["US", "CA", "GB", "AU"] configuration.buttonTitle = "Save Address" ``` ## Sajikan Address Element ```swift import SwiftUI import StripePaymentSheet struct MyView: View { @State private var showingAddressElement = false @State private var collectedAddress: AddressElement.AddressDetails? var body: some View { VStack { Button("Collect Address") { showingAddressElement = true } .sheet(isPresented: $showingAddressElement) { AddressElement( address: $collectedAddress, configuration: configuration ) } // Display collected address if let address = collectedAddress { AddressView(address: address) } } } } ``` ## Ambil detail alamat Elemen Alamat secara otomatis memperbarui variabel `address` yang terikat ketika pelanggan menyelesaikan atau membatalkan pengumpulan alamat: ```swift struct AddressView: View { let address: AddressElement.AddressDetails var body: some View { VStack(alignment: .leading, spacing: 8) { Text("Collected Address:") .font(.headline) if let name = address.name { Text("Name: \(name)") } Text("Address: \(address.address.line1)") if let city = address.address.city { Text("City: \(city)") } Text("Country: \(address.address.country)") if let phone = address.phone { Text("Phone: \(phone)") } } .padding() } } ``` ## Optional: Menyesuaikan penampilan Kini, setelah Anda menambahkan Elemen Alamat ke aplikasi, Anda dapat menyesuaikan tampilan agar sesuai dengan desain aplikasi Anda yang lain. Anda dapat mengonfigurasi tampilan dengan Appearance API menggunakan `AddressElement.Configuration.appearance`. ## Optional: Atur detail tagihan default Untuk mengatur nilai default bagi detail tagihan yang dikumpulkan di lembar pembayaran, konfigurasikan properti `defaultBillingDetails`. `PaymentSheet` akan melengkapi bidang-bidangnya dengan nilai yang Anda berikan. ```swift var configuration = PaymentSheet.Configuration() configuration.defaultBillingDetails.address.country = "US" configuration.defaultBillingDetails.email = "foo@bar.com" ``` ## Optional: Sesuaikan pengumpulan detail tagihan Gunakan `billingDetailsCollectionConfiguration` untuk menentukan cara Anda ingin mengumpulkan detail tagihan di lembar pembayaran. Anda dapat mengumpulkan nama, email, nomor telepon, dan alamat pelanggan. Jika Anda hanya ingin detail tagihan yang diperlukan oleh metode pembayaran, atur `billingDetailsCollectionConfiguration.attachDefaultsToPaymentMethod` ke true. Dalam hal ini, `PaymentSheet.Configuration.defaultBillingDetails` diatur sebagai [detail tagihan](https://docs.stripe.com/api/payment_methods/object.md?lang=node#payment_method_object-billing_details) metode pembayaran. Jika Anda ingin mengumpulkan detail tagihan tambahan yang tidak diperlukan oleh metode pembayaran, atur `billingDetailsCollectionConfiguration.attachDefaultsToPaymentMethod` ke false. Dalam hal ini, detail tagihan yang dikumpulkan melalui `PaymentSheet` ditetapkan sebagai detail tagihan metode pembayaran. ```swift var configuration = PaymentSheet.Configuration() configuration.defaultBillingDetails.email = "foo@bar.com" configuration.billingDetailsCollectionConfiguration.name = .always configuration.billingDetailsCollectionConfiguration.email = .never configuration.billingDetailsCollectionConfiguration.address = .full configuration.billingDetailsCollectionConfiguration.attachDefaultsToPaymentMethod = true ``` > Konsultasikan dengan penasihat hukum mengenai undang-undang yang berlaku untuk mengumpulkan informasi. Hanya kumpulkan nomor telepon jika Anda memerlukannya untuk transaksi. # Android > This is a Android for when payment-ui is mobile and platform is android. View the full page at https://docs.stripe.com/payments/mobile/collect-addresses?payment-ui=mobile&platform=android. Untuk mengumpulkan alamat lengkap untuk penagihan atau pengiriman, gunakan [Address Element](https://docs.stripe.com/payments/mobile/address-element.md). Anda juga dapat menggunakan Address Element untuk: - Kumpulkan [nomor telepon](https://stripe.dev/stripe-android/paymentsheet/com.stripe.android.paymentsheet.addresselement/-address-launcher/-additional-fields-configuration/index.html) pelanggan - Aktifkan [pengisian otomatis](https://stripe.dev/stripe-android/paymentsheet/com.stripe.android.paymentsheet.addresselement/-address-launcher/-configuration/index.html) - Isikan otomatis informasi tagihan di Payment Element dengan meneruskan alamat pengiriman Stripe mengombinasikan informasi alamat yang dikumpulkan dan metode pembayaran untuk membuat *PaymentIntent* (API object that represents your intent to collect payment from a customer, tracking charge attempts and payment state changes throughout the process). ![Contoh proses checkout di mana pengguna memilih opsi Tambahkan Alamat Pengiriman. Mereka kemudian dibawa ke layar baru untuk menambahkan alamat pengirimannya ke formulir (mereka melihat saran pengisian otomatis saat mengetikkan alamatnya).](https://b.stripecdn.com/docs-statics-srv/assets/android-overview.6061212dc737aa700b79242cb5f77782.png) ## Siapkan Stripe [Sisi server] [Sisi klien] Pertama, Anda membutuhkan akun Stripe. [Daftar sekarang](https://dashboard.stripe.com/register). [Stripe Android SDK](https://github.com/stripe/stripe-android) adalah sumber terbuka dan [didokumentasikan lengkap](https://stripe.dev/stripe-android/). Untuk menginstal SDK, tambahkan `stripe-android``ke blok`dependencies` file [app/build.gradle](https://developer.android.com/studio/build/dependencies) Anda: #### Kotlin ```kotlin plugins { id("com.android.application") } android { ... } dependencies { // ... // Stripe Android SDK implementation("com.stripe:stripe-android:23.2.0") // Include the financial connections SDK to support US bank account as a payment method implementation("com.stripe:financial-connections:23.2.0") } ``` > Untuk detail mengenai rilis SDK terbaru dan versi sebelumnya, lihat halaman [Rilis](https://github.com/stripe/stripe-android/releases) di GitHub. Untuk menerima notifikasi bila rilis baru diterbitkan, [lihat rilis untuk repositori](https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#configuring-your-watch-settings-for-an-individual-repository). Konfigurasikan SDK dengan [kunci yang dapat dipublikasikan](https://dashboard.stripe.com/apikeys) Stripe agar dapat membuat permintaan ke API Stripe, seperti di subkelas `Application` Anda: #### Kotlin ```kotlin import com.stripe.android.PaymentConfiguration class MyApp : Application() { override fun onCreate() { super.onCreate() PaymentConfiguration.init( applicationContext, "<>" ) } } ``` > Gunakan [kunci percobaan](https://docs.stripe.com/keys.md#obtain-api-keys) Anda saat mencoba serta mengembangkan, dan kunci [mode live](https://docs.stripe.com/keys.md#test-live-modes) bila Anda memublikasikan aplikasi. ## Siapkan saran pengisian alamat otomatis Elemen alamat menggunakan [Google Places SDK](https://developers.google.com/maps/documentation/places/android-sdk/overview) untuk mengambil saran pengisian otomatis alamat. Untuk mengaktifkan saran pengisian otomatis, Anda perlu menyertakan dependensi SDK Google Places ke `build.gradle` aplikasi. #### Groovy ```groovy dependencies { implementation 'com.google.android.libraries.places:places:2.6.0' } ``` Saran pengisian alamat otomatis memerlukan kunci Google Places API. Ikuti [panduan penyiapan Google Places SDK](https://developers.google.com/maps/documentation/places/android-sdk/cloud-setup) untuk membuat kunci API Anda. ## Konfigurasikan Address Element Anda dapat mengonfigurasi Address Element dengan detail, seperti menampilkan nilai default, mengatur negara yang diizinkan, menyesuaikan tampilan, dan sebagainya. Lihat [AddressLauncher.Configuration](https://github.com/stripe/stripe-android/blob/master/paymentsheet/src/main/java/com/stripe/android/paymentsheet/addresselement/AddressLauncher.kt#L72) untuk daftar lengkap opsi konfigurasi. ```kotlin val addressConfiguration = AddressLauncher.Configuration( additionalFields: AddressLauncher.AdditionalFieldsConfiguration( phone: AdditionalFieldsConfiguration.FieldConfiguration.Required ), allowedCountries: setOf("US", "CA", "GB"), title: "Shipping Address", googlePlacesApiKey = "(optional) YOUR KEY HERE" ) ``` ## Ambil detail alamat Ambil detail alamat dengan membuat instance `AddressLauncher` di metode siklus hidup `onCreate` dari `Activity` atau `Fragment` Anda dan membuat metode callback yang mengimplementasikan antarmuka `AddressLauncherResultCallback`. ```kotlin private lateinit var addressLauncher: AddressLauncher private var shippingDetails: AddressDetails? = null override fun onCreate(savedInstanceState: Bundle?) { addressLauncher = AddressLauncher(this, ::onAddressLauncherResult) } private fun onAddressLauncherResult(result: AddressLauncherResult) { // TODO: Handle result and update your UI when (result) { is AddressLauncherResult.Succeeded -> { shippingDetails = result.address } is AddressLauncherResult.Canceled -> { // TODO: Handle cancel } } } ``` `AddressLauncherResult` dapat `Succeeded` atau `Canceled`. Lihat selengkapnya [detail implementasi](https://github.com/stripe/stripe-android/blob/master/paymentsheet/src/main/java/com/stripe/android/paymentsheet/addresselement/AddressLauncherResult.kt). > Stripe mengharuskan Anda membuat instance `AddressLauncher` selama kejadian siklus hidup `onCreate` dan bukan setelahnya. Jika tidak, callback tidak dapat didaftarkan dengan benar, dan aplikasi Anda akan mogok. ## Sajikan Address Element Sajikan elemen alamat menggunakan peluncur alamat dan konfigurasi dari langkah sebelumnya. ```kotlin addressLauncher.present( publishableKey = publishableKey, configuration = addressConfiguration ) ``` ## Optional: Isikan otomatis alamat pengiriman di Payment Element Jika Anda menggunakan Element Pembayaran seluler, atur[PaymentSheet.Configuration.shippingDetails](https://stripe.dev/stripe-android/paymentsheet/com.stripe.android.paymentsheet/-payment-sheet/-configuration/index.html) ke alamat yang dikumpulkan oleh elemen alamat. Ketika `shippingDetails` diisi, pengguna akan memiliki alamat penagihan mereka yang terisi sebelumnya dan mereka akan melihat kotak centang **Alamat penagihan sama dengan alamat pengiriman**. PaymentIntents yang Dikonfirmasi dengan`shippingDetails` terisi juga memiliki properti intent [shipping](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-shipping) terisi ketika PaymentIntent dikonfirmasi ```kotlin val configuration = PaymentSheet.Configuration.Builder("Example, Inc.") // ... .shippingDetails(shippingDetails) .build() ``` ## Optional: Menyesuaikan penampilan Sekarang setelah menambahkan Element Alamat ke aplikasi, Anda dapat menyesuaikan tampilan agar sesuai dengan desain aplikasi lainnya. Anda dapat mengonfigurasi tampilan dengan [API Penampilan](https://docs.stripe.com/elements/appearance-api/mobile.md?platform=android) menggunakan [AddressLauncher.Configuration.appearance](https://stripe.dev/stripe-android/paymentsheet/com.stripe.android.paymentsheet.addresselement/-address-launcher/-configuration/index.html). ## Optional: Atur detail tagihan default Untuk mengatur nilai default bagi detail tagihan yang dikumpulkan di lembar pembayaran, konfigurasikan properti `defaultBillingDetails`. `PaymentSheet` akan melengkapi bidang-bidangnya dengan nilai yang Anda berikan. #### Kotlin ```kotlin val address = PaymentSheet.Address(country = "US") val billingDetails = PaymentSheet.BillingDetails( address = address, email = "foo@bar.com" ) val configuration = PaymentSheet.Configuration.Builder(merchantDisplayName = "Merchant, Inc.") .defaultBillingDetails(billingDetails) .build() ``` ## Optional: Sesuaikan pengumpulan detail tagihan ### Konfigurasikan pengumpulan detail tagihan Menggunakan `BillingDetailsCollectionConfiguration` untuk menentukan cara Anda ingin mengumpulkan detail tagihan di PaymentSheet. Anda dapat mengumpulkan nama, email, nomor telepon, dan alamat pelanggan. Jika Anda ingin melampirkan detail tagihan default ke objek PaymentMethod sekalipun bidang tersebut tidak dikumpulkan di UI, atur `billingDetailsCollectionConfiguration.attachDefaultsToPaymentMethod` ke `true`. #### Kotlin ```kotlin val billingDetails = PaymentSheet.BillingDetails( email = "foo@bar.com" ) val billingDetailsCollectionConfiguration = BillingDetailsCollectionConfiguration( attachDefaultsToPaymentMethod = true, name = BillingDetailsCollectionConfiguration.CollectionMode.Always, email = BillingDetailsCollectionConfiguration.CollectionMode.Never, address = BillingDetailsCollectionConfiguration.AddressCollectionMode.Full, ) val configuration = PaymentSheet.Configuration.Builder(merchantDisplayName = "Merchant, Inc.") .defaultBillingDetails(billingDetails) .billingDetailsCollectionConfiguration(billingDetailsCollectionConfiguration) .build() ``` > Konsultasikan dengan penasihat hukum mengenai undang-undang yang berlaku untuk mengumpulkan informasi. Hanya kumpulkan nomor telepon jika Anda memerlukannya untuk transaksi. # React Native > This is a React Native for when payment-ui is mobile and platform is react-native. View the full page at https://docs.stripe.com/payments/mobile/collect-addresses?payment-ui=mobile&platform=react-native. Untuk mengumpulkan alamat lengkap untuk penagihan atau pengiriman, gunakan [Address Element](https://docs.stripe.com/payments/mobile/address-element.md). Anda juga dapat menggunakan Address Element untuk: - Kumpulkan [nomor telepon](https://stripe.dev/stripe-android/paymentsheet/com.stripe.android.paymentsheet.addresselement/-address-launcher/-additional-fields-configuration/index.html) pelanggan - Aktifkan [pengisian otomatis](https://stripe.dev/stripe-android/paymentsheet/com.stripe.android.paymentsheet.addresselement/-address-launcher/-configuration/index.html) - Isikan otomatis informasi tagihan di Payment Element dengan meneruskan alamat pengiriman Stripe mengombinasikan informasi alamat yang dikumpulkan dan metode pembayaran untuk membuat *PaymentIntent* (API object that represents your intent to collect payment from a customer, tracking charge attempts and payment state changes throughout the process). ![Contoh proses checkout di mana pengguna memilih opsi Tambahkan Alamat Pengiriman. Mereka kemudian dibawa ke layar baru untuk menambahkan alamat pengirimannya ke formulir (mereka melihat saran pengisian otomatis saat mengetikkan alamatnya).](https://b.stripecdn.com/docs-statics-srv/assets/android-overview.6061212dc737aa700b79242cb5f77782.png) ## Siapkan Stripe [Sisi server] [Sisi klien] Pertama, Anda membutuhkan akun Stripe. [Daftar sekarang](https://dashboard.stripe.com/register). [React Native SDK](https://github.com/stripe/stripe-react-native) adalah sumber terbuka dan didokumentasikan lengkap. Secara internal, ini menggunakan SDK [iOS](https://github.com/stripe/stripe-ios) dan [Android](https://github.com/stripe/stripe-android) asli. Untuk menginstal React Native SDK Stripe, jalankan salah satu perintah berikut di direktori proyek Anda (tergantung pada manajer paket yang Anda gunakan): #### yarn ```bash yarn add @stripe/stripe-react-native ``` #### npm ```bash npm install @stripe/stripe-react-native ``` Selanjutnya, instal beberapa dependensi lain yang diperlukan: - Untuk iOS, buka direktori **ios** dan jalankan `pod install` untuk memastikan bahwa Anda juga menginstal dependensi asli yang diperlukan. - Untuk Android, Anda tidak perlu menginstal dependensi lagi. ### Inisialisasi Stripe Untuk menginisialisasi Stripe di aplikasi React Native, bungkus layar pembayaran dengan komponen `StripeProvider`, atau gunakan metode inisialisasi `initStripe`. Hanya [kunci yang dapat dipublikasikan](https://docs.stripe.com/keys.md#obtain-api-keys) API di `publishableKey` yang diperlukan. Contoh berikut menunjukkan cara menginisialisasi Stripe menggunakan komponen `StripeProvider`. ```javascript import { StripeProvider } from '@stripe/stripe-react-native'; function App() { return ( // Your app code here ); } ``` > Gunakan [kunci percobaan](https://docs.stripe.com/keys.md#obtain-api-keys) API Anda saat mencoba serta mengembangkan, dan kunci [mode live](https://docs.stripe.com/keys.md#test-live-modes) bila Anda memublikasikan aplikasi. ## Siapkan saran pengisian alamat otomatis Pengisian otomatis diaktifkan secara default di iOS, tetapi untuk mengaktifkan saran pengisian otomatis di Android, Anda harus menyertakan dependensi [Google Places SDK](https://developers.google.com/maps/documentation/places/android-sdk/overview) di `build.gradle` aplikasi: #### Groovy ```groovy dependencies { implementation 'com.google.android.libraries.places:places:2.6.0' } ``` Saran pengisian alamat otomatis memerlukan kunci Google Places API. Ikuti [panduan penyiapan Google Places SDK](https://developers.google.com/maps/documentation/places/android-sdk/cloud-setup) untuk membuat kunci API Anda. ## Konfigurasikan Address Element Anda dapat mengonfigurasi Address Element dengan detail, seperti menampilkan nilai default, mengatur negara yang diizinkan, menyesuaikan tampilan, dan sebagainya. Lihat [daftar opsi yang tersedia](https://github.com/stripe/stripe-react-native/blob/master/src/components/AddressSheet.tsx#L19-L51) untuk informasi selengkapnya. ```jsx ``` ## Sajikan Address Element dan ambil detailnya Ambil detail alamat dengan mengatur properti `visible` ke `true`, serta menambahkan metode callback untuk properti `onSubmit` dan `onError`: ```jsx { // Make sure to set `visible` back to false to dismiss the address element. setAddressSheetVisible(false); // Handle result and update your UI }} onError={(error) => { if (error.code === AddressSheetError.Failed) { Alert.alert('There was an error.', 'Check the logs for details.'); console.log(err?.localizedMessage); } // Make sure to set `visible` back to false to dismiss the address element. setAddressSheetVisible(false); }} /> ``` ## Optional: Isikan otomatis alamat pengiriman di Payment Element Jika Anda menggunakan Element Pembayaran seluler, atur [defaultShippingDetails](https://github.com/stripe/stripe-react-native/blob/address-element-private-beta/src/types/PaymentSheet.ts#L17) ke alamat yang dikumpulkan oleh elemen alamat. Ketika `defaultShippingDetails` diisi, pengguna akan memiliki alamat penagihan mereka yang terisi sebelumnya dan mereka akan melihat kotak centang **Alamat penagihan sama dengan alamat pengiriman**. PaymentIntents yang dikonfirmasi dengan `defaultShippingDetails` terisi juga memiliki properti intent [shipping](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-shipping) terisi ketika PaymentIntent dikonfirmasi ```jsx const { error } = await initPaymentSheet({ ... defaultShippingDetails: addressDetails, }); ``` ## Optional: Menyesuaikan penampilan Sekarang setelah menambahkan Element Alamat ke aplikasi, Anda dapat menyesuaikan tampilan agar sesuai dengan desain aplikasi lainnya. Anda dapat mengonfigurasi tampilan dengan [API Penampilan](https://docs.stripe.com/elements/appearance-api/mobile.md?platform=react-native), menggunakan `Penampilan` properti di `` komponen. ## Optional: Atur detail tagihan default Untuk mengatur nilai default bagi detail tagihan yang dikumpulkan di PaymentSheet, konfigurasikan properti `defaultBillingDetails`. `PaymentSheet` akan melengkapi bidang-bidangnya dengan nilai yang Anda berikan. ```javascript await initPaymentSheet({ // ... defaultBillingDetails: { email: 'foo@bar.com', address: { country: 'US', }, }, }); ``` ## Optional: Sesuaikan pengumpulan detail tagihan Gunakan `billingDetailsCollectionConfiguration` untuk menentukan cara Anda ingin mengumpulkan detail tagihan di PaymentSheet. Anda dapat mengumpulkan nama, email, nomor telepon, dan alamat pelanggan. Jika tidak bermaksud untuk mengumpulkan nilai yang diperlukan oleh metode pembayaran, Anda harus melakukan hal berikut: 1. Lampirkan nilai yang tidak dikumpulkan oleh `PaymentSheet` ke properti `defaultBillingDetails`. 1. Atur `billingDetailsCollectionConfiguration.attachDefaultsToPaymentMethod` ke `true`. ```javascript await initPaymentSheet({ // ... defaultBillingDetails: { email: 'foo@bar.com', }, billingDetailsCollectionConfiguration: { name: PaymentSheet.CollectionMode.ALWAYS, email: PaymentSheet.CollectionMode.NEVER, address: PaymentSheet.AddressCollectionMode.FULL, attachDefaultsToPaymentMethod: true }, }); ``` > Konsultasikan dengan penasihat hukum mengenai undang-undang yang berlaku untuk mengumpulkan informasi. Hanya kumpulkan nomor telepon jika Anda memerlukannya untuk transaksi.