.NET 5에서 Microsoft Store 인앱 결제 API를 호출하는 방법

4863 단어 C#.NETWPF
시도해 보면 움직일 것 같은 레벨의 내용입니다.

인앱 결제의 API를 MSIX화한 WPF나 WinForms 등의 앱에서 호출하려면 IInitializeWithWindow 라는 인터페이스를 스스로 만들어 캐스팅하고 있습니다.

인앱 결제 API를 실제로 시도하는 것은 약간 무거워서 .NET 5에서 WPF 앱을 만들고 Target Framework Monikers에 net5.0-windows10.0.19041.0을 지정하여 호출하는 데 동일한 단계가 필요합니다. FileOpenPicker 클래스에서 시도해 봤는데 Initialize 인터페이스로의 캐스트에 실패했습니다.



그럼 어떻게 할까? 라는 느낌입니다만 IInitializeWithWindow 를 추가해 using WinRT; 메소드로 As<T> 에 캐스트 해 주면 됩니다.
using System;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Interop;
using Windows.Storage.Pickers;
using WinRT;

namespace WpfApp2
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            var picker = new FileOpenPicker();
            // It doesn't work on .NET 5
            // ((IInitializeWithWindow)(object)picker).Initialize(...);
            var w = picker.As<IInitializeWithWindow>();
            w.Initialize(new WindowInteropHelper(this).Handle);

            picker.FileTypeFilter.Add(".png");
            var file = await picker.PickSingleFileAsync();
            MessageBox.Show(file?.Name ?? "not selected");
        }
    }

    [ComImport]
    [Guid("3E68D4BD-7135-4D10-8018-9FB6D9F33FA1")]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IInitializeWithWindow
    {
        void Initialize(IntPtr hwnd);
    }
}

같은 요령으로 인앱 과금의 API도 두드릴 것 같다는 분위기.

좋은 웹페이지 즐겨찾기