hexiaojie пре 7 месеци
родитељ
комит
1a6fa17122

+ 13 - 0
GameClient/Assets/Game/HotUpdate/Platform/AliPay/AliManager.cs

@@ -7,6 +7,11 @@ namespace GFGGame
 {
     public class AliManagerr : SingletonBase<AliManagerr>
     {
+        public void Init()
+        {
+            AliPayManagerInit.Instance.aliSDKListener = new AliPaySDKListener();
+        }
+        
         //支付宝支付
         public void Pay(string orderStr)
         {
@@ -35,6 +40,14 @@ namespace GFGGame
 
         public void VxPayReceiveAb(string message)
         {
+            if (message == "0")
+            {
+                ViewManager.Hide<StorePayPropView>(); 
+            }
+            else
+            {
+                PromptController.Instance.ShowFloatTextPrompt("支付失败");
+            }
             Debug.Log("Game.HotUpdate VxPayReceiveAb: " + message);
         }
     }

+ 2 - 0
GameClient/Assets/Game/HotUpdate/Platform/QDManager.cs

@@ -14,10 +14,12 @@ namespace GFGGame
             switch (LauncherConfig.ChannelId)
             {
                 case (int)ChannelID.Test:
+                    AliManagerr.Instance.Init();
                     QDShareManager.Instance.Init();
                     break;
                 case (int)ChannelID.DouYou:
                     //QDDouYouManager.Instance.Init();
+                    AliManagerr.Instance.Init();
                     QDShareManager.Instance.Init();
                     break;
                 case (int)ChannelID.DouYouDev:

+ 5 - 2
GameClient/Assets/Game/HotUpdate/Views/Store/StorePayPropView.cs

@@ -46,7 +46,9 @@ namespace GFGGame
             viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
 
             _ui.m_payVxBtn.onClick.Add(OnVxBtnBuyClick);
-            _ui.m_payAliBtn.onClick.Add(OnAliBtnBuyClick);
+            _ui.m_payAliBtn.visible = false;
+            //_ui.m_payAliBtn.onClick.Add(OnAliBtnBuyClick);
+            _ui.m_payClose.visible = false;
             _ui.m_payClose.onClick.Add(OnCloseClick);
         }
 
@@ -72,7 +74,7 @@ namespace GFGGame
             }
 
             string APP_ID = "wxd9772f42f126413f";
-            string MCH_ID = "200768907612";
+            string MCH_ID = "1685294597";
             string prepayid = response.PrepayIdStr;
             string packageValue = "Sign=WXPay";
             string noncestr = response.NonceStr;
@@ -95,6 +97,7 @@ namespace GFGGame
 
         private async void OnCloseClick()
         {
+           Hide();
         }
     }
 }

+ 4 - 0
GameClient/Assets/Plugins/Android/AndroidManifest.xml

@@ -28,6 +28,10 @@
 				<category android:name="android.intent.category.LAUNCHER" />
 			</intent-filter>
 		</activity>
+        <activity
+            android:name="com.wsj.Imgdt3.wxapi.WXPayEntryActivity"
+            android:exported="true"
+            android:launchMode="singleTop"/>
     </application>
 
 </manifest>

+ 0 - 2
GameClient/Assets/Plugins/com/easy/bridge/GFGMainActivity.java

