`
hougechuanqi
  • 浏览: 73641 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【IOS】IAP (内置购买) 服务器端代码

 
阅读更多

 

 

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.HttpURLConnection;

import java.net.URL;

 

import javax.net.ssl.HttpsURLConnection;

import javax.transaction.SystemException;

 

import com.alibaba.fastjson.JSONObject;

 

public class ApplePayments {

private final static String _sandboxUriStr = "https://sandbox.itunes.apple.com/verifyReceipt";

//private final static String _productionUriStr = "https://buy.itunes.apple.com/verifyReceipt";

 

/**

* @param receipt 明码

* @throws SystemException

*/

public static void processPayment(final String receipt)

throws SystemException {

@SuppressWarnings("restriction")

final sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();

final String receiptData = encoder.encode(receipt.getBytes());

final JSONObject object=new JSONObject();

object.put("receipt-data", receiptData);

        final String jsonData=object.toJSONString();

try {

 

final URL url = new URL(_sandboxUriStr);

final HttpURLConnection conn = (HttpsURLConnection) url

.openConnection();

conn.setRequestMethod("POST");

conn.setDoOutput(true);

conn.setRequestProperty("Content-Type", "application/json");

conn.setRequestProperty("Accept", "application/json");

 

final OutputStreamWriter wr = new OutputStreamWriter(

conn.getOutputStream());

wr.write(jsonData);

wr.flush();

 

// Get the response

final BufferedReader rd = new BufferedReader(new InputStreamReader(

conn.getInputStream()));

String line;

while ((line = rd.readLine()) != null) {

System.out.println(line);

}

wr.close();

rd.close();

} catch (IOException e) {

 

}

}

}

分享到:
评论
2 楼 hougechuanqi 2014-07-11  
我也出现过,原因就是你的请求参数有问题,再好好检查一下
1 楼 wujiyongheng 2013-11-19  
我在网上找了很多的例子,都大同小异。但是都是会提示 21002错误,数据格式出错,不知道博主是在什么情况下,验证通过呢? 这个会和环境相关吗? (我完全按照你的例子来也还是照样提示格式出错。。。)

相关推荐

    Swift iOS StoreKit 原生内购订阅代码封装,含Demo

    6. **验证购买**:为了防止欺诈,需要在服务器端验证购买收据。可以使用Apple的验证API,将本地的收据数据发送到指定的URL进行验证。 7. **完成交易**:验证通过后,完成交易,更新应用状态,并通知用户。 8. **...

    IAP支付(IOS内购)

    购买完成后,为了防止欺诈,必须验证服务器端的收据。使用Apple的验证服务,将收据数据发送到指定的URL,并接收验证结果。只有在收据验证成功后,才提供购买的商品或服务。 7. **本地存储和同步** 由于IAP购买...

    iphone内置购买dome

    在移动应用开发领域,尤其是iOS平台,内置购买(In-App Purchase, IAP)是开发者常用的盈利手段,允许用户在应用程序内部购买虚拟商品或服务。本篇文章将基于提供的"iPhone内置购买Demo"深入探讨如何实现一个完整的...

    Unity3D教程:Unity3D游戏内的付费2

    UNITY_EDITOR`这样的条件编译指令用于确保这些代码只在iOS平台上并且不在编辑器中运行,因为IAP功能只在实际设备上可用。 总的来说,这个教程深入讲解了Unity3D中实现内购的步骤,包括C#与Objective-C的交互,以及...

    swift-App内购买使用soeasy使用SwiftyStoreKit

    在iOS应用开发中,内购买(In-App Purchase,IAP)是一种常见的商业模式,允许用户在应用程序内购买额外的功能、内容或服务。本教程将详细讲解如何使用Swift语言中的第三方库SwiftyStoreKit来轻松实现App内购买。...

    StoreKit框架说明(中文)

    2. **服务器模型(Server Model)**: 对于需要从远程服务器下载的内容或服务,开发者需要构建自己的服务器端逻辑来处理产品的交付。这种方式常用于订阅类商品或其他需要频繁更新的内容。 综上所述,StoreKit框架为iOS...

    解析ios某收费直播-易语言

    这部分通常由服务器端语言如Node.js、Python或Java实现,与iOS客户端通过API交互。 8. **缓存策略**:为了优化用户体验,直播应用往往需要实施缓存策略,比如预加载、离线观看等,这需要合理利用iOS的本地存储和...

Global site tag (gtag.js) - Google Analytics