feat: Flexion 先验签后消费支付流程 + playerId 绑定
实现 Flexion 渠道支付验签重构:支付成功后不立即消费,将 purchaseJson/signature/purchaseToken 回调至 Unity,由服务端 SHA1withRSA 验签并校验 developerPayload.playerId 后再调用 consume。 同步更新 SDKManager 接口、UnityBridgeFunc 桥接、TYSdkModel 字段及 ExtraPluginCfgs。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -57,19 +57,26 @@ public class SDKManager {
|
||||
private static SnsInfo tmpSnsInfo;
|
||||
private static String channel = "GooglePlay";
|
||||
|
||||
// Channel helper registry
|
||||
// Channel helper
|
||||
public interface ISDKHelper {
|
||||
void init(Activity activity);
|
||||
void pay(Activity activity, String productId, String productName,
|
||||
String productCount, String prodorderId, String appInfo);
|
||||
void queryProducts();
|
||||
void consume(String token);
|
||||
}
|
||||
|
||||
private static final java.util.Map<String, ISDKHelper> helperMap = new java.util.HashMap<>();
|
||||
private static ISDKHelper sdkHelper;
|
||||
|
||||
public static void registerHelper(String ch, ISDKHelper helper) {
|
||||
helperMap.put(ch, helper);
|
||||
public static void registerHelper(ISDKHelper helper) {
|
||||
sdkHelper = helper;
|
||||
}
|
||||
|
||||
public static void ConsumeFlexionPurchase(String token) {
|
||||
Log.i(TAG, "ConsumeFlexionPurchase: token=" + token);
|
||||
if (sdkHelper != null) {
|
||||
sdkHelper.consume(token);
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
@@ -79,7 +86,16 @@ public class SDKManager {
|
||||
public static void InitSDK(Activity activity, String ch) {
|
||||
channel = ChannelHelpers.CHANNEL;
|
||||
ChannelHelpers.register();
|
||||
sdkHelper = helperMap.get(channel);
|
||||
|
||||
// var builder = SDKManager.ExtendBuilder()
|
||||
// .WithChannel(SDKManagerExt.CHANNEL)
|
||||
// .WithInit(SDKManagerExt.GetInit())
|
||||
// .WithPay(SDKManagerExt.GetPay())
|
||||
// .WithQuery(SDKManagerExt.GetQuery())
|
||||
// .Builder()
|
||||
|
||||
|
||||
|
||||
Log.i(TAG, "[CHANNEL-VERIFY] Java InitSDK channel=" + channel
|
||||
+ " fromCSharp=" + ch
|
||||
+ " helper=" + (sdkHelper != null ? sdkHelper.getClass().getSimpleName() : "default"));
|
||||
@@ -87,7 +103,8 @@ public class SDKManager {
|
||||
// Sync channel to C# ChannelConfig
|
||||
UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME,
|
||||
"SetChannelFromNative", channel);
|
||||
|
||||
|
||||
// build.init(activity)
|
||||
if (sdkHelper != null) {
|
||||
sdkHelper.init(activity);
|
||||
} else {
|
||||
@@ -402,6 +419,7 @@ public class SDKManager {
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
public static void thirdExtend() {
|
||||
Log.e(TAG, "thirdExtend called, sdkHelper=" + (sdkHelper != null ? sdkHelper.getClass().getSimpleName() : "null"));
|
||||
if (sdkHelper != null) {
|
||||
sdkHelper.queryProducts();
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user