@@ -64,8 +64,6 @@ public class GFGMainActivity extends UnityPlayerActivity
 
     public void WeChatPayReq(String APP_ID, String MCH_ID, String prepayid, String packageValue, String noncestr, String timestamp, String sign, String callBackObjectName, String CallBackFuncName) {
         wxAPI = WXAPIFactory.createWXAPI(this, APP_ID);
-        WXPayEntryActivity.GameObjectName = callBackObjectName;
-        WXPayEntryActivity.CallBackFuncName = CallBackFuncName;
         req.appId = APP_ID;
         req.partnerId = MCH_ID;
         req.prepayId = prepayid;

+ 176 - 176
GameClient/Assets/Plugins/com/easy/bridge/WXEntryActivity.java

@@ -1,176 +1,176 @@
-package com.wsj.Imgdt3;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.widget.Toast;
-
-import com.tencent.mm.opensdk.constants.ConstantsAPI;
-import com.tencent.mm.opensdk.modelbase.BaseReq;
-import com.tencent.mm.opensdk.modelbase.BaseResp;
-import com.tencent.mm.opensdk.modelbiz.SubscribeMessage;
-import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram;
-import com.tencent.mm.opensdk.modelbiz.WXOpenBusinessView;
-import com.tencent.mm.opensdk.modelbiz.WXOpenBusinessWebview;
-import com.tencent.mm.opensdk.modelmsg.SendAuth;
-import com.tencent.mm.opensdk.modelmsg.ShowMessageFromWX;
-import com.tencent.mm.opensdk.modelmsg.WXAppExtendObject;
-import com.tencent.mm.opensdk.modelmsg.WXMediaMessage;
-import com.tencent.mm.opensdk.openapi.IWXAPI;
-import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
-import com.tencent.mm.opensdk.openapi.WXAPIFactory;
-
-import java.lang.ref.WeakReference;
-
-public class WXEntryActivity extends Activity implements IWXAPIEventHandler{
-    private static String TAG = "MicroMsg.WXEntryActivity";
-
-    private IWXAPI api;
-    private MyHandler handler;
-    public static String wxAPPID = "wxd9772f42f126413f"; //可以设置成全局变量
-    private static class MyHandler extends Handler {
-        private final WeakReference<WXEntryActivity> wxEntryActivityWeakReference;
-
-        public MyHandler(WXEntryActivity wxEntryActivity){
-            wxEntryActivityWeakReference = new WeakReference<WXEntryActivity>(wxEntryActivity);
-        }
-
-        @Override
-        public void handleMessage(Message msg) {
-            int tag = msg.what;
-
-        }
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        api = WXAPIFactory.createWXAPI(this, wxAPPID, false);
-        handler = new MyHandler(this);
-
-        try {
-            Intent intent = getIntent();
-            api.handleIntent(intent, this);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Override
-    protected void onNewIntent(Intent intent) {
-        super.onNewIntent(intent);
-
-        setIntent(intent);
-        api.handleIntent(intent, this);
-    }
-
-    @Override
-    public void onReq(BaseReq req) {
-        switch (req.getType()) {
-            case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX:
-                goToGetMsg();
-                break;
-            case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:
-                goToShowMsg((ShowMessageFromWX.Req) req);
-                break;
-            default:
-                break;
-        }
-        finish();
-    }
-
-    @Override
-    public void onResp(BaseResp resp) {
-        int result = 0;
-
-        switch (resp.errCode) {
-            case BaseResp.ErrCode.ERR_OK:
-
-                break;
-            case BaseResp.ErrCode.ERR_USER_CANCEL:
-
-                break;
-            case BaseResp.ErrCode.ERR_AUTH_DENIED:
-
-                break;
-            case BaseResp.ErrCode.ERR_UNSUPPORT:
-
-                break;
-            default:
-                break;
-        }
-
-        Toast.makeText(this, getString(result) + ", type=" + resp.getType(), Toast.LENGTH_SHORT).show();
-
-
-        if (resp.getType() == ConstantsAPI.COMMAND_SUBSCRIBE_MESSAGE) {
-            SubscribeMessage.Resp subscribeMsgResp = (SubscribeMessage.Resp) resp;
-            String text = String.format("openid=%s\ntemplate_id=%s\nscene=%d\naction=%s\nreserved=%s",
-                    subscribeMsgResp.openId, subscribeMsgResp.templateID, subscribeMsgResp.scene, subscribeMsgResp.action, subscribeMsgResp.reserved);
-
-            Toast.makeText(this, text, Toast.LENGTH_LONG).show();
-        }
-
-        if (resp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {
-            WXLaunchMiniProgram.Resp launchMiniProgramResp = (WXLaunchMiniProgram.Resp) resp;
-            String text = String.format("openid=%s\nextMsg=%s\nerrStr=%s",
-                    launchMiniProgramResp.openId, launchMiniProgramResp.extMsg,launchMiniProgramResp.errStr);
-
-            Toast.makeText(this, text, Toast.LENGTH_LONG).show();
-        }
-
-        if (resp.getType() == ConstantsAPI.COMMAND_OPEN_BUSINESS_VIEW) {
-            WXOpenBusinessView.Resp launchMiniProgramResp = (WXOpenBusinessView.Resp) resp;
-            String text = String.format("openid=%s\nextMsg=%s\nerrStr=%s\nbusinessType=%s",
-                    launchMiniProgramResp.openId, launchMiniProgramResp.extMsg,launchMiniProgramResp.errStr,launchMiniProgramResp.businessType);
-
-            Toast.makeText(this, text, Toast.LENGTH_LONG).show();
-        }
-
-        if (resp.getType() == ConstantsAPI.COMMAND_OPEN_BUSINESS_WEBVIEW) {
-            WXOpenBusinessWebview.Resp response = (WXOpenBusinessWebview.Resp) resp;
-            String text = String.format("businessType=%d\nresultInfo=%s\nret=%d",response.businessType,response.resultInfo,response.errCode);
-
-            Toast.makeText(this, text, Toast.LENGTH_LONG).show();
-        }
-
-        if (resp.getType() == ConstantsAPI.COMMAND_SENDAUTH) {
-            SendAuth.Resp authResp = (SendAuth.Resp)resp;
-            final String code = authResp.code;
-
-        }
-        finish();
-    }
-
-    private void goToGetMsg() {
-        // Intent intent = new Intent(this, GetFromWXActivity.class);
-        //  intent.putExtras(getIntent());
-        //  startActivity(intent);
-        finish();
-    }
-
-    private void goToShowMsg(ShowMessageFromWX.Req showReq) {
-        WXMediaMessage wxMsg = showReq.message;
-        WXAppExtendObject obj = (WXAppExtendObject) wxMsg.mediaObject;
-
-        StringBuffer msg = new StringBuffer();
-        msg.append("description: ");
-        msg.append(wxMsg.description);
-        msg.append("\n");
-        msg.append("extInfo: ");
-        msg.append(obj.extInfo);
-        msg.append("\n");
-        msg.append("filePath: ");
-        msg.append(obj.filePath);
-
-        //       Intent intent = new Intent(this, ShowFromWXActivity.class);
-        //      intent.putExtra(Constants.ShowMsgActivity.STitle, wxMsg.title);
-        //      intent.putExtra(Constants.ShowMsgActivity.SMessage, msg.toString());
-        //       intent.putExtra(Constants.ShowMsgActivity.BAThumbData, wxMsg.thumbData);
-        //       startActivity(intent);
-        finish();
-    }
-}
+// package com.wsj.Imgdt3;
+
+// import android.app.Activity;
+// import android.content.Intent;
+// import android.os.Bundle;
+// import android.os.Handler;
+// import android.os.Message;
+// import android.widget.Toast;
+
+// import com.tencent.mm.opensdk.constants.ConstantsAPI;
+// import com.tencent.mm.opensdk.modelbase.BaseReq;
+// import com.tencent.mm.opensdk.modelbase.BaseResp;
+// import com.tencent.mm.opensdk.modelbiz.SubscribeMessage;
+// import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram;
+// import com.tencent.mm.opensdk.modelbiz.WXOpenBusinessView;
+// import com.tencent.mm.opensdk.modelbiz.WXOpenBusinessWebview;
+// import com.tencent.mm.opensdk.modelmsg.SendAuth;
+// import com.tencent.mm.opensdk.modelmsg.ShowMessageFromWX;
+// import com.tencent.mm.opensdk.modelmsg.WXAppExtendObject;
+// import com.tencent.mm.opensdk.modelmsg.WXMediaMessage;
+// import com.tencent.mm.opensdk.openapi.IWXAPI;
+// import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
+// import com.tencent.mm.opensdk.openapi.WXAPIFactory;
+
+// import java.lang.ref.WeakReference;
+
+// public class WXEntryActivity extends Activity implements IWXAPIEventHandler{
+//     private static String TAG = "MicroMsg.WXEntryActivity";
+
+//     private IWXAPI api;
+//     private MyHandler handler;
+//     public static String wxAPPID = "wxd9772f42f126413f"; //可以设置成全局变量
+//     private static class MyHandler extends Handler {
+//         private final WeakReference<WXEntryActivity> wxEntryActivityWeakReference;
+
+//         public MyHandler(WXEntryActivity wxEntryActivity){
+//             wxEntryActivityWeakReference = new WeakReference<WXEntryActivity>(wxEntryActivity);
+//         }
+
+//         @Override
+//         public void handleMessage(Message msg) {
+//             int tag = msg.what;
+
+//         }
+//     }
+
+//     @Override
+//     public void onCreate(Bundle savedInstanceState) {
+//         super.onCreate(savedInstanceState);
+
+//         api = WXAPIFactory.createWXAPI(this, wxAPPID, false);
+//         handler = new MyHandler(this);
+
+//         try {
+//             Intent intent = getIntent();
+//             api.handleIntent(intent, this);
+//         } catch (Exception e) {
+//             e.printStackTrace();
+//         }
+//     }
+
+//     @Override
+//     protected void onNewIntent(Intent intent) {
+//         super.onNewIntent(intent);
+
+//         setIntent(intent);
+//         api.handleIntent(intent, this);
+//     }
+
+//     @Override
+//     public void onReq(BaseReq req) {
+//         switch (req.getType()) {
+//             case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX:
+//                 goToGetMsg();
+//                 break;
+//             case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:
+//                 goToShowMsg((ShowMessageFromWX.Req) req);
+//                 break;
+//             default:
+//                 break;
+//         }
+//         finish();
+//     }
+
+//     @Override
+//     public void onResp(BaseResp resp) {
+//         int result = 0;
+
+//         switch (resp.errCode) {
+//             case BaseResp.ErrCode.ERR_OK:
+
+//                 break;
+//             case BaseResp.ErrCode.ERR_USER_CANCEL:
+
+//                 break;
+//             case BaseResp.ErrCode.ERR_AUTH_DENIED:
+
+//                 break;
+//             case BaseResp.ErrCode.ERR_UNSUPPORT:
+
+//                 break;
+//             default:
+//                 break;
+//         }
+
+//         Toast.makeText(this, getString(result) + ", type=" + resp.getType(), Toast.LENGTH_SHORT).show();
+
+
+//         if (resp.getType() == ConstantsAPI.COMMAND_SUBSCRIBE_MESSAGE) {
+//             SubscribeMessage.Resp subscribeMsgResp = (SubscribeMessage.Resp) resp;
+//             String text = String.format("openid=%s\ntemplate_id=%s\nscene=%d\naction=%s\nreserved=%s",
+//                     subscribeMsgResp.openId, subscribeMsgResp.templateID, subscribeMsgResp.scene, subscribeMsgResp.action, subscribeMsgResp.reserved);
+
+//             Toast.makeText(this, text, Toast.LENGTH_LONG).show();
+//         }
+
+//         if (resp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {
+//             WXLaunchMiniProgram.Resp launchMiniProgramResp = (WXLaunchMiniProgram.Resp) resp;
+//             String text = String.format("openid=%s\nextMsg=%s\nerrStr=%s",
+//                     launchMiniProgramResp.openId, launchMiniProgramResp.extMsg,launchMiniProgramResp.errStr);
+
+//             Toast.makeText(this, text, Toast.LENGTH_LONG).show();
+//         }
+
+//         if (resp.getType() == ConstantsAPI.COMMAND_OPEN_BUSINESS_VIEW) {
+//             WXOpenBusinessView.Resp launchMiniProgramResp = (WXOpenBusinessView.Resp) resp;
+//             String text = String.format("openid=%s\nextMsg=%s\nerrStr=%s\nbusinessType=%s",
+//                     launchMiniProgramResp.openId, launchMiniProgramResp.extMsg,launchMiniProgramResp.errStr,launchMiniProgramResp.businessType);
+
+//             Toast.makeText(this, text, Toast.LENGTH_LONG).show();
+//         }
+
+//         if (resp.getType() == ConstantsAPI.COMMAND_OPEN_BUSINESS_WEBVIEW) {
+//             WXOpenBusinessWebview.Resp response = (WXOpenBusinessWebview.Resp) resp;
+//             String text = String.format("businessType=%d\nresultInfo=%s\nret=%d",response.businessType,response.resultInfo,response.errCode);
+
+//             Toast.makeText(this, text, Toast.LENGTH_LONG).show();
+//         }
+
+//         if (resp.getType() == ConstantsAPI.COMMAND_SENDAUTH) {
+//             SendAuth.Resp authResp = (SendAuth.Resp)resp;
+//             final String code = authResp.code;
+
+//         }
+//         finish();
+//     }
+
+//     private void goToGetMsg() {
+//         // Intent intent = new Intent(this, GetFromWXActivity.class);
+//         //  intent.putExtras(getIntent());
+//         //  startActivity(intent);
+//         finish();
+//     }
+
+//     private void goToShowMsg(ShowMessageFromWX.Req showReq) {
+//         WXMediaMessage wxMsg = showReq.message;
+//         WXAppExtendObject obj = (WXAppExtendObject) wxMsg.mediaObject;
+
+//         StringBuffer msg = new StringBuffer();
+//         msg.append("description: ");
+//         msg.append(wxMsg.description);
+//         msg.append("\n");
+//         msg.append("extInfo: ");
+//         msg.append(obj.extInfo);
+//         msg.append("\n");
+//         msg.append("filePath: ");
+//         msg.append(obj.filePath);
+
+//         //       Intent intent = new Intent(this, ShowFromWXActivity.class);
+//         //      intent.putExtra(Constants.ShowMsgActivity.STitle, wxMsg.title);
+//         //      intent.putExtra(Constants.ShowMsgActivity.SMessage, msg.toString());
+//         //       intent.putExtra(Constants.ShowMsgActivity.BAThumbData, wxMsg.thumbData);
+//         //       startActivity(intent);
+//         finish();
+//     }
+// }

+ 13 - 70
GameClient/Assets/Plugins/com/easy/bridge/WXPayEntryActivity.java

@@ -1,13 +1,10 @@
-package com.wsj.Imgdt3;
+package com.wsj.Imgdt3.wxapi;
 
 import android.app.Activity;
-import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.util.Log;
-import android.widget.Toast;
 
-import com.tencent.mm.opensdk.constants.ConstantsAPI;
 import com.tencent.mm.opensdk.modelbase.BaseReq;
 import com.tencent.mm.opensdk.modelbase.BaseResp;
 import com.tencent.mm.opensdk.openapi.IWXAPI;
@@ -15,87 +12,33 @@ import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
 import com.tencent.mm.opensdk.openapi.WXAPIFactory;
 import com.unity3d.player.UnityPlayer;
 
-
 public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{
 
-    public static String GameObjectName;
-    public static String CallBackFuncName;
-
-    private static final String TAG = "WXPayEntryActivity";
+    //根据其他开发者反馈的问题返回商户白屏时,给出加一个连接的解决方式
     private IWXAPI api;
-    public static String wxAPPID = "wxd9772f42f126413f";		// 在调用微信支付处,设置该变量值
+    public static String wxAPPID = "wxd9772f42f126413f";
 
     @Override
-    public void onCreate(Bundle savedInstanceState)
-    {
+    public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-
-        // setContentView(R.layout.wx_pay_result);
-        //
-
         api = WXAPIFactory.createWXAPI(this, wxAPPID);
         api.handleIntent(getIntent(), this);
-        //UnityPlayer.UnitySendMessage(GameObjectName,CallBackFuncName,"微信API_ING");
     }
-
+    //白屏时加的连接
     @Override
-    protected void onNewIntent(Intent intent)
-    {
+    protected void onNewIntent(Intent intent) {
         super.onNewIntent(intent);
         setIntent(intent);
-
-        api.handleIntent(intent, this);
+        api.handleIntent(intent,this);
     }
-
     @Override
-    public void onReq(BaseReq req)
-    {
-
+    public void onReq(BaseReq req) {
     }
-
-
-    /** 微信返回支付结果,会调用该函数*/
     @Override
-    public void onResp(BaseResp resp)
-    {
-        showText("onPayFinish, errCode = " + resp.errCode);
-
-        if (resp.errCode != 0 && resp.errCode != -2)
-        {
-            showToast(this, "微信支付失败, errCode:" + resp.errCode);
-        }
-
-        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX)
-        {
-            // AlertDialog.Builder builder = new AlertDialog.Builder(this);
-            // builder.setTitle("提示");
-            // builder.setMessage("微信支付结果:" + resp.errCode);
-            // builder.show();
-
-            if(resp.errCode == 0)
-            {
-                // PaySuccess(this);	// 可在此处,添加应用自己的支付结果统计相关逻辑
-                showToast(this, "微信支付成功");
-            }
-            else if(resp.errCode == -2) showToast(this, "用户取消支付");
-            else showToast(this, "支付失败,其他异常情形" );
-        }
-        showToast(this, GameObjectName + "," + CallBackFuncName );
-        UnityPlayer.UnitySendMessage(GameObjectName, CallBackFuncName, "" + resp.errCode);
-        this.finish();
-    }
-
-
-    /** 输出log信息 */
-    public static void showText(final String info)
-    {
-        Log.d(TAG, info);
-    }
-
-    /** 输出Toast消息 */
-    private void showToast(Context context, final String info)
-    {
-        Toast.makeText(context, info, Toast.LENGTH_SHORT).show();
-        Log.d(TAG, info);
+    public void onResp(BaseResp resp) {
+        String result = resp.errCode+"";
+        UnityPlayer.UnitySendMessage("AliPayGameObject", "VxPayReceive", result);
+        Log.d("WXPayEntryActivity", "weixin回调, errCode = " + resp.errCode);
+        finish();
     }
 }

+ 1 - 0
GameClient/GameClient.sln.DotSettings.user

@@ -1,3 +1,4 @@
 <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
+	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AAndroidJavaObject_002Ecs_002Fl_003AC_0021_003FUsers_003Fss510_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F472adee905604045aa2c822838c8be7811000_003Fa9_003F7c1a2e35_003FAndroidJavaObject_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AEditorUtility_002Ecs_002Fl_003AC_0021_003FUsers_003Fss510_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F8d4895b259be41298a685a0c9b42357576b400_003F3f_003Fa805acc1_003FEditorUtility_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
 	</wpf:ResourceDictionary>