.NET C# IOS內(nèi)購支付功能

 /// <summary>
  /// 蘋果內(nèi)購支付
  /// </summary>
  public class ApplePay
  {
    /// <summary>
    /// 蘋果驗證支付
    /// </summary>
    /// <param name="appleReceipt">蘋果內(nèi)購的驗證收據(jù)</param>
    /// <param name="orderCode">訂單號</param>
    /// <returns></returns>
    public string ValidateApplePay(string appleReceipt, string orderCode)
    {
      try
      {
        //客戶端post過來的參數(shù)
        //string appleReceipt = HttpContext.Current.Request.Form["appleReceipt"]; //蘋果內(nèi)購的驗證收據(jù)
        //string orderCode = HttpContext.Current.Request.Form["orderCode"];       //訂單號

        // 驗證參數(shù)
        if (appleReceipt.Length < 20)
        {
          return "false";
        }

        string strJosn = string.Format("{{\"receipt-data\":\"{0}\"}}", appleReceipt);
        // 請求驗證
        string strResult = CreatePostHttpResponse(strJosn, System.Convert.ToBoolean(ConfigurationManager.AppSettings["PayEnvironment"]));
        JObject obj = JObject.Parse(strResult);//using Newtonsoft.Json.Linq;

        // 判斷是否購買成功
        #region 蘋果內(nèi)購服務(wù)器驗證碼
        if (obj["status"].ToString() == "0")
        {
          return "true";
        }
        else if (obj["status"].ToString() == "1")
        {
          return "憑據(jù)不在白名單之內(nèi)";
        }
        else if (obj["status"].ToString() == "2")
        {
          return "偽造充值";
        }
        else if (obj["status"].ToString() == "3")
        {
          return "憑據(jù)不存在偽造充值";
        }
        else if (obj["status"].ToString() == "4")
        {
          return "支付時間過期";
        }
        else if (obj["status"].ToString() == "6")
        {
          return "非法憑據(jù)";
        }
        else if (obj["status"].ToString() == "21000")
        {
          return "App Store無法讀取你提供的JSON數(shù)據(jù)";
        }
        else if (obj["status"].ToString() == "21002")
        {
          return "收據(jù)數(shù)據(jù)不符合格式";
        }
        else if (obj["status"].ToString() == "21003")
        {
          return "收據(jù)無法被驗證";
        }
        else if (obj["status"].ToString() == "21004")
        {
          return "你提供的共享密鑰和賬戶的共享密鑰不一致";
        }
        else if (obj["status"].ToString() == "21005")
        {
          return "收據(jù)服務(wù)器當(dāng)前不可用";
        }
        else if (obj["status"].ToString() == "21006")
        {
          return "收據(jù)是有效的,但訂閱服務(wù)已經(jīng)過期允坚。當(dāng)收到這個信息時,解碼后的收據(jù)信息也包含在返回內(nèi)容中";
        }
        else if (obj["status"].ToString() == "21007")
        {
          return "收據(jù)信息是測試用(sandbox),但卻被發(fā)送到產(chǎn)品環(huán)境中驗證";
        }
        else if (obj["status"].ToString() == "21008")
        {
          return "收據(jù)信息是產(chǎn)品環(huán)境中使用,但卻被發(fā)送到測試環(huán)境中驗證";
        }
        else
        {
          return "false";
        }
        #endregion
      }
      catch (System.Exception)
      {
        return null;
      }
    }
    /// <summary>
    /// 請求蘋果支付
    /// </summary>
    /// <param name="datas">strJosn 支付單據(jù)</param>
    /// <param name="isUrl">是否開啟正式模式(默認(rèn)false)</param>
    /// <returns></returns>
    public string CreatePostHttpResponse(string datas, bool isUrl = false)
    {
      try
      {
        //正式購買地址 沙盒購買地址
        string url_buy = "https://buy.itunes.apple.com/verifyReceipt";
        string url_sandbox = "https://sandbox.itunes.apple.com/verifyReceipt";
        string url = isUrl == false ? 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();   //獲取響應(yīng)的字符串流
        StreamReader sr = new StreamReader(responseStream); //創(chuàng)建一個stream讀取流

        var str = sr.ReadToEnd();
        sr.Close();
        responseStream.Close();
        return str.ToString();
      }
      catch (System.Exception)
      {
        return string.Empty;
      }
    }
  }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末该窗,一起剝皮案震驚了整個濱河市危虱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌翼馆,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件金度,死亡現(xiàn)場離奇詭異应媚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)猜极,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門中姜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人跟伏,你說我怎么就攤上這事丢胚。” “怎么了受扳?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵携龟,是天一觀的道長。 經(jīng)常有香客問我勘高,道長峡蟋,這世上最難降的妖魔是什么坟桅? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮蕊蝗,結(jié)果婚禮上仅乓,老公的妹妹穿的比我還像新娘。我一直安慰自己匿又,他們只是感情好方灾,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著碌更,像睡著了一般裕偿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上痛单,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天嘿棘,我揣著相機(jī)與錄音,去河邊找鬼旭绒。 笑死鸟妙,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的挥吵。 我是一名探鬼主播重父,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼忽匈!你這毒婦竟也來了房午?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤丹允,失蹤者是張志新(化名)和其女友劉穎郭厌,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雕蔽,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡折柠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了批狐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扇售。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖嚣艇,靈堂內(nèi)的尸體忽然破棺而出缘眶,到底是詐尸還是另有隱情,我是刑警寧澤髓废,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站该抒,受9級特大地震影響慌洪,放射性物質(zhì)發(fā)生泄漏顶燕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一冈爹、第九天 我趴在偏房一處隱蔽的房頂上張望涌攻。 院中可真熱鬧,春花似錦频伤、人聲如沸恳谎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽因痛。三九已至,卻和暖如春岸更,著一層夾襖步出監(jiān)牢的瞬間鸵膏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工怎炊, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留谭企,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓评肆,卻偏偏與公主長得像债查,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瓜挽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容