مكتبة Shopify Admin API Python
يجب عليك التسجيل كشريك في Shopify Partners Dashboard حتى تتمكن من إنشاء تطبيقات Shopify وإدارتها.
للتثبيت أو الترقية إلى الإصدار الأحدث بسهولة، استخدم النقطة.
pip install --upgrade ShopifyAPI
قم أولاً بإنشاء تطبيق جديد في لوحة تحكم الشركاء، واحصل على مفتاح واجهة برمجة التطبيقات (API) ومفتاح واجهة برمجة التطبيقات (API) السري.
نحتاج بعد ذلك إلى توفير هذه المفاتيح إلى Shopify Session Class حتى تعرف كيفية المصادقة.
import shopify
shopify . Session . setup ( api_key = API_KEY , secret = API_SECRET )
من أجل الوصول إلى بيانات المتجر، تحتاج التطبيقات إلى رمز وصول من هذا المتجر المحدد. نحن بحاجة إلى المصادقة مع هذا المتجر باستخدام OAuth، والتي يمكننا أن نبدأ بالطريقة التالية:
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
بمجرد موافقة التاجر، يقوم المتجر بإعادة توجيه المالك إلى redirect_uri
الخاص بتطبيقك باستخدام معلمة تسمى "code". هذا رمز مؤقت يمكن للتطبيق استبداله برمز وصول دائم. يجب عليك مقارنة الحالة التي قدمتها أعلاه مع الحالة التي استلمتها للتأكد من صحة الطلب. يمكننا الآن استبدال الرمز برمز Access_token عندما تتلقى الطلب من Shopify في معالج رد الاتصال الخاص بك:
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.
أنت الآن جاهز لتقديم طلبات واجهة برمجة التطبيقات (API) المعتمدة إلى متجرك!:
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 } }" )
بدلًا من ذلك، يمكنك استخدام temp لتهيئة الجلسة وتنفيذ أمر:
with shopify . Session . temp ( shop_url , api_version , token ):
product = shopify . Product . find ()
من أفضل الممارسات مسح الجلسة عند الانتهاء. تقوم الجلسة المؤقتة بذلك تلقائيًا:
shopify . ShopifyResource . clear_session ()
تعد التطبيقات الخاصة أسرع قليلاً في الاستخدام نظرًا لعدم الحاجة إلى OAuth. يمكنك إنشاء التطبيق الخاص في Shopify Merchant Admin. يمكنك استخدام كلمة مرور التطبيق الخاص access_token
خاص بك:
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 } }" )
ملاحظة: يجب أن يكون طلبك عامًا لاختبار عملية الفوترة. للاختبار في متجر التطوير، استخدم '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
مع معلمة charge_id
( ملاحظة: لم يعد هذا الإجراء ضروريًا إذا تم إنشاء الرسوم باستخدام إصدار API 2021-01 أو أحدث ) 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'
من المستحسن أن يكون لديك على الأقل فهم أساسي لمبادئ مكتبة pyactiveresource، وهي عبارة عن منفذ Rails/ActiveResource إلى Python والتي تعتمد عليها هذه الحزمة بشكل كبير.
يتم تعيين مثيلات موارد pyactiveresource
لموارد RESTful في Shopify API.
يعرض pyactiveresource
أساليب دورة الحياة لإنشاء الموارد وإيجادها وتحديثها وحذفها والتي تعادل أفعال POST
و GET
و PUT
و 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)
فيما يلي مثال آخر لاسترداد قائمة الأوامر المفتوحة باستخدام معلمات معينة:
new_orders = shopify . Order . find ( status = "open" , limit = "50" )
بعض الموارد مثل Fulfillment
تكون مسبوقة بمورد رئيسي في Shopify API (على سبيل المثال orders/450789469/fulfillments/255858046
). من أجل التفاعل مع هذه الموارد، يجب عليك تحديد معرف المورد الأصلي في طلبك.
shopify . Fulfillment . find ( 255858046 , order_id = 450789469 )
تتضمن هذه الحزمة أيضًا البرنامج النصي shopify_api.py
لتسهيل فتح وحدة تحكم تفاعلية لاستخدام واجهة برمجة التطبيقات مع المتجر.
shopify_api.py add yourshopname
shopify_api.py console
shopify_api.py help
تدعم هذه المكتبة أيضًا واجهة GraphQL API الجديدة الخاصة بـ Shopify. عملية المصادقة متطابقة. بمجرد تنشيط جلستك، ما عليك سوى إنشاء عميل graphql جديد واستخدام execute
لتنفيذ الاستعلام.
result = shopify . GraphQL (). execute ( '{ shop { name id } }' )
يمكنك إجراء عمليات أكثر تعقيدًا باستخدام variables
ومعلمات operation_name
الخاصة execute
.
على سبيل المثال، يستخدم مستند GraphQL هذا جزءًا لإنشاء استعلامين مسماين - أحدهما لطلب واحد والآخر لأوامر متعددة:
# ./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
}
}
الآن يمكنك اختيار العملية التي تريد تنفيذها:
# 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
ملاحظة: استخدم البرنامج النصي bin/shopify_api.py
عند التشغيل من الشجرة المصدر. سيضيف دليل lib لبدء sys.path، لذلك لن يتم استخدام الإصدار المثبت.
pip install setuptools --upgrade
python setup.py test
تمت إضافة دعم ترقيم الصفحات المستند إلى المؤشر في الإصدار 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 )
يتم إعداد الالتزام المسبق كإجراء GitHub الذي يتم تشغيله بناءً على طلبات السحب ويدفع إلى الفرع main
. إذا كنت تريد تشغيل الالتزام المسبق محليًا، فقم بتثبيته وإعداد البرامج النصية لـ git Hook
pip install -r requirements.txt
pre-commit install
حاليا لا يوجد دعم ل: