C# [IPA]IOS In App Purchase(內購)驗證(asp.net 版本)

之前沒有做過IOS 內購服務器驗證這塊,所以找了不少參考資料,網上大多php和java版本,然後自己搞了一個C#版本,希望能給大家一些參考,下面步入正題

在客戶端向蘋果購買成功之後,我們需要進行二次驗證。

IOS在沙箱環境下購買成功之後,向蘋果進行二次驗證,確認用戶是否購買成功。

當應用向Apple服務器請求購買,成功之後,Apple會返回以下四個數據給應用


 public bool ValidateApplePay()
        {
              
            //客戶端post過來的參數
            string appleReceipt = Request.Form["appleReceipt"]; //蘋果內購的驗證收據
            string orderId = PayHelper.GetOrderIDByPrefix("AP");  //訂單編號
            string amount = Request.Form["amount"];             //金額
            string userId = Request.Form["userId"];             //用戶UserID
            
            // 驗證參數
            if (appleReceipt.Length < 20)
            {
                return false;
            }

            string strJosn = string.Format("{{\"receipt-data\":\"{0}\"}}", appleReceipt);
            // 請求驗證
            string strResult = CreatePostHttpResponse(strJosn, isSandbox);
            JObject obj = JObject.Parse(strResult);//using Newtonsoft.Json.Linq;

            // 判斷是否購買成功
            if (obj["status"].ToString() == "0")
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    public string CreatePostHttpResponse(string datas, bool isSandbox = false)
        {
            //正式購買地址 沙盒購買地址
            string url_buy = "https://buy.itunes.apple.com/verifyReceipt";
            string url_sandbox = "https://sandbox.itunes.apple.com/verifyReceipt";
            string url = isSandbox ? url_sandbox : url_buy;

            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
            request.ProtocolVersion = HttpVersion.Version10;
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            byte[] data = Encoding.GetEncoding("UTF-8").GetBytes(datas.ToString());
            using (Stream stream = request.GetRequestStream())
            {
                stream.Write(data, 0, data.Length);
            }

            HttpWebResponse response = request.GetResponse() as HttpWebResponse;
            Stream responseStream = response.GetResponseStream();   //獲取響應的字符串流
            StreamReader sr = new StreamReader(responseStream); //創建一個stream讀取流
            var str = sr.ReadToEnd();
            sr.Close();
            responseStream.Close();
            return str.ToString();
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章