# Terima pembayaran Alipay Pelajari cara menerima pembayaran Alipay, dompet digital yang populer di kalangan pelanggan dari Tiongkok. # Checkout > This is a Checkout for when payment-ui is checkout. View the full page at https://docs.stripe.com/payments/alipay/accept-a-payment?payment-ui=checkout. > Stripe dapat secara otomatis menyajikan metode pembayaran yang relevan kepada pelanggan Anda dengan mengevaluasi mata uang, pembatasan metode pembayaran, dan parameter lainnya. > > - Ikuti panduan [Menerima pembayaran](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=stripe-hosted) untuk membangun integrasi Checkout yang menggunakan [metode pembayaran dinamis](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods.md). - Jika Anda tidak ingin menggunakan metode pembayaran dinamis, ikuti langkah-langkah di bawah ini untuk mengonfigurasi metode pembayaran secara manual dalam integrasi Checkout Anda. Alipay adalah metode pembayaran [sekali pakai](https://docs.stripe.com/payments/payment-methods.md#usage) yang mengharuskan pelanggan untuk [mengautentikasi](https://docs.stripe.com/payments/payment-methods.md#customer-actions) pembayarannya Pelanggan membayar dengan mengalihkan dari situs web atau aplikasi Anda, mengotorisasi pembayaran melalui Alipay, kemudian kembali ke situs web atau aplikasi di mana Anda mendapatkan [notifikasi langsung](https://docs.stripe.com/payments/payment-methods.md#payment-notification) mengenai jika pembayaran berhasil atau gagal. ## Tentukan Kompatibilitas **Geografi Pelanggan**: China **Mata uang yang didukung**: `aud, cad, eur, gbp, hkd, jpy, nzd, sgd, usd, myr` **Mata uang transaksi**: `aud, cad, cny, eur, gbp, hkd, jpy, nzd, sgd, usd, myr` **Mode pembayaran**: Yes **Mode persiapan**: No **Mode langganan**: No Untuk mendukung pembayaran Alipay, Sesi Checkout harus memenuhi semua persyaratan berikut: - *Harga* (Prices define how much and how often to charge for products. This includes how much the product costs, what currency to use, and the interval if the price is for subscriptions) untuk semua mata anggaran harus dalam mata uang yang sama. - Jika Anda memiliki mata anggaran dalam mata uang yang berbeda, buat Sesi Checkout terpisah untuk setiap mata uang. - Anda hanya dapat menggunakan mata anggaran satu kali. Paket *langganan* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis) rutin tidak didukung. ## Terima pembayaran > Buat integrasi untuk [menerima pembayaran](https://docs.stripe.com/payments/accept-a-payment.md?integration=checkout) dengan Checkout sebelum menggunakan panduan ini. Ini memandu Anda melalui pengaktifan Alipay dan menunjukkan perbedaan antara menerima pembayaran menggunakan metode pembayaran dinamis dan mengonfigurasi metode pembayaran secara manual. ### Aktifkan Alipay sebagai metode pembayaran Saat membuat [Sesi Checkout](https://docs.stripe.com/api/checkout/sessions.md) baru, Anda perlu: 1. Tambahkan `Alipay` ke daftar `payment_method_types`. 1. Pastikan semua `line_items` menggunakan mata uang yang sama. #### Halaman yang di-hosting Stripe ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=hkd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=alipay" \ --data-urlencode "success_url=https://example.com/success" ``` #### Formulir tersemat ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=hkd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=alipay" \ --data-urlencode "return_url=https://example.com/return" \ -d ui_mode=embedded_page ``` ### Penuhi pesanan Anda Setelah menerima pembayaran, pelajari cara [memenuhi pesanan](https://docs.stripe.com/checkout/fulfillment.md). ## Coba integrasi Anda Saat mencoba integrasi Checkout Anda, pilih Alipay sebagai metode pembayaran dan klik tombol **Bayar**. ## Tangani pengembalian dana dan sengketa Jangka waktu pengembalian dana untuk Alipay hingga 90 hari setelah pembayaran semula. Alipay tidak memiliki proses sengketa—pelanggan mengautentikasi dengan akun Alipay mereka. ## See also - [Selengkapnya tentang Alipay](https://docs.stripe.com/payments/alipay.md) - [Pemenuhan Checkout](https://docs.stripe.com/checkout/fulfillment.md) - [Menyesuaikan Checkout](https://docs.stripe.com/payments/checkout/customization.md) # iOS > This is a iOS for when payment-ui is mobile and platform is ios. View the full page at https://docs.stripe.com/payments/alipay/accept-a-payment?payment-ui=mobile&platform=ios. Alipay adalah metode pembayaran [sekali pakai](https://docs.stripe.com/payments/payment-methods.md#usage) yang mengharuskan pelanggan untuk [mengautentikasi](https://docs.stripe.com/payments/payment-methods.md#customer-actions) pembayarannya Pelanggan membayar dengan mengalihkan dari situs web atau aplikasi Anda, mengotorisasi pembayaran melalui Alipay, kemudian kembali ke situs web atau aplikasi di mana Anda mendapatkan [notifikasi langsung](https://docs.stripe.com/payments/payment-methods.md#payment-notification) mengenai jika pembayaran berhasil atau gagal. ## Siapkan Stripe [Sisi client] [Sisi server] Pertama, Anda membutuhkan akun Stripe. [Daftar sekarang](https://dashboard.stripe.com/register). ### Sisi server Integrasi ini memerlukan endpoint di server Anda yang berbicara dengan API Stripe. Gunakan pustaka resmi kami untuk akses ke API Stripe dari server Anda: #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ### Sisi client [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 **StripePaymentsUI** 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 'StripePaymentsUI' ``` 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 StripePaymentsUI ``` #### 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/StripePaymentsUI/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 **StripePaymentsUI.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/StripePaymentsUI/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 UIKitimportStripePaymentsUI @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. ## Buat PaymentIntent [Sisi server] [PaymentIntent](https://docs.stripe.com/api/payment_intents/object.md) adalah objek yang mewakili maksud Anda untuk menagih pembayaran dari pelanggan dan melacak siklus proses pembayaran. Buat `PaymentIntent` pada server Anda dan tentukan jumlah yang akan dikumpulkan beserta [mata uang yang didukung](https://docs.stripe.com/payments/alipay.md#supported-currencies). Jika Anda sudah memiliki integrasi [Payment Intents](https://docs.stripe.com/payments/payment-intents.md) yang ada, tambahkan `alipay` ke daftar [tipe metode pembayaran](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_types). ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d "payment_method_types[]=alipay" \ -d amount=1099 \ -d currency=hkd ``` ## Alihkan ke Dompet Alipay [Sisi client] [Daftarkan skema URL custom untuk aplikasi Anda](https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app) dengan masuk ke tab Info di pengaturan target aplikasi Anda. ![Menyiapkan skema URL khusus di Xcode](https://b.stripecdn.com/docs-statics-srv/assets/ios-custom-url-scheme.e7bbf5f60cbb1a96f157f5cd89410120.png) Aplikasi Alipay membuka URL ini untuk kembali ke aplikasi Anda setelah pelanggan menyelesaikan pembayaran. Teruskan URL ke SDK Stripe di `UISceneDelegate` atau `UIApplicationDelegate`: #### SceneDelegate #### Swift ```swift // This method handles opening custom URL schemes (for example, "your-app://stripe-redirect") func scene(_ scene: UIScene, openURLContexts URLContexts: Set) { guard let url = URLContexts.first?.url else { return } let stripeHandled = StripeAPI.handleURLCallback(with: url) if (!stripeHandled) { // This was not a Stripe url – handle the URL normally as you would } } ``` #### AppDelegate #### Swift ```swift // This method handles opening custom URL schemes (for example, "your-app://stripe-redirect") func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool { let stripeHandled = StripeAPI.handleURLCallback(with: url) if (stripeHandled) { return true } else { // This was not a Stripe url – handle the URL normally as you would } return false } ``` Bila pelanggan mengetuk untuk membayar dengan Alipay, konfirmasikan PaymentIntent menggunakan [STPPaymentHandler confirmPayment](https://stripe.dev/stripe-ios/stripe-payments/Classes/STPPaymentHandler.html#/c:@M@StripePayments@objc\(cs\)STPPaymentHandler\(im\)confirmPayment:withAuthenticationContext:completion:). Hal ini meluncurkan aplikasi Alipay atau menampilkan webview jika aplikasi Alipay belum diinstal. #### Swift ```swift import UIKit import StripePayments class CheckoutViewController: UIViewController { // ... func pay() { let clientSecret = ... // The client secret of the PaymentIntent let paymentIntentParams = STPPaymentIntentParams(clientSecret: clientSecret) paymentIntentParams.paymentMethodParams = STPPaymentMethodParams(alipay: STPPaymentMethodAlipayParams(), billingDetails: nil, metadata: nil) paymentIntentParams.paymentMethodOptions = STPConfirmPaymentMethodOptions() paymentIntentParams.paymentMethodOptions?.alipayOptions = STPConfirmAlipayOptions() paymentIntentParams.returnURL = "{{URL SCHEME}}://safepay/" // Replace {{URL SCHEME}} with your own custom URL scheme. STPPaymentHandler.shared().confirmPayment(paymentIntentParams, with: self) { (status, intent, error) in switch status { case .canceled: // Payment was canceled case .failed: // Payment failed case .succeeded: // Payment was successful @unknown default: fatalError() } } } } extension CheckoutViewController: STPAuthenticationContext { func authenticationPresentingViewController() -> UIViewController { return self } } ``` Alipay membuka URL kembali dengan `safepay/` sebagai host. Misalnya, jika skema URL custom Anda adalah `myapp`, URL kembali Anda harus berupa `myapp://safepay/`. ## Optional: Tangani kejadian pascapembayaran Stripe mengirim kejadian [payment_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.succeeded) ketika selesai pembayaran. Gunakan Dashboard, *webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) custom, atau solusi mitra untuk menerima kejadian ini dan menjalankan tindakan, seperti mengirim email konfirmasi pesanan kepada pelanggan Anda, mencatat penjualan di database, atau memulai alur kerja pengiriman. Mendengarkan kejadian ini daripada menunggu callback dari client. Di client, pelanggan dapat menutup jendela browser atau keluar dari aplikasi sebelum callback mengeksekusi, dan client jahat dapat memanipulasi respons. Penyiapan integrasi untuk mendengarkan kejadian asinkron juga membantu Anda menerima lebih banyak metode pembayaran di masa mendatang. Pelajari tentang [perbedaan antara semua metode pembayaran yang didukung](https://stripe.com/payments/payment-methods-guide). ### Terima kejadian dan jalankan tindakan bisnis Ada beberapa opsi untuk menerima dan menjalankan tindakan bisnis. #### Secara manual Gunakan Dashboard Stripe untuk melihat semua pembayaran Stripe Anda, mengirim resi email, menangani payout, atau mencoba kembali pembayaran yang gagal. - [Lihat pembayaran percobaan Anda di Dashboard](https://dashboard.stripe.com/test/payments) #### Kode custom Bangun handler webhook untuk mendengarkan kejadian dan buat alur pembayaran asinkron custom. Coba dan debug integrasi webhook Anda secara lokal dengan Stripe CLI. - [Build a custom webhook](https://docs.stripe.com/webhooks/handling-payment-events.md#build-your-own-webhook) #### Aplikasi siap-rakit Tangani kejadian bisnis umum, seperti [otomatisasi](https://stripe.partners/?f_category=automation) atau [pemasaran dan penjualan](https://stripe.partners/?f_category=marketing-and-sales), dengan mengintegrasikan aplikasi mitra. ## Mata uang yang didukung Akun Anda harus memiliki rekening bank dalam salah satu mata uang berikut. Anda dapat membuat pembayaran Alipay dalam mata uang yang sesuai dengan negara Anda. Mata uang lokal default untuk Alipay adalah `cny`, dan pelanggan juga akan melihat jumlah pembelian mereka dalam `cny`. | Mata uang | Negara | | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cny` | Sembarang negara | | `aud` | Australia | | `cad` | Kanada | | `eur` | Austria, Belgia, Bulgaria, Siprus, Republik Ceko, Denmark, Estonia, Finlandia, Prancis, Jerman, Yunani, Irlandia, Italia, Latvia, Lituania, Luksemburg, Malta, Belanda, Norwegia, Portugal, Romania, Slovakia, Slovenia, Spanyol, Swedia, Swiss | | `gbp` | Inggris | | `hkd` | Hong Kong | | `jpy` | Jepang | | `myr` | Malaysia | | `nzd` | Selandia Baru | | `sgd` | Singapura | | `usd` | Amerika Serikat | Jika Anda memiliki rekening bank dalam mata uang lain dan ingin membuat pembayaran Alipay dalam mata uang tersebut, Anda dapat [menghubungi dukungan](https://support.stripe.com/email). Kami menyediakan dukungan untuk mata uang tambahan berdasarkan kasus per kasus. # 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/alipay/accept-a-payment?payment-ui=mobile&platform=android. Alipay adalah metode pembayaran [sekali pakai](https://docs.stripe.com/payments/payment-methods.md#usage) yang mengharuskan pelanggan untuk [mengautentikasi](https://docs.stripe.com/payments/payment-methods.md#customer-actions) pembayarannya Pelanggan membayar dengan mengalihkan dari situs web atau aplikasi Anda, mengotorisasi pembayaran melalui Alipay, kemudian kembali ke situs web atau aplikasi di mana Anda mendapatkan [notifikasi langsung](https://docs.stripe.com/payments/payment-methods.md#payment-notification) mengenai jika pembayaran berhasil atau gagal. ## Siapkan Stripe [Sisi server] [Sisi client] Pertama, Anda membutuhkan akun Stripe. [Daftar sekarang](https://dashboard.stripe.com/register). ### Sisi server Integrasi ini memerlukan endpoint di server Anda yang berbicara dengan Stripe API. Gunakan pustaka resmi untuk akses ke Stripe API dari server Anda: #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ### Sisi client [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. Sampel Stripe juga menggunakan [OkHttp](https://github.com/square/okhttp) dan [GSON](https://github.com/google/gson) untuk membuat permintaan HTTP ke server. ## Integrasikan Alipay SDK [Sisi client] Untuk pembayaran dalam aplikasi yang menggunakan alur pengalihan aplikasi-ke-aplikasi Alipay, Anda harus mengintegrasikan [Alipay SDK](https://global.alipay.com/docs/ac/app/download). Jika Anda tidak ingin mengintegrasikan Alipay SDK, SDK Stripe menggunakan Webview untuk mengalihkan pelanggan ke Alipay. Pengintegrasian Alipay SDK memberikan pengalaman yang lebih mulus kepada pelanggan, tetapi meningkatkan ukuran aplikasi Anda secara keseluruhan. Lihat [Menggunakan Webview](https://docs.stripe.com/payments/alipay/accept-a-payment.md#android-using-a-webview) untuk detail selengkapnya. Setelah mengekstrak arsip, tambahkan `alipaySdk-{version}.aar` ke direktori `libs` aplikasi Anda. Tambahkan folder `libs` ke daftar repositori dependensi proyek Anda: ```groovy allprojects { repositories { flatDir { dirs 'libs' } } } ``` Tambahkan dependensi ke aplikasi Anda: ```groovy dependencies { // ... // Replace {version} with the version number of the Alipay SDK that you downloaded above implementation(name:"alipaySdk-{version}", ext:"aar") } ``` ## Buat PaymentIntent [Sisi server] [PaymentIntent](https://docs.stripe.com/api/payment_intents/object.md) adalah objek yang mewakili maksud Anda untuk menagih pembayaran dari pelanggan dan melacak siklus proses pembayaran. Buat `PaymentIntent` pada server Anda dan tentukan jumlah yang akan dikumpulkan beserta [mata uang yang didukung](https://docs.stripe.com/payments/alipay.md#supported-currencies). Jika Anda sudah memiliki integrasi [Payment Intents](https://docs.stripe.com/payments/payment-intents.md) yang ada, tambahkan `alipay` ke daftar [tipe metode pembayaran](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_types). ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d "payment_method_types[]=alipay" \ -d amount=1099 \ -d currency=hkd ``` ## Alihkan ke Dompet Alipay [Sisi client] Minta PaymentIntent dari server Anda dan simpan client secret-nya. #### Kotlin ```kotlin class AlipayActivity : AppCompatActivity() { private lateinit var paymentIntentClientSecret: String override fun onCreate(savedInstanceState: Bundle?) { // ... fetchPaymentIntent() } private fun fetchPaymentIntent() { // Request a PaymentIntent from your server and store its client secret } } ``` Bila pelanggan mengetuk untuk membayar dengan Alipay, konfirmasikan PaymentIntent menggunakan `confirmAlipayPayment` Stripe. Anda harus memberikan AlipayAuthenticator untuk meneruskan data dari Stripe SDK ke Alipay SDK. Autentikator memanggil metode `payV2` Alipay dengan string data yang diberikan. Alipay SDK membuka aplikasi Alipay (jika diinstal) atau menampilkan UI-nya sendiri serta mengomunikasikan hasilnya kembali ke Stripe SDK secara otomatis. > Alipay Android SDK tidak mendukung pembayaran percobaan. Untuk mencoba integrasi ini sepenuhnya, gunakan [mode live](https://docs.stripe.com/keys.md#test-live-modes). #### Kotlin ```kotlin import com.alipay.sdk.app.PayTask class AlipayActivity : AppCompatActivity() { // ... private lateinit var paymentIntentClientSecret: String private val stripe: Stripe by lazy { Stripe( applicationContext, PaymentConfiguration.getInstance(applicationContext).publishableKey ) } // Call this function when the customer taps "Pay with Alipay" private fun startCheckout() { // ... lifecycleScope.launch { runCatching { stripe.confirmAlipayPayment( ConfirmPaymentIntentParams.createAlipay(paymentIntentClientSecret), { data -> PayTask(this@AlipayActivity).payV2(data, true) } ) }.fold( onSuccess = { result -> val paymentIntent = result.intent val status = paymentIntent.status when (status) { StripeIntent.Status.Succeeded -> { // Payment succeeded } StripeIntent.Status.RequiresAction -> { // Customer didn't complete the payment // You can try to confirm this Payment Intent again } else -> { // Payment failed/canceled } } }, onFailure = { // Payment failed } ) } } } ``` ## Optional: Menggunakan WebView [Sisi client] Jika Anda tidak ingin mengintegrasikan Alipay SDK, Stripe SDK dapat mengalihkan pelanggan ke WebView Alipay bila Anda memanggil `confirmPayment`. Situs web Alipay membuka aplikasi Alipay (jika diinstal) atau memungkinkan pelanggan menyelesaikan pembayaran di web. #### Kotlin ```kotlin class AlipayActivity : AppCompatActivity() { // ... private lateinit var paymentIntentClientSecret: String private val stripe: Stripe by lazy { Stripe( applicationContext, PaymentConfiguration.getInstance(applicationContext).publishableKey ) } // Call this method when the customer taps "Pay with Alipay" private fun startCheckout() { // ... val confirmParams = ConfirmPaymentIntentParams.createAlipay(paymentIntentClientSecret) stripe.confirmPayment(this, confirmParams) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) // Handle the result of stripe.confirmPayment stripe.onPaymentResult(requestCode, data, object : ApiResultCallback { override fun onSuccess(result: PaymentIntentResult) { val paymentIntent = result.intent val status = paymentIntent.status when (status) { StripeIntent.Status.Succeeded -> { // Payment succeeded } StripeIntent.Status.RequiresAction -> { // Customer didn't complete the payment // You can try to confirm this Payment Intent again } else -> { // Payment failed/canceled } } } override fun onError(e: Exception) { // Payment failed } }) } } ``` ## Optional: Tangani kejadian pascapembayaran Stripe mengirim kejadian [payment_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.succeeded) ketika selesai pembayaran. Gunakan Dashboard, *webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) custom, atau solusi mitra untuk menerima kejadian ini dan menjalankan tindakan, seperti mengirim email konfirmasi pesanan kepada pelanggan Anda, mencatat penjualan di database, atau memulai alur kerja pengiriman. Mendengarkan kejadian ini daripada menunggu callback dari client. Di client, pelanggan dapat menutup jendela browser atau keluar dari aplikasi sebelum callback mengeksekusi, dan client jahat dapat memanipulasi respons. Penyiapan integrasi untuk mendengarkan kejadian asinkron juga membantu Anda menerima lebih banyak metode pembayaran di masa mendatang. Pelajari tentang [perbedaan antara semua metode pembayaran yang didukung](https://stripe.com/payments/payment-methods-guide). ### Terima kejadian dan jalankan tindakan bisnis Ada beberapa opsi untuk menerima dan menjalankan tindakan bisnis. #### Secara manual Gunakan Dashboard Stripe untuk melihat semua pembayaran Stripe Anda, mengirim resi email, menangani payout, atau mencoba kembali pembayaran yang gagal. - [Lihat pembayaran percobaan Anda di Dashboard](https://dashboard.stripe.com/test/payments) #### Kode custom Bangun handler webhook untuk mendengarkan kejadian dan buat alur pembayaran asinkron custom. Coba dan debug integrasi webhook Anda secara lokal dengan Stripe CLI. - [Build a custom webhook](https://docs.stripe.com/webhooks/handling-payment-events.md#build-your-own-webhook) #### Aplikasi siap-rakit Tangani kejadian bisnis umum, seperti [otomatisasi](https://stripe.partners/?f_category=automation) atau [pemasaran dan penjualan](https://stripe.partners/?f_category=marketing-and-sales), dengan mengintegrasikan aplikasi mitra. ## Mata uang yang didukung Akun Anda harus memiliki rekening bank dalam salah satu mata uang berikut. Anda dapat membuat pembayaran Alipay dalam mata uang yang sesuai dengan negara Anda. Mata uang lokal default untuk Alipay adalah `cny`, dan pelanggan juga akan melihat jumlah pembelian mereka dalam `cny`. | Mata uang | Negara | | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cny` | Sembarang negara | | `aud` | Australia | | `cad` | Kanada | | `eur` | Austria, Belgia, Bulgaria, Siprus, Republik Ceko, Denmark, Estonia, Finlandia, Prancis, Jerman, Yunani, Irlandia, Italia, Latvia, Lituania, Luksemburg, Malta, Belanda, Norwegia, Portugal, Romania, Slovakia, Slovenia, Spanyol, Swedia, Swiss | | `gbp` | Inggris | | `hkd` | Hong Kong | | `jpy` | Jepang | | `myr` | Malaysia | | `nzd` | Selandia Baru | | `sgd` | Singapura | | `usd` | Amerika Serikat | Jika Anda memiliki rekening bank dalam mata uang lain dan ingin membuat pembayaran Alipay dalam mata uang tersebut, Anda dapat [menghubungi dukungan](https://support.stripe.com/email). Kami menyediakan dukungan untuk mata uang tambahan berdasarkan kasus per kasus. # 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/alipay/accept-a-payment?payment-ui=mobile&platform=react-native. Alipay adalah metode pembayaran [sekali pakai](https://docs.stripe.com/payments/payment-methods.md#usage) yang mengharuskan pelanggan untuk [mengautentikasi](https://docs.stripe.com/payments/payment-methods.md#customer-actions) pembayarannya Pelanggan membayar dengan mengalihkan dari situs web atau aplikasi Anda, mengotorisasi pembayaran melalui Alipay, kemudian kembali ke situs web atau aplikasi di mana Anda mendapatkan [notifikasi langsung](https://docs.stripe.com/payments/payment-methods.md#payment-notification) mengenai jika pembayaran berhasil atau gagal. ## Siapkan Stripe [Sisi server] [Sisi client] ### Sisi server Integrasi ini memerlukan endpoint di server Anda yang berbicara dengan API Stripe. Gunakan pustaka resmi kami untuk akses ke API Stripe dari server Anda: #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ### Sisi client [React Native SDK](https://github.com/stripe/stripe-react-native) adalah sumber terbuka dan didokumentasikan lengkap. Secara internal, SDK [iOS asli](https://github.com/stripe/stripe-ios) dan SDK [Android](https://github.com/stripe/stripe-android) digunakan. Untuk menginstal React Native SDK Stripe, jalankan salah satu perintah berikut di direktori proyek (bergantung 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, tidak ada lagi ketergantungan yang harus diinstal. > Sebaiknya ikuti [panduan TypeScript resmi](https://reactnative.dev/docs/typescript#adding-typescript-to-an-existing-project) untuk menambahkan dukungan TypeScript. ### 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`. ```jsx import { useState, useEffect } from 'react'; import { StripeProvider } from '@stripe/stripe-react-native'; function App() { const [publishableKey, setPublishableKey] = useState(''); const fetchPublishableKey = async () => { const key = await fetchKey(); // fetch key from your server here setPublishableKey(key); }; useEffect(() => { fetchPublishableKey(); }, []); 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. ## Buat PaymentIntent [Sisi server] [PaymentIntent](https://docs.stripe.com/api/payment_intents/object.md) adalah objek yang mewakili maksud Anda untuk menagih pembayaran dari pelanggan dan melacak siklus proses pembayaran. Buat `PaymentIntent` pada server Anda dan tentukan jumlah yang akan dikumpulkan beserta [mata uang yang didukung](https://docs.stripe.com/payments/alipay.md#supported-currencies). Jika Anda sudah memiliki integrasi [Payment Intents](https://docs.stripe.com/payments/payment-intents.md) yang ada, tambahkan `alipay` ke daftar [tipe metode pembayaran](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_types). ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d "payment_method_types[]=alipay" \ -d amount=1099 \ -d currency=hkd ``` ## Alihkan ke dompet Alipay [Sisi client] Stripe React Native SDK menentukan `safepay/` sebagai host URL kembali untuk metode pengalihan bank dan metode pembayaran dompet digital. Setelah pelanggan menyelesaikan pembayaran dengan Alipay, mereka akan dialihkan ke `myapp://safepay/`, di mana `myapp` adalah skema URL custom Anda. Bila pelanggan keluar dari aplikasi Anda (misalnya untuk melakukan autentikasi di Safari atau aplikasi perbankan), sediakan cara agar pelanggan dapat kembali ke aplikasi Anda secara otomatis. Banyak tipe metode pembayaran *memerlukan* URL kembali. Jika Anda tidak memberikannya, kami tidak dapat menyajikan metode pembayaran yang mengharuskan URL kembali kepada pengguna, sekalipun Anda telah mengaktifkannya. Untuk memberikan URL kembali: 1. [Daftarkan](https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app#Register-your-URL-scheme) URL custom. Tautan universal tidak didukung. 1. [Konfigurasikan](https://reactnative.dev/docs/linking) URL custom Anda. 1. Siapkan komponen root Anda untuk meneruskan URL ke SDK Stripe seperti yang ditunjukkan di bawah ini. > Jika Anda menggunakan Expo, [atur skema](https://docs.expo.io/guides/linking/#in-a-standalone-app) di file `app.json`. ```jsx import { useEffect, useCallback } from 'react'; import { Linking } from 'react-native'; import { useStripe } from '@stripe/stripe-react-native'; export default function MyApp() { const { handleURLCallback } = useStripe(); const handleDeepLink = useCallback( async (url: string | null) => { if (url) { const stripeHandled = await handleURLCallback(url); if (stripeHandled) { // This was a Stripe URL - you can return or add extra handling here as you see fit } else { // This was NOT a Stripe URL – handle as you normally would } } }, [handleURLCallback] ); useEffect(() => { const getUrlAsync = async () => { const initialUrl = await Linking.getInitialURL(); handleDeepLink(initialUrl); }; getUrlAsync(); const deepLinkListener = Linking.addEventListener( 'url', (event: { url: string }) => { handleDeepLink(event.url); } ); return () => deepLinkListener.remove(); }, [handleDeepLink]); return ( ); } ``` Untuk informasi selengkapnya tentang skema URL asli, baca dokumen [Android](https://developer.android.com/training/app-links/deep-linking) dan [iOS](https://developer.apple.com/documentation/xcode/allowing_apps_and_websites_to_link_to_your_content/defining_a_custom_url_scheme_for_your_app). ## Konfirmasikan pembayaran [Sisi client] Bila pelanggan mengetuk untuk membayar dengan Alipay, panggil `confirmPayment` untuk menampilkan webview tempat mereka dapat menyelesaikan pembayaran. ```javascript export default function AlipayPaymentScreen() { const [email, setEmail] = useState(''); const { confirmPayment, loading } = useConfirmPayment(); const handlePayPress = async () => { const { clientSecret } = await fetchPaymentIntentClientSecret(); const { error, paymentIntent } = await confirmPayment(clientSecret, { paymentMethodType: 'Alipay', }); if (error) { Alert.alert(`Error code: ${error.code}`, error.message); } else if (paymentIntent) { Alert.alert( 'Success', `The payment was confirmed successfully! currency: ${paymentIntent.currency}` ); } }; return ( setEmail(value.nativeEvent.text)} /> ``` ```ruby get '/checkout' do @intent = # ... Fetch or create the PaymentIntent erb :checkout end ``` ## Alihkan ke Dompet Alipay [Sisi client] Bila pelanggan mengklik untuk membayar dengan Alipay, gunakan Stripe.js untuk menyerahkan pembayaran kepada Stripe. [Stripe.js](https://docs.stripe.com/payments/elements.md) adalah pustaka dasar JavaScript untuk membangun alur pembayaran. Ini menangani kompleksitas secara otomatis seperti pengarah ulang yang dijelaskan di bawah, dan memungkinkan Anda memperluas integrasi ke metode pembayaran lain. Sertakan skrip Stripe.js di halaman checkout dengan menambahkannya ke `head` file HTML Anda. ```html Checkout ``` Buat instance Stripe.js dengan JavaScript berikut di halaman checkout Anda. ```javascript // Set your publishable key. Remember to change this to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe('<>'); ``` Gunakan [client secret](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret) `PaymentIntent` dan panggil `stripe.confirmAlipayPayment` untuk menangani pengalihan Alipay. Tambahkan `return_url` untuk menentukan ke mana Stripe mengalihkan pelanggan setelah menyelesaikan pembayaran. ```javascript const form = document.getElementById('payment-form'); form.addEventListener('submit', async function(event) { event.preventDefault(); // Set the clientSecret of the PaymentIntent const { error } = await stripe.confirmAlipayPayment(clientSecret, { // Return URL where the customer should be redirected after the authorization return_url: `${window.location.href}`, }); if (error) { // Inform the customer that there was an error. const errorElement = document.getElementById('error-message'); errorElement.textContent = error.message; } }); ``` `return_url` sesuai dengan halaman di situs web Anda yang menampilkan hasil pembayaran. Anda dapat menentukan apa yang akan ditampilkan dengan [memverifikasi status](https://docs.stripe.com/payments/payment-intents/verifying-status.md#checking-status) `PaymentIntent`. Untuk memverifikasi status, pengalihan Stripe ke `return_url` menyertakan parameter query URL berikut. Anda juga dapat menambahkan parameter query sendiri ke `return_url`. Parameter tersebut tetap ada selama proses pengalihan. | Parameter | Keterangan | | ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- | | `payment_intent` | Identifier unik untuk `PaymentIntent`. | | `payment_intent_client_secret` | [client secret](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret) dari objek `PaymentIntent`. | ## Optional: Tangani pengalihan secara manual [Sisi server] Cara terbaik untuk menangani pengalihan adalah menggunakan Stripe.js dengan `confirmAlipayPayment`. Jika Anda perlu mengalihkan pelanggan secara manual: 1. Berikan URL untuk mengalihkan pelanggan Anda setelah mereka menyelesaikan pembayaran. ```curl curl https://api.stripe.com/v1/payment_intents/pi_1DRuHnHgsMRlo4MtwuIAUe6u/confirm \ -u "<>:" \ -d payment_method=pm_1EnPf7AfTbPYpBIFLxIc8SD9 \ --data-urlencode "return_url=https://shop.example.com/crtA6B28E1" ``` 1. Konfirmasikan `PaymentIntent` memiliki status `requires_action`. Tipe untuk `next_action` akan berupa `alipay_handle_redirect`. ```json "next_action": { "type": "alipay_handle_redirect", "alipay_handle_redirect": { "url": "https://hooks.stripe.com/...", "return_url": "https://example.com/checkout/complete" } } ``` 1. Alihkan pelanggan ke URL yang diberikan di properti `next_action`. Bila pelanggan menyelesaikan proses pembayaran, mereka akan dikirim ke tujuan `return_url`. Parameter query URL `payment_intent` dan `payment_intent_client_secret` disertakan dan Anda dapat mengirim langsung parameter query sendiri, sebagaimana dijelaskan di atas. ## Optional: Tangani kejadian pascapembayaran Stripe mengirim kejadian [payment_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.succeeded) ketika selesai pembayaran. Gunakan Dashboard, *webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) custom, atau solusi mitra untuk menerima kejadian ini dan menjalankan tindakan, seperti mengirim email konfirmasi pesanan kepada pelanggan Anda, mencatat penjualan di database, atau memulai alur kerja pengiriman. Mendengarkan kejadian ini daripada menunggu callback dari client. Di client, pelanggan dapat menutup jendela browser atau keluar dari aplikasi sebelum callback mengeksekusi, dan client jahat dapat memanipulasi respons. Penyiapan integrasi untuk mendengarkan kejadian asinkron juga membantu Anda menerima lebih banyak metode pembayaran di masa mendatang. Pelajari tentang [perbedaan antara semua metode pembayaran yang didukung](https://stripe.com/payments/payment-methods-guide). ### Terima kejadian dan jalankan tindakan bisnis Ada beberapa opsi untuk menerima dan menjalankan tindakan bisnis. #### Secara manual Gunakan Dashboard Stripe untuk melihat semua pembayaran Stripe Anda, mengirim resi email, menangani payout, atau mencoba kembali pembayaran yang gagal. - [Lihat pembayaran percobaan Anda di Dashboard](https://dashboard.stripe.com/test/payments) #### Kode custom Bangun handler webhook untuk mendengarkan kejadian dan buat alur pembayaran asinkron custom. Coba dan debug integrasi webhook Anda secara lokal dengan Stripe CLI. - [Build a custom webhook](https://docs.stripe.com/webhooks/handling-payment-events.md#build-your-own-webhook) #### Aplikasi siap-rakit Tangani kejadian bisnis umum, seperti [otomatisasi](https://stripe.partners/?f_category=automation) atau [pemasaran dan penjualan](https://stripe.partners/?f_category=marketing-and-sales), dengan mengintegrasikan aplikasi mitra. ## Mata uang yang didukung Akun Anda harus memiliki rekening bank dalam salah satu mata uang berikut. Anda dapat membuat pembayaran Alipay dalam mata uang yang sesuai dengan negara Anda. Mata uang lokal default untuk Alipay adalah `cny`, dan pelanggan juga akan melihat jumlah pembelian mereka dalam `cny`. | Mata uang | Negara | | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cny` | Sembarang negara | | `aud` | Australia | | `cad` | Kanada | | `eur` | Austria, Belgia, Bulgaria, Siprus, Republik Ceko, Denmark, Estonia, Finlandia, Prancis, Jerman, Yunani, Irlandia, Italia, Latvia, Lituania, Luksemburg, Malta, Belanda, Norwegia, Portugal, Romania, Slovakia, Slovenia, Spanyol, Swedia, Swiss | | `gbp` | Inggris | | `hkd` | Hong Kong | | `jpy` | Jepang | | `myr` | Malaysia | | `nzd` | Selandia Baru | | `sgd` | Singapura | | `usd` | Amerika Serikat | Jika Anda memiliki rekening bank dalam mata uang lain dan ingin membuat pembayaran Alipay dalam mata uang tersebut, Anda dapat [menghubungi dukungan](https://support.stripe.com/email). Kami menyediakan dukungan untuk mata uang tambahan berdasarkan kasus per kasus.