java+uniapp苹果内购
作者:互联网
苹果内购后端代码
苹果内购官网地址
1.注册app,填写协议、税务和银行业务
注册app,需要唯一设置Bundle identifier,然后详细填写协议、税务和银行业务
2.内购商品的添加
我的App—>准提交的项目—>功能—>App内购买项目:添加内购商品信息(价格在这里设置,设置好后将你的id告诉前端)
3.添加沙盒测试账号
iTunes Connect —>用户和职能 —>沙盒测试技术员:添加沙盒测试账号
苹果内购前端代码多一些,后台的代码并不多,前端获取购买购买凭证传到后端,直接请求即可
package com.yss.pay.controller;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.commons.lang.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("iap")
public class IapController {
//购买凭证验证地址
private static final String certificateUrl = "https://buy.itunes.apple.com/verifyReceipt";
//测试的购买凭证验证地址
private static final String certificateUrlTest = "https://sandbox.itunes.apple.com/verifyReceipt";
/**
* 重写X509TrustManager
*/
private static TrustManager myX509TrustManager = new X509TrustManager() {
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
};
/**
* 接收iOS端发过来的购买凭证
* @param userId
* @param receipt
* @param chooseEnv
*/
@RequestMapping("/setIapCertificate")
public String setIapCertificate(String userId, String receipt, boolean chooseEnv){
if(StringUtils.isEmpty(userId) || StringUtils.isEmpty(receipt)){
return null;
}
String url = null;
url = chooseEnv == true? certificateUrl:certificateUrlTest;
final String certificateCode = receipt;
if(StringUtils.isNotEmpty(certificateCode)){
return sendHttpsCoon(url, certificateCode);
}else{
return null;
}
}
/**
* 发送请求
* @param url
* @param strings
* @return
*/
private String sendHttpsCoon(String url, String code){
if(url.isEmpty()){
return null;
}
try {
//设置SSLContext
SSLContext ssl = SSLContext.getInstance("SSL");
ssl.init(null, new TrustManager[]{myX509TrustManager}, null);
//打开连接
HttpsURLConnection conn = (HttpsURLConnection) new URL(url).openConnection();
//设置套接工厂
conn.setSSLSocketFactory(ssl.getSocketFactory());
//加入数据
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setRequestProperty("Content-type","application/json");
JSONObject obj = new JSONObject();
obj.put("receipt-data", code);
BufferedOutputStream buffOutStr = new BufferedOutputStream(conn.getOutputStream());
buffOutStr.write(obj.toString().getBytes());
buffOutStr.flush();
buffOutStr.close();
//获取输入流
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
StringBuffer sb = new StringBuffer();
while((line = reader.readLine())!= null){
sb.append(line);
}
return sb.toString();
} catch (Exception e) {
return null;
}
}
}
标签:内购,uniapp,java,String,return,ssl,new,import,null 来源: https://blog.csdn.net/yin_na/article/details/115046840