inappData: Các thông tin về gói mua, gồm id, purchase token, tên gói, mốc tiến trình mua gói, adid, loại user IAP
onSuccess: Hàm được thực hiện khi gói mua hợp lệ.
onFail: Hàm được thực hiện khi gói mua không hợp lệ
Code mẫu:
string targetLevel ="3"; // Là level cao nhất mà user chưa vượt qua đượcstring productId ="com.cscmobi.cana.islands.tier2";string purchaseToken = "bonlghknnoigpaegpeamnppf.AO-J1OzxViPPvXq9ZnZWF6w0DsHBCkRKkMibnrC2aOZwUC4lKvtURI4CPC_myA0C_Rpz4dRhbaNEMS2Pw2spYKdwNjWQWeiZKwNPuNtNyknKwg0KrQrRJKk";
string productName ="piggy_bank"; // Là Tên gói nạp IAP, Có thể bỏ trốngstring group = ""; //Tên nhóm, phục vụ cho A/B test, hoặc các level có state khác nhau.. Ví dụ tệp userA, userB, state0, state1...
string subGroup=""; // Tên nhóm, như group nhưng ở quy mô nhỏ hơnstring userType ="2"; // Là loại user. Có thể bỏ trốngstring adid =""; // Là Adjust Id (Sample: Adjust.getAdid()). Có thể bỏ trốngGSM.Validator.Inapp.InappData data = new GSM.Validator.Inapp.InappData(targetLevel, productId, purchaseToken, productName, group, userType, adid, subGroup);
GSM.Validator.Inapp.Check(data, () =>Debug.Log("Valid purchase"), () =>{Debug.LogError("Invalid purchase");});
Lưu ý:
Phía game không được phụ thuộc vào kết quả trả về để trả phần thưởng cho user. Vì nếu server lỗi, thì toàn bộ user sẽ không nhận được thưởng gây ra phản hồi tiêu cực của user.
Cách lấy các thông tin được sử dụng trong API ValidateIAP
Code mẫu:
usingUnityEngine.Purchasing;usingUnityEngine.Purchasing.Extension; [SerializedField] IAPButton iapButton;privatevoidStart() {iapButton.onPurchaseComplete.AddListener(OnCompletePurchase); }publicvoidOnCompletePurchase(Product product)//handle effect {var wrapper = (Dictionary<string,object>)MiniJson.JsonDecode(product.receipt);#if UNITY_IOSvar purchaseToken = (string)wrapper["Payload"];#elif UNITY_ANDROIDvar purchaseToken = (string)wrapper["TransactionID"];#endifint targetLevel =<your targetLevel>; // Là level cao nhất mà user chưa vượt qua đượcstring productId =product.definition.id;string productName =<productName>; // Là Tên gói nạp IAP do game định nghĩa, Có thể bỏ trống string group = ""; //Tên nhóm, phục vụ cho A/B test, hoặc các level có state khác nhau.. Ví dụ tệp userA, userB, state0, state1...
string subGroup=""; // Tên nhóm, như group nhưng ở quy mô nhỏ hơnstring userType =<typeUser>; // Là loại user. Có thể bỏ trốngstring adid =Adjust.getAdid(); // Là Adjust Id (Sample: Adjust.getAdid()). Có thể bỏ trống GSM.Validator.Inapp.InappData data = new GSM.Validator.Inapp.InappData(targetLevel, productId, purchaseToken, productName, group, userType, adid, subGroup);
GSM.Validator.Inapp.Check(data, () =>Debug.Log("Valid purchase"), () => {Debug.LogError("Invalid purchase"); }); }
2. Cập nhật tiến trình IAP
2.1 Tạo một Id giao dịch (orderId)
Code mẫu:
System.Guid newGuid =System.Guid.NewGuid();string orderId =newGuid.ToString(); //Id giao dịch
2.2 Bắt đầu một IAP
Khi user nhấn vào nút mua 1 gói IAP nào đó, thì game gửi lên server trạng thái start 1 iap
Code mẫu:
GSM.Analytics.GSMAnalytics.LogEvent("iap_progress",newGSM.Models.Parameter[]{newGSM.Models.Parameter("orderId","{orderId}"),//Id giao dịchnewGSM.Models.Parameter("productName","{tên gói nạp}"),newGSM.Models.Parameter("status",-1) // -1 là thể hiện trạng thái bắt đầu 1 IAP});
2.3 Khi IAP thành công
Sau khi người chơi hoàn thành việc mua IAP, thì game gửi lên trạng thái thành công
Code mẫu:
GSM.Analytics.GSMAnalytics.LogEvent("iap_progress",newGSM.Models.Parameter[]{newGSM.Models.Parameter("orderId","{orderId}"),//Id giao dịchnewGSM.Models.Parameter("storeOrderId","{storeOrderId}"),// Là Id giao dịch của store trả về khi IAP thành côngnewGSM.Models.Parameter("productName","{tên gói nạp}"),newGSM.Models.Parameter("status",8) // 8 là thể hiện việc mua IAP thành công});
2.4 Khi IAP bị fail
Trong quá trình thực hiện 1 IAP bị fail vì 1 lý do gì đó, thì client cần gửi lên tiến trình đang fail ở đâu
data: Các thông tin về gói subcription, gồm id, purchase token, tên gói, mốc tiến trình mua gói, adid, loại user
onSuccess: Hàm được thực hiện khi gói subcription hợp lệ.
onFail: Hàm được thực hiện khi gói subcription không hợp lệ
Code mẫu:
string targetLevel ="3"; // Là level cao nhất mà user chưa vượt qua đượcstring productId ="com.cscmobi.cana.islands.tier2";string purchaseToken = "bonlghknnoigpaegpeamnppf.AO-J1OzxViPPvXq9ZnZWF6w0DsHBCkRKkMibnrC2aOZwUC4lKvtURI4CPC_myA0C_Rpz4dRhbaNEMS2Pw2spYKdwNjWQWeiZKwNPuNtNyknKwg0KrQrRJKk";
string productName ="piggy_bank"; // Là Tên gói nạp Subcription, Có thể bỏ trốngstring group = ""; //Tên nhóm, phục vụ cho A/B test, hoặc các level có state khác nhau.. Ví dụ tệp userA, userB, state0, state1...
string subGroup=""; // Tên nhóm, như group nhưng ở quy mô nhỏ hơnstring userType ="2"; // Là loại user. Có thể bỏ trốngstring adid =""; // Là Adjust Id (Sample: Adjust.getAdid()). Có thể bỏ trốngGSM.Validator.Subcription.SubcriptionData data = new GSM.Validator.Subcription.SubcriptionData(targetLevel, productId, purchaseToken, productName, group, userType, adid);
GSM.Validator.Subcription.Check(data, () =>Debug.Log("Valid subcription"), () =>{Debug.LogError("Invalid subcription");});
Lưu ý:
Phía game không được phụ thuộc vào kết quả trả về để trả phần thưởng cho user. Vì nếu server lỗi, thì toàn bộ user sẽ không nhận được thưởng gây ra phản hồi tiêu cực của user.