ข้อมูลรายละเอียดต่างๆ ของ campaign ได้แก่ คะแนนที่ต้องใช้ในการแลกรางวัล วันหมดอายุคูปอง ชื่อ campaign รายละเอียดหรือ เงื่อนไขในการแลกรางวัล ประเภทของ campaign และอื่นๆ เป็นต้น โดยข้อมูลรายละเอียดดังกล่าวสามารถสร้างได้ใน BOF

Campaign Type
Campaign type แบ่งออกได้หลายประเภท เช่น free, draw, deal, buy, interface และอื่นๆ โดยมีวิธีการแสดงผลต่างๆ ดังตารางด้านล่าง
| TypeID | รายละเอียด | รูปแบบการ redeem | หมายเหตุ |
|---|---|---|---|
| 0 | Draw | Popup redeem success | - |
| 1 | Free | Popup Serial | ไม่มีเวลาหมดอายุ |
| 2 | Deal | Popup Serial | - |
| 3 | Buy | Add to cart | ไม่ต้องเรียกใช้ API Redeem (เพิ่มเติม) |
| 8 | Interface | เปิดหน้า webView | - |
API Campaign detail
ข้อมูลรายละเอียดต่างๆของ campaign จะได้ตาม configuration ที่ตั้งต่าไว้ใน BOF
BzbsCampaignApis.detail(campaignId: {campaignId}) { (result) in
if let error = result.error {
fail(error)
return
}
if result.isSuccess {
success(result.campaign)
}
}
apiClient.campaignApi.campaignDetails(id = {CampaignID})
ผลลัพธ์ที่ได้จะส่งค่ากลับมาเป็น CampaignDetailAPIResult ถ้า result success จะได้ข้อมูลที่เป็น BzbsCampaign model โดยข้อมูลที่จำเป็นต้องใช้ได้แก่ campaignType จะส่งมาเป็น enum => BzbsCampaignType และ ID เพื่อใช้ในการ redeem campaign ในขั้นตอนถัดไป
Redeem campaign
เงื่อนไขการ Redeem campaign
- ก่อนการ redeem จะต้องทำการเช็คว่าผู้ใช้สามารถแลกสิทธิ์ campaign นั้นๆ ได้หรือไม่ ในกรณีที่
isConditionPass == falseให้เช็คconditionAlertIDเพื่อที่จะนำข้อมูลมาใช้ lock ปุ่ม redeem หรือ handle message บนปุ่ม ซึ่งแต่ละ ID จะมีความหมายดังตารางด้านล่าง
| conditionAlertID | รายละเอียด |
|---|---|
| 1 | มีผู้ใช้สิทธิ์เต็มจำนวนแล้ว |
| 2 | คุณได้แลกรับสิทธิ์นี้แล้ว |
| 3 | คุณได้แลกรับสิทธิ์นี้แล้ว |
| 1409 | สินค้านี้หมดอายุแล้ว |
| 1403 | เงื่อนไขไม่ตรงกับที่ระบุ |
สถานะดังกล่าว ถ้าไม่ได้มีการเช็คก่อน API จะทำการส่งค่า
APIErrorกลับมาให้
เมื่อได้รายละเอียดข้อมูล campaign และเช็คเงื่อนไขต่างๆ เรียบร้อยแล้ว เราอาจจะสร้างป๊อปอัพยืนการแลกรางวัล เพื่อทำการ verify user อีกครั้ง ก่อนการเรียก API Redeem campaign
API Redeem campaign
วิธีการแลกรางวัล campaign สามารถเรียก API redeem ได้จาก function ใน BzbsCampaign model
{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 เสร็จแล้วจะได้ข้อมูลกลับมาเป็น BzbsHistoryAPIResult ให้ทำการอัพเดทข้อมูลของ campaign โดยเอาค่าจาก result.campaignUpdateInfo และ result.purchase เพื่อใช้ในการแสดงผลของ campaign แต่ละประเภท ดังตารางที่ได้กล่าวไปข้างต้น ซึ่งแต่ละ type จะนำข้อมูลเบื้องต้นดังนี้ไปใช้
- Draw:
expireDate= แสดงผลวันประกาศผลรางวัล - Free และ Deal:
serial= รหัสแลกรางวัลexpireIn= เวลาหมดอายุของรหัสredeemDate= วันที่แลกรางวัลdefaultPrivilegeMessage= message เพื่อใช้สำหรับแสดงรายละเอียด ตาม configuration ใน BOFbarcode= default tab ในการแสดง code สามารถตั้งค่าได้ใน BOF - Buy:
Skip (เพิ่มเติม) - Interface:
urlจาก function ในBzbsCampaignmodel{BzbsCampaign}.getInterfaceUrl(appScheme: "\({AppScheme})")สำหรับใช้ render ในหน้า webView