تخط وانتقل إلى المحتوى الرئيسي
جميع المجموعاتالتكاملات
كيف يمكنني استخدام واجهة برمجة تطبيقات Loopy Loyalty
كيف يمكنني استخدام واجهة برمجة تطبيقات Loopy Loyalty
Danny Allen avatar
بقلم: Danny Allen
تم إجراء هذا التحديث منذ أكثر من أسبوع

لا توجد واجهة برمجة تطبيقات Loopy Loyalty موثقة رسميًا. ومع ذلك، يمكن لأصحاب حسابات Loopy Loyalty الوصول إلى نفس الواجهة الخلفية التي يستخدمها تطبيق الواجهة الأمامية من خلال النظر إلى Web Inspector ومكالمات واجهة برمجة التطبيقات التي يتم إجراؤها.

للتيسير وقائمة بنقاط النهاية المتاحة، قمنا بتوثيق نقاط النهاية هذه في مستند Google:

عنوان URL الأساسي لواجهة برمجة التطبيقات هو:

https://api.loopyloyalty.com/v1

لإنشاء بطاقات جديدة، تحتاج إلى استخدام نقطة النهاية.

هذه نقطة نهاية عامة ولا تحتاج إلى أي تفويض. يُرجى الاطلاع على طلب نموذجي لإصدار تصريح أدناه.

لاحظ أن الحمولة ديناميكية بناءً على الحملة؛ وأسهل طريقة لمعرفة الحمولة هي إلقاء نظرة على POST الذي تقوم به صفحة Loopy Landing العادية باستخدام Web Inspector، واستخدامه:

Request:
curl 'https://api.loopyloyalty.com/v1/enrol/{CAMPAIGN_ID}' \
-X POST \
-H 'Content-Type: application/json;charset=UTF-8' \
--data-binary '{"regularFields":{"First Name":"Nick","Last name":"Murray","Birthday":"1973-11-22T08:00:00.000Z"},"uniqueIds":{"email":"nick@anatta.com","phone":"+85297700226"}}'

Response:
{"pid":"HjgobIKOzVpIVQ","url":"https://loyalty.is/HjgobIKOzVpIVQ"}

Error Response:
{"error":"(EC002) Could not enrol customer. Looks like you’ve already signed up for this card using nick@anatta.com and +85297700226. Please contact My Company or use a different Email and Mobile Number."}

في المثال أعلاه، يعد معرف العملية (PID) هو ما يجب استخدامه في المكالمة التالية للحصول على تفاصيل البطاقة:

https://api.loopyloyalty.com/v1/card/{pid}

إن الحصول على تفاصيل البطاقة هو نقطة نهاية معتمدة، لذا سيحتاج العميل إلى إضافة رأس تفويض للتأكد من نجاح الطلب. يجب أن يحتوي رأس التفويض على JWT صالح.

أسهل طريقة للحصول على JWT صالح هي الوصول إلى نقطة نهاية تسجيل الدخول:

Request:
curl 'https://api.loopyloyalty.com/v1/account/login' \
-X POST \
-H 'Content-Type: application/json;charset=UTF-8' \
--data-binary '{"username":"pkosterman", "password":"xxx"}'

Response:
{"email":"pkosterman@gmail.com","token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJidXNpbmVzcyI6IlRoZSBHb2JibGVycyIsImNyZWF0ZVRpbWUfghfghdAxOjUzOjU2LjUxNTA1NDI4WiIsImVtYWlsIjoicGtvc3Rlcm1hbkBnbWFpbC5jb20iLCJleHAiOjE1ODY1Mjg4MjIsImV4cGlyeURhdGUiOiIyMDE3LTEwLTEyVDAsdfgenegloiLCJpYXQiOjE1ODY0NjA0MjIsImloYXNoIjoiOWI5MjNlMjM1OTE1ZTU1M2NhNjc1MDU1Y2I2YzZmNjVhNDlkMjBhNTkyMzYyMTU5NjJiZjY4OWZkNGE5OTM1NiIsImxpbWl0IjozLCJwa0FkbWluIjpmYWxzZSwicGxhbiI6ImdvYmJsZXIiLCJzdGF0dXMiOiJhY3RpdmUiLCJ0cmlhbER1cmF0aW9uIjo0NSwidHJpYWxFeHAiOjAsInVpZCI6IjVZcFhpd3h1OEhEQk9Vc0tPSVFBYU8iLCJ1c2VybmFtZSI6InBrb3N0ZXJtYW4ifQ.54tJuJgURCyPZhHaZAee3xpdZF22hQMVLmft7qSz4aI"}

Error Response:
{"error":"Invalid username \u0026 password combination."}

يمكن بعد ذلك استخدام الرمز أعلاه لإجراء مكالمات أخرى معتمدة. الرمز صالح لمدة 24 ساعة.

مثال للحصول على بطاقة:

Request:
curl -X GET -H "Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJidXNpbmVzcyI6IlRoZSBHb2JibGVycyIsImNyZWF0ZVRpbWUfghfghdAxOjUzOjU2LjUxNTA1NDI4WiIsImVtYWlsIjoicGtvc3Rlcm1hbkBnbWFpbC5jb20iLCJleHAiOjE1ODY1Mjg4MjIsImV4cGlyeURhdGUiOiIyMDE3LTEwLTEyVDAsdfgenegloiLCJpYXQiOjE1ODY0NjA0MjIsImloYXNoIjoiOWI5MjNlMjM1OTE1ZTU1M2NhNjc1MDU1Y2I2YzZmNjVhNDlkMjBhNTkyMzYyMTU5NjJiZjY4OWZkNGE5OTM1NiIsImxpbWl0IjozLCJwa0FkbWluIjpmYWxzZSwicGxhbiI6ImdvYmJsZXIiLCJzdGF0dXMiOiJhY3RpdmUiLCJ0cmlhbER1cmF0aW9uIjo0NSwidHJpYWxFeHAiOjAsInVpZCI6IjVZcFhpd3h1OEhEQk9Vc0tPSVFBYU8iLCJ1c2VybmFtZSI6InBrb3N0ZXJtYW4ifQ.54tJuJgURCyPZhHaZAee3xpdZF22hQMVLmft7qSz4aI" 'https://api.loopyloyalty.com/card/HjgobIKOzVpIVQ?includeEvents=true'

Response:
{"card":{"id":"HjgobIKOzVpIVQ","uid":"5YpXiwxu8HDBOUsKOIQAaO","campaignId":"6mBGLQcJTqVXU43tzptyxh","passStatus":"removed","stripImage":{"width":1125,"height":432,"padding":40,"totalStamps":10,"stampImage":"bagel","unstampImage":"bagel","backgroundColor":"#401A6B","backgroundOpacity":1,"stampColor":"#FFFFFF","stampOpacity":1,"unstampColor":"#FFFFFF","unstampOpacity":0.25,"placeholders":true,"placeholderColor":"#6B1D5E","placeholderOpacity":1,"placeholderBorderColor":"#177BE3","placeholderBorderOpacity":1,"rewardsPlaceholders":true,"rewardBorderColor":"#EBFF10","rewardBorderOpacity":1,"rewardBackgroundColor":"#808548","rewardBackgroundOpacity":1,"rewardPositions":0,"stampedStatus":1,"imageType":"svg"},"totalStampsEarned":1,"totalRewardsEarned":0,"totalRewardsRedeemed":0,"lastStampEarnedDate":"2019-04-03T10:10:57Z","customerDetails":{"Nme":"Ryan"},"object":"card","createYear":2018,"createMonth":5,"createDay":7,"createTime":"2018-05-07T04:33:54Z","updateTime":"2019-04-03T10:10:57Z","chainTx":"5f1aced14faf5c2ff0b17075113976ce435541438f6fb03becd30e0ac205280f","dataConsentOptIn":true},"events":[{"id":190601,"uuid":"bf4d866a-3afe-4afa-9be5-79e62b1b91f4","card_id":"HjgobIKOzVpIVQ","username":"pkosterman","type":0,"quantity":1,"location_name":"","reward_name":"","s_lat":null,"s_lon":null,"ip":"172.20.83.90","ua":"Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1","referrer":"https://app.loopyloyalty.com/landing-page/6mBGLQcJTqVXU43tzptyxh","created":"2018-05-07T04:33:55Z"},{"id":190602,"uuid":"af5cc28f-05c5-4204-a58e-1fc686181d1c","card_id":"HjgobIKOzVpIVQ","username":"pkosterman","type":5,"quantity":0,"location_name":"","reward_name":"","s_lat":null,"s_lon":null,"ip":"","ua":"iOS Wallet Daemon","referrer":"","created":"2018-05-07T04:34:03Z"},{"id":200741,"uuid":"c05e6cb4-6780-4623-b96d-9ef5a2f945a4","card_id":"HjgobIKOzVpIVQ","username":"pkosterman","type":5,"quantity":0,"location_name":"","reward_name":"","s_lat":null,"s_lon":null,"ip":"","ua":"iOS Wallet Daemon","referrer":"","created":"2018-05-12T03:32:22Z"},{"id":835348,"uuid":"ac8cc1ac-5466-4b4e-9062-4b156a1e43cc","card_id":"HjgobIKOzVpIVQ","username":"pkosterman","type":5,"quantity":0,"location_name":"","reward_name":"","s_lat":null,"s_lon":null,"ip":"","ua":"iOS Wallet Daemon","referrer":"","created":"2019-01-31T13:34:34Z"},{"id":1062698,"uuid":"61aff1ca-e665-4ece-861d-7d5e7eb7dc02","card_id":"HjgobIKOzVpIVQ","username":"pkosterman","type":1,"quantity":1,"location_name":"","reward_name":"","s_lat":null,"s_lon":null,"ip":"172.20.83.90","ua":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15","referrer":"https://app.loopyloyalty.com/","created":"2019-04-03T10:10:58Z"},{"id":1763449,"uuid":"18ff4e8c-ad74-437a-81c4-2f748ea912f7","card_id":"HjgobIKOzVpIVQ","username":"pkosterman","type":5,"quantity":0,"location_name":"","reward_name":"","s_lat":null,"s_lon":null,"ip":"","ua":"iOS Wallet Daemon","referrer":"","created":"2019-09-20T07:45:40Z"},{"id":2413925,"uuid":"b6a71b6e-b088-43c4-9b53-b9b6ce7f3a08","card_id":"HjgobIKOzVpIVQ","username":"pkosterman","type":6,"quantity":0,"location_name":"","reward_name":"","s_lat":null,"s_lon":null,"ip":"","ua":"iOS Wallet Daemon","referrer":"","created":"2020-01-10T03:26:48Z"}]}

Error Response:
{"error":"User is not authorized for this operation."}
OR
{"error":"(EC039) Token is invalid."}

هل أجاب هذا عن سؤالك؟