zoukankan      html  css  js  c++  java
  • 苹果内购支付对接

    1. public bool ValidateApplePay()  
    2.        {  
    3.                
    4.            //客户端post过来的参数  
    5.            string appleReceipt = Request.Form["appleReceipt"]; //苹果内购的验证收据  
    6.            string orderId = PayHelper.GetOrderIDByPrefix("AP");  //订单编号  
    7.            string amount = Request.Form["amount"];             //金额  
    8.            string userId = Request.Form["userId"];             //用户UserID  
    9.              
    10.            // 验证参数  
    11.            if (appleReceipt.Length < 20)  
    12.            {  
    13.                return false;  
    14.            }  
    15.   
    16.            string strJosn = string.Format("{{"receipt-data":"{0}"}}", appleReceipt);  
    17.            // 请求验证  
    18.            string strResult = CreatePostHttpResponse(strJosn, isSandbox);  
    19.            JObject obj = JObject.Parse(strResult);//using Newtonsoft.Json.Linq;  
    20.   
    21.            // 判断是否购买成功  
    22.            if (obj["status"].ToString() == "0")  
    23.            {  
    24.                return true;  
    25.            }  
    26.            else  
    27.            {  
    28.                return false;  
    29.            }  
    30.        }  
    31.    public string CreatePostHttpResponse(string datas, bool isSandbox = false)  
    32.        {  
    33.            //正式购买地址 沙盒购买地址  
    34.            string url_buy = "https://buy.itunes.apple.com/verifyReceipt";  
    35.            string url_sandbox = "https://sandbox.itunes.apple.com/verifyReceipt";  
    36.            string url = isSandbox ? url_sandbox : url_buy;  
    37.   
    38.            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;  
    39.            request.ProtocolVersion = HttpVersion.Version10;  
    40.            request.Method = "POST";  
    41.            request.ContentType = "application/x-www-form-urlencoded";  
    42.            byte[] data = Encoding.GetEncoding("UTF-8").GetBytes(datas.ToString());  
    43.            using (Stream stream = request.GetRequestStream())  
    44.            {  
    45.                stream.Write(data, 0, data.Length);  
    46.            }  
    47.   
    48.            HttpWebResponse response = request.GetResponse() as HttpWebResponse;  
    49.            Stream responseStream = response.GetResponseStream();   //获取响应的字符串流  
    50.            StreamReader sr = new StreamReader(responseStream); //创建一个stream读取流  
    51.            var str = sr.ReadToEnd();  
    52.            sr.Close();  
    53.            responseStream.Close();  
    54.            return str.ToString();  
    55.        }  
  • 相关阅读:
    Effective C++ 33 避免遮掩继承而来的名称
    求子数组之和的最大值——编程之美 2.14 扩展问题 正确实现
    数据结构快速回顾——平衡二叉树 AVL (转)
    位运算符 优先级 折半搜索
    关于 二维数组指针
    C++中的单例模式(转)
    C# ThreadStart和ParameterizedThreadStart区别
    C# 实现数字字符串左补齐0的两种方法
    C# 窗口自适应窗口宽度和高度
    C# 在多线程环境中,进行安全遍历操作
  • 原文地址:https://www.cnblogs.com/morpheusliu/p/8042763.html
Copyright © 2011-2022 走看看