Perpustakaan Python API Admin Shopify
Anda harus mendaftar sebagai mitra di Dasbor Mitra Shopify sehingga Anda dapat membuat dan mengelola aplikasi Shopify.
Untuk menginstal atau meningkatkan ke rilis terbaru dengan mudah, gunakan pip.
pip install --upgrade ShopifyAPI
Pertama buat aplikasi baru di Dasbor Mitra, lalu ambil Kunci API dan Kunci Rahasia API Anda.
Kami kemudian perlu menyediakan kunci ini ke Kelas Sesi Shopify sehingga kelas tersebut mengetahui cara mengautentikasi.
import shopify
shopify . Session . setup ( api_key = API_KEY , secret = API_SECRET )
Untuk mengakses data toko, aplikasi memerlukan token akses dari toko tertentu. Kita perlu mengautentikasi toko tersebut menggunakan OAuth, yang dapat kita mulai dengan cara berikut:
shop_url = "SHOP_NAME.myshopify.com"
api_version = '2024-07'
state = binascii . b2a_hex ( os . urandom ( 15 )). decode ( "utf-8" )
redirect_uri = "http://myapp.com/auth/shopify/callback"
scopes = [ 'read_products' , 'read_orders' ]
newSession = shopify . Session ( shop_url , api_version )
auth_url = newSession . create_permission_url ( scopes , redirect_uri , state )
# redirect to auth_url
Setelah pedagang menerima, toko mengarahkan pemilik ke redirect_uri
aplikasi Anda dengan parameter bernama 'kode'. Ini adalah token sementara yang dapat ditukarkan oleh aplikasi dengan token akses permanen. Anda harus membandingkan status yang Anda berikan di atas dengan status yang Anda terima kembali untuk memastikan permintaan tersebut benar. Sekarang kita dapat menukarkan kode dengan access_token ketika Anda mendapatkan permintaan dari Shopify di pengendali panggilan balik Anda:
session = shopify . Session ( shop_url , api_version )
access_token = session . request_token ( request_params ) # request_token will validate hmac and timing attacks
# you should save the access token now for future use.
Sekarang Anda siap membuat permintaan API resmi ke toko Anda!:
session = shopify . Session ( shop_url , api_version , access_token )
shopify . ShopifyResource . activate_session ( session )
shop = shopify . Shop . current () # Get the current shop
product = shopify . Product . find ( 179761209 ) # Get a specific product
# execute a graphQL call
shopify . GraphQL (). execute ( "{ shop { name id } }" )
Alternatifnya, Anda dapat menggunakan temp untuk menginisialisasi Sesi dan menjalankan perintah:
with shopify . Session . temp ( shop_url , api_version , token ):
product = shopify . Product . find ()
Praktik terbaiknya adalah menghapus sesi Anda setelah selesai. Sesi sementara melakukan ini secara otomatis:
shopify . ShopifyResource . clear_session ()
Aplikasi pribadi sedikit lebih cepat digunakan karena OAuth tidak diperlukan. Anda dapat membuat aplikasi pribadi di Shopify Merchant Admin. Anda dapat menggunakan kata sandi Aplikasi Pribadi sebagai access_token
Anda :
session = shopify . Session ( shop_url , api_version , private_app_password )
shopify . ShopifyResource . activate_session ( session )
# ...
shopify . ShopifyResource . clear_session ()
with shopify . Session . temp ( shop_url , api_version , private_app_password ):
shopify . GraphQL (). execute ( "{ shop { name id } }" )
Catatan: Aplikasi Anda harus bersifat publik untuk menguji proses penagihan. Untuk menguji di toko pengembangan gunakan tanda 'test': True
application_charge = shopify . ApplicationCharge . create ({
'name' : 'My public app' ,
'price' : 123 ,
'test' : True ,
'return_url' : 'https://domain.com/approve'
})
# Redirect user to application_charge.confirmation_url so they can approve the charge
return_url
dengan parameter charge_id
( Catatan: Tindakan ini tidak lagi diperlukan jika tagihan dibuat dengan API versi 2021-01 atau lebih baru ) charge = shopify . ApplicationCharge . find ( charge_id )
shopify . ApplicationCharge . activate ( charge )
activated_charge
active
activated_charge = shopify . ApplicationCharge . find ( charge_id )
has_been_billed = activated_charge . status == 'active'
Dianjurkan untuk memiliki setidaknya pemahaman dasar tentang prinsip-prinsip perpustakaan pyactiveresource, yang merupakan port Rails/ActiveResource ke Python dan yang sangat diandalkan oleh paket ini.
Contoh sumber daya pyactiveresource
dipetakan ke sumber daya RESTful di API Shopify.
pyactiveresource
memperlihatkan metode siklus hidup untuk membuat, menemukan, memperbarui, dan menghapus sumber daya yang setara dengan kata kerja HTTP POST
, GET
, PUT
, dan DELETE
.
product = shopify . Product ()
product . title = "Shopify Logo T-Shirt"
product . id # => 292082188312
product . save () # => True
shopify . Product . exists ( product . id ) # => True
product = shopify . Product . find ( 292082188312 )
# Resource holding our newly created Product object
# Inspect attributes with product.attributes
product . price = 19.99
product . save () # => True
product . destroy ()
# Delete the resource from the remote server (i.e. Shopify)
Berikut adalah contoh lain untuk mengambil daftar order terbuka menggunakan parameter tertentu:
new_orders = shopify . Order . find ( status = "open" , limit = "50" )
Beberapa sumber daya seperti Fulfillment
diawali dengan sumber daya induk di API Shopify (misalnya orders/450789469/fulfillments/255858046
). Untuk berinteraksi dengan sumber daya ini, Anda harus menentukan pengidentifikasi sumber daya induk dalam permintaan Anda.
shopify . Fulfillment . find ( 255858046 , order_id = 450789469 )
Paket ini juga menyertakan skrip shopify_api.py
untuk memudahkan membuka konsol interaktif untuk menggunakan API dengan toko.
shopify_api.py add yourshopname
shopify_api.py console
shopify_api.py help
Perpustakaan ini juga mendukung API GraphQL Shopify yang baru. Proses otentikasinya identik. Setelah sesi Anda diaktifkan, cukup buat klien graphql baru dan gunakan execute
untuk menjalankan kueri.
result = shopify . GraphQL (). execute ( '{ shop { name id } }' )
Anda dapat melakukan operasi yang lebih kompleks menggunakan variables
dan parameter operation_name
dari execute
.
Misalnya, dokumen GraphQL ini menggunakan sebuah fragmen untuk membuat dua kueri bernama - satu untuk satu pesanan, dan satu lagi untuk beberapa pesanan:
# ./order_queries.graphql
fragment OrderInfo on Order {
id
name
createdAt
}
query GetOneOrder ( $order_id : ID ! ){
node ( id : $order_id ){
... OrderInfo
}
}
query GetManyOrders ( $order_ids : [ ID ] ! ){
nodes ( ids : $order_ids ){
... OrderInfo
}
}
Sekarang Anda dapat memilih operasi mana yang akan dijalankan:
# Load the document with both queries
document = Path ( "./order_queries.graphql" ). read_text ()
# Specify the named operation to execute, and the parameters for the query
result = shopify . GraphQL (). execute (
query = document ,
variables = { "order_id" : "gid://shopify/Order/12345" },
operation_name = "GetOneOrder" ,
)
python setup.py sdist
pip install --upgrade dist/ShopifyAPI- * .tar.gz
Catatan Gunakan skrip bin/shopify_api.py
saat menjalankan dari pohon sumber. Ini akan menambahkan direktori lib ke awal sys.path, sehingga versi yang diinstal tidak akan digunakan.
pip install setuptools --upgrade
python setup.py test
Dukungan penomoran halaman berbasis kursor telah ditambahkan di 6.0.0.
import shopify
page1 = shopify . Product . find ()
if page1 . has_next_page ():
page2 = page1 . next_page ()
# to persist across requests you can use next_page_url and previous_page_url
next_url = page1 . next_page_url
page2 = shopify . Product . find ( from_ = next_url )
Pra-komitmen disiapkan sebagai tindakan GitHub yang berjalan pada permintaan tarik dan mendorong ke cabang main
. Jika Anda ingin menjalankan pra-komit secara lokal, instal dan atur skrip git hook
pip install -r requirements.txt
pre-commit install
Saat ini tidak ada dukungan untuk: