zoukankan      html  css  js  c++  java
  • 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();
    }
     

  • 相关阅读:
    从0开始学习自动化框架Airtest
    测试经理必知必会-Kanban和Scrum区别
    测试工程师的福音-如何使用Sonar完成代码质量检测
    看了很多文章,就这篇说明白了什么是接口测试
    测试经理必知必会:敏捷模型之Kanban
    Selenium元素定位不到?JS注入轻松搞定!
    测试经理必知必会:敏捷开发3355原则
    我知道你会冒泡排序,但是你会优化冒泡排序吗?
    快来使用Portainer让测试环境搭建飞起来吧
    给个MySQL,打算怎么测试?
  • 原文地址:https://www.cnblogs.com/zxtceq/p/10237652.html
Copyright © 2011-2022 走看看