/// <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;
}
}
}
.NET C# IOS內(nèi)購支付功能
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門中姜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人跟伏,你說我怎么就攤上這事丢胚。” “怎么了受扳?”我有些...
- 文/不壞的土叔 我叫張陵携龟,是天一觀的道長。 經(jīng)常有香客問我勘高,道長峡蟋,這世上最難降的妖魔是什么坟桅? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮蕊蝗,結(jié)果婚禮上仅乓,老公的妹妹穿的比我還像新娘。我一直安慰自己匿又,他們只是感情好方灾,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著碌更,像睡著了一般裕偿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上痛单,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼忽匈!你這毒婦竟也來了房午?” 一聲冷哼從身側(cè)響起,我...
- 正文 年R本政府宣布,位于F島的核電站该抒,受9級特大地震影響慌洪,放射性物質(zhì)發(fā)生泄漏顶燕。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一冈爹、第九天 我趴在偏房一處隱蔽的房頂上張望涌攻。 院中可真熱鬧,春花似錦频伤、人聲如沸恳谎。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽因痛。三九已至,卻和暖如春岸更,著一層夾襖步出監(jiān)牢的瞬間鸵膏,已是汗流浹背。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- iOS微信支付 ios 微信支付[http://www.reibang.com/p/a3cc23db1464] ...
- 猶豫了很久就要購買Surge3 pro 的時候秸抚,出現(xiàn)了這個提示速和,一下熱情就下去了。這個提示還去百度了一下剥汤,基本很少...
- 本想開代理抓包測試一下內(nèi)購那塊吭敢,可試了半天內(nèi)購時候都連接不到蘋果服務(wù)器碰凶,最后關(guān)了手機(jī)代理才能連接成功。開著代理無法...
- 1. 什么情況下需要使用內(nèi)購支付 我覺得蘋果是看商品的成本鹿驼,如果商品是實物欲低,購買必然需要成本,那就不需要使用內(nèi)購支...