โดยทั่วไปแคมเปญจะแบ่งออกเป็น 2 ประเภทคือ "รับคะแนน" และ "ใช้คะแนน"
"รับคะแนน" เป็นแคมเปญที่ผู้ใช้งานจะทำภาระกิจต่างๆ ในสำเร็จตามเงื่อนไขของแต่ละแคมเปญ เพื่อที่จะได้รับคะแนน
"ใช้คะแนน" เป็นแคมเปญที่จะต้องใช้คะแนนของผู้ใช้งาน ในการแลกสิทธิ โดยส่วนมากแคมเปญ ส่วนใหญ่ก็จะเป็นแบบใช้คะแนน ภายในแต่ละแคมเปญก็จะใช้คะแนนต่างกันไปตามแต่ละรางวัล หรือเป็นไปตามโปรแกรมของผู้ขาย
วิธีการแลกรางวัลแคมเปญ สามารถแลกสิทธิได้จะต้องทำการเช็คเงื่อนไขต่างๆ ของแคมเปญ และสิทธิของผู้ใช้งานดังนี้ก่อน
เงื่อนไขการ Redeem campaign
- ก่อนการ redeem จะต้องทำการเช็คว่าผู้ใช้สามารถแลกสิทธิ์ campaign นั้นๆ ได้หรือไม่ ในกรณีที่
isConditionPass == false
ให้เช็คconditionAlertID
เพื่อที่จะนำข้อมูลมาใช้ lock ปุ่ม redeem หรือ handle message บนปุ่ม ซึ่งแต่ละ ID จะมีความหมายดังตารางด้านล่าง
conditionAlertID | รายละเอียด |
---|---|
1 | มีผู้ใช้สิทธิ์เต็มจำนวนแล้ว |
2 | คุณได้แลกรับสิทธิ์นี้แล้ว |
3 | คุณได้แลกรับสิทธิ์นี้แล้ว |
1409 | สินค้านี้หมดอายุแล้ว |
1403 | เงื่อนไขไม่ตรงกับที่ระบุ |
สถานะดังกล่าว ถ้าไม่ได้มีการเช็คก่อน API จะทำการส่งค่า
APIError
กลับมาให้
จากตัวอย่างของ campaign detail หลังจากที่ได้ข้อมูลมาแล้ว ถ้าผู้ใช้งานต้องการแลกสิทธิพิเศษของแคมเปญนี้ ซึ่งจะสามารถกกดได้ที่ปุ่มแลกรางวัล เราจะสร้างป๊อปอัพยืนการแลกรางวัล ตาม UI ด้านล่าง เพื่อทำการ verify user อีกครั้ง ก่อนการเรียก API Redeem campaign
curl --location --request POST 'https://buzzebees-dev.azure-api.net/api/campaign/{id}/redeem'
--header 'Content-Type: application/x-www-form-urlencoded; charset=utf-8'
--header 'Ocp-Apim-Subscription-Key: {Subscription-Key}'
--header 'Ocp-Apim-Trace: 1 '
--header 'App-Id: {App-Id}'
--header 'Authorization: token {token}'
{BzbsCampaign}.redeem { (result) in
if let error = result.error {
showError(error: error)
return
}
{BzbsPurchase} = result.purchase
if let campaignInfo = result.campaignUpdateInfo {
//TODO Update BzbsCampaign model
{BzbsCampaign} = BzbsCampaign(dict: campaignInfo)
}
if result.actionAfterRedeem == .openWebsite {
//TODO Open webView (in app)
} else {
//TODO Show Popup Serial
}
}
apiClient.campaignApi.redeem({CampaignID})
หลังจากเรียก API Redeem campaign เสร็จแล้วจะได้ข้อมูลจาก api Serial
ซึ่ง Serial นี้จะนำไป generate เป็น คิวอาร์โค้ด บาร์โค้ด หรือรหัส ตามแต่ละระบบที่ต้องการแสดงผล ดังตัวอย่าง และระบบจะทำการหักคะแนนอัตโนมัติตามแต่ละแคมเปญที่ต้องใช้ในการแลก
ถ้าเป็นแคมเปญ "รับคะแนน" จะไม่ต้องแสดงป๊อบอัพ Serial