Log perubahan Elements dengan Checkout Sessions API beta
Terus lacak perubahan pada integrasi Elements dengan Checkout Sessions API beta.
Peringatan
Dokumen ini berisi log perubahan yang terkait dengan versi beta Elements dengan Checkout Sessions API.
Jika Anda sudah menggunakan rilis Basil dari Elements dengan Checkout Sessions API, dokumen ini tidak berlaku untuk Anda.
Bermigrasi ke Basil
Perubahan
- Breaking Metode asinkron, seperti confirm atau applyPromotionCode, diselesaikan dengan skema yang berbeda:
- Jika berhasil, status sesi yang diperbarui diisi di bawah kunci
session
. Sebelumnya, ini berada di bawah kuncisuccess
.
- Jika berhasil, status sesi yang diperbarui diisi di bawah kunci
- Breaking Kesalahan sekarang muncul saat meneruskan returnUrl pada confirm bila return_url sudah diatur pada Sesi Checkout.
- Breaking URL kembali yang dialihkan setelah konfirmasi berhasil sebelumnya memiliki parameter query yang tidak konsisten. Parameter tambahan sekarang dihapus dan URL hanya berisi hal yang disediakan di returnUrl pada confirm atau return_url pada Sesi Checkout.
- Breaking Meningkatkan latensi pada Checkout Sessions API untuk Sesi mode langganan dan memperbaiki bug yang mencegah pelanggan Anda memperbarui Sesi setelah upaya pembayaran pertama
- The change creates the subscription after the user has completed the payment, so
checkout_
andsession. invoice checkout_
are null until the Checkout Session completes.session. subscription - If you currently rely on the deprecated
payment_
field, we recommend using theintent. invoice checkout_
webhook, which ensures an invoice is present, andsession. completed checkout_
or Invoice Payment list to find the associated invoice.session. invoice - Untuk mempelajari selengkapnya, baca log perubahan API.
- The change creates the subscription after the user has completed the payment, so
- Menambahkan percentOff ke discountAmounts sebagai opsi untuk menampilkan diskon.
Upgrade
Sebelum bermigrasi ke Basil, pertama-tama perbarui integrasi Anda ke custom_
.
- Jika Anda menggunakan paket Stripe NPM, Anda harus terlebih dahulu meningkatkan
@stripe/stripe-js
ke minimal7.
dan0. 0 @stripe/react-stripe-js
ke minimal3.
.6. 0 - Jika Anda memuat Stripe.js melalui tag skrip, perbarui tag skrip untuk menggunakan Stripe.js berversi dengan mengganti tag sebagai berikut:
<head> <title>Checkout</title> <script src="https://js.stripe.com/v3"></script> <script src="https://js.stripe.com/basil/stripe.js"></script> </head>
- Hapus header beta Stripe.js ketika menginisialisasi Stripe.js.
- Hapus header beta versi API dan tentukan versi API menjadi setidaknya
2025-03-31.
pada integrasi back-end Anda.basil
Log perubahan beta
Elements dengan Checkout Sessions API beta menggunakan dua jenis versi beta:
- Header beta Stripe.js (misalnya,
custom_
), yang diatur pada integrasi front-end Anda.checkout_ beta_ 6 - Header beta versi API (mis.,
custom_
), yang diatur pada integrasi backend Anda.checkout_ beta=v1
Versi beta front-end
Tentukan versi beta front-end ketika menginisialisasi Stripe.js.
custom_checkout_beta_6
Jika menggunakan paket Stripe NPM, Anda harus terlebih dahulu melakukan upgrade @stripe/stripe-js
ke minimal 6.
dan @stripe/react-stripe-js
ke minimal 3.
.
- Breaking Tanda total.appliedBalance telah dibalik. Angka positif kini meningkatkan jumlah yang harus dibayar, dan angka negatif mengurangi jumlah yang harus dibayar.
- Breaking Mengganti
clientSecret
dengan fetchClientSecret. Perbarui integrasi Anda untuk meneruskan fungsi asinkron yang diselesaikan ke client secret, bukan meneruskan nilai statis. - Breaking Metode Elements telah diganti namanya.
- Jika menggunakan React Stripe.js, Anda tidak perlu melakukan apa-apa kecuali upgrade
@stripe/react-stripe-js
. - Jika Anda menggunakan HTML/JS:
- Gunakan
createPaymentElement()
sebagai ganticreateElement('payment')
. - Gunakan
createBillingAddressElement()
sebagai ganticreateElement('address', {mode: 'billing'})
. - Gunakan
createShippingAddressElement()
sebagai ganticreateElement('address', {mode: 'shipping'})
. - Gunakan
createExpressCheckoutElement()
sebagai ganticreateElement('expressCheckout')
. - Gunakan
getPaymentElement()
sebagai gantigetElement('payment')
. - Gunakan
getBillingAddressElement()
sebagai gantigetElement('address', {mode: 'billing'})
. - Gunakan
getShippingAddressElement()
sebagai gantigetElement('address', {mode: 'shipping'})
. - Gunakan
getExpressCheckoutElement()
sebagai gantigetElement('expressCheckout')
.
- Gunakan
- Jika menggunakan React Stripe.js, Anda tidak perlu melakukan apa-apa kecuali upgrade
- Breaking Memperbarui bidang yang terkait dengan konfirmasi agar mencerminkan status sesi secara lebih akurat.
- canConfirm kini merespons Billing Address Element atau Shipping Address Element yang terpasang.
- canConfirm kini menjadi
false
jika ada konfirmasi yang sedang diproses. - Menghapus
confirmationRequirements
.
- Breaking updateEmail kini menampilkan kesalahan jika customer_email diberikan ketika membuat Sesi Checkout. Jika Anda bermaksud mengisi otomatis email yang dapat diperbarui pelanggan, panggil
updateEmail
segera setelah halaman dimuat, bukan meneruskancustomer_
.email - Breaking returnUrl harus berupa URL absolut (misalnya, dimulai dengan
https://
dan bukan URL relatif, seperti/success
). - Breaking Bidang skema biaya yang diperbarui ke objek bersarang untuk kemudahan rendering.
- Mengganti nilai numerik dengan objek yang berisi
amount
(string mata uang berformat, seperti$10.
) dan00 minorUnitsAmount
, bilangan bulat yang mewakili nilai dalam unit terkecil mata uang. Jika Anda sudah membaca jumlahnya, baca dariminorUnitsAmount
sebagai gantinya.- Misalnya, ganti
total.
dengantotal total.
.total. minorUnitsAmount
- Misalnya, ganti
- Anda harus membaca
total.
atau masing-masing daritotal. amount total.
dantotal. minorUnitsAmount currency
sertaminorUnitsAmountDivisor
dari objekcheckout
dan tampilan di UI, jika tidak maka akan terjadi kesalahan. Hal ini membantu menjaga agar halaman checkout Anda tetap sinkron seiring dengan pembaruan CheckoutSession, termasuk menambahkan fitur Stripe mendatang, dengan sedikit perubahan kode UI.
- Mengganti nilai numerik dengan objek yang berisi
- ID pajak pelanggan kini dapat dikumpulkan. Pelajari cara mengumpulkan ID pajak.
- Asisten khusus mode percobaan kini tersedia di bagian bawah halaman checkout, yang menawarkan panduan untuk integrasi Anda dan pintasan untuk skenario percobaan umum.
custom_checkout_beta_5
- Breaking Fungsi
initCustomCheckout
telah diganti namanya menjadi initCheckout- Dalam React Stripe.js,
CustomCheckoutProvider
telah diubah namanya menjadiCheckoutProvider
danuseCustomCheckout
telah diubah namanya menjadiuseCheckout
.
- Dalam React Stripe.js,
- Breaking Untuk mengonfirmasikan Express Checkout Element, panggil confirm, sehingga meneruskan confirm event sebagai
expressCheckoutConfirmEvent
- Sebelumnya, Express Checkout Element dikonfirmasikan dengan memanggil
event.
.confirm()
- Sebelumnya, Express Checkout Element dikonfirmasikan dengan memanggil
- Breaking Bila confirm dipanggil, Payment Element dan Address Element akan memvalidasi input formulir serta menampilkan kesalahan.
- Breaking Pesan kesalahan telah distandardisasi dan ditingkatkan.
- Kesalahan yang dikembalikan/diselesaikan oleh fungsi mewakili skenario yang diketahui seperti detail pembayaran yang tidak valid atau dana yang tidak mencukupi. Ini adalah masalah yang dapat diprediksi dan dapat dikomunikasikan kepada pelanggan Anda dengan menampilkan
message
pada halaman checkout. - Kesalahan yang dilemparkan/ditolak oleh fungsi mewakili kesalahan dalam integrasi itu sendiri, seperti parameter atau konfigurasi yang tidak valid. Kesalahan ini tidak dimaksudkan untuk ditampilkan kepada pelanggan Anda.
- Kesalahan yang dikembalikan/diselesaikan oleh fungsi mewakili skenario yang diketahui seperti detail pembayaran yang tidak valid atau dana yang tidak mencukupi. Ini adalah masalah yang dapat diprediksi dan dapat dikomunikasikan kepada pelanggan Anda dengan menampilkan
- Breaking Metode asinkron, seperti confirm atau applyPromotionCode, diselesaikan dengan skema yang berbeda:
- Bidang diskriminator
type="success"|"error"
telah ditambahkan. - Jika berhasil, status sesi yang diperbarui diisi di bawah kunci
success
. Sebelumnya, ini berada di bawah kuncisession
. - Jika tidak, kesalahan akan terus diisi di bawah kunci
error
.
- Bidang diskriminator
- Menambahkan opsi
email
,phoneNumber
,billingAddress
, danshippingAddress
ke confirm. - Breaking Address Element tidak lagi secara otomatis memperbarui bidang billingAddress atau shippingAddress pada Sesi.
- Selama Address Element dipasang, nilai formulir akan secara otomatis digunakan ketika memanggil confirm.
- Dengarkan kejadian perubahan untuk menggunakan nilai Address Element sebelum konfirmasi.
custom_checkout_beta_4
- Menambahkan gambar ke objek Sesi.
- Menambahkan bidang sebagai opsi ketika membuat Payment Element.
- Menambahkan paymentMethods sebagai opsi ketika membuat Express Checkout Element.
- Breaking Meneruskan opsi yang tidak valid ke createElement kini memunculkan kesalahan. Sebelumnya, opsi yang tidak dikenal akan diabaikan secara diam-diam.
- Breaking updateEmail dan updatePhoneNumber menerapkan perubahan secara asinkron. Memanggil metode ini sebelum pelanggan selesai memasukkan nilai lengkap dapat menyebabkan kinerja yang buruk.
- Sebagai ganti menelepon
updateEmail
atauupdatePhoneNumber
pada setiap kejadian perubahan input, tunggu sampai pelanggan Anda menyelesaikan input, seperti pada input yang mengabur atau saat mereka menyerahkan formulir untuk pembayaran. updateEmail
sekarang memvalidasi bahwa input adalah alamat email yang dibentuk dengan benar dan mengembalikan kesalahan jika input yang tidak valid digunakan.updatePhoneNumber
masih tidak melakukan validasi pada string input.
- Sebagai ganti menelepon
custom_checkout_beta_3
- Bidang berikut telah ditambahkan ke objek Sesi:
- Kartu yang disimpan sekarang dapat digunakan kembali. Pelajari cara menyimpan dan menggunakan kembali metode pembayaran.
- Breaking Default tata letak dari Payment Element telah diubah ke
accordion
.- Untuk terus menggunakan tata letak default sebelumnya, Anda harus menentukan
layout='tabs'
.
- Untuk terus menggunakan tata letak default sebelumnya, Anda harus menentukan
- Breaking Perilaku default confirm telah diubah untuk selalu dialihkan ke
return_
Anda setelah konfirmasi berhasil.url - Sebelumnya,
confirm
dialihkan hanya jika pelanggan memilih metode pembayaran berbasis pengalihan. Untuk terus menggunakan perilaku lama, Anda harus meneruskan pengalihan=‘if_required’ keconfirm
.
- Sebelumnya,
custom_checkout_beta_2
- Breaking Bidang
lineItem.
ini telah dihapus dan diganti dengan lineItem.recurring.intervalCount.recurring. interval_ count - Breaking Bidang
lineItem.
ini telah dihapus dan diganti dengan yang berikut ini:amount
custom_checkout_beta_1
Ini adalah versi beta front-end awal.
Log perubahan backend
Tentukan versi beta back-end ketika menyiapkan pustaka server Anda.
Tidak ada perubahan pada versi beta backend.