阿里云 OSS SDK
文件上传与下载:阿里云 OSS SDK 提供了简便的 API 用于上传和下载文件,开发者无需处理底层网络请求,直接调用 putObject()
和 getObject()
等方法即可操作文件。
存储桶管理:SDK 提供了创建、删除、列出存储桶等功能,方便用户管理存储空间。通过简单的 API 操作存储桶生命周期。
分片上传:对于大文件,SDK 支持分片上传,允许将文件分割为多个部分并分别上传,提升了上传的稳定性和效率。
访问控制:开发者可以通过 SDK 轻松设置对象和存储桶的访问权限,如私有、公共读、公共读写等,保证数据的安全性。
示例: 通过 SDK 上传文件:
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(fileContent.getBytes()));
ossClient.shutdown();
腾讯云 COS SDK (qcloud-cos-sdk
)
com.qcloud.cos
包含的类和接口来自腾讯云 COS (Cloud Object Storage) SDK。该 SDK 用于与腾讯云 COS 服务进行交互,支持文件的上传、下载、删除等操作。
关键类和方法:
COSClient
:核心类,用于与腾讯云 COS 服务交互。提供了对象存储的各种操作,如文件上传、下载、删除等。BasicCOSCredentials
:用于身份认证,使用访问密钥 (accessKeyId
) 和密钥 (accessKeySecret
) 创建。ClientConfig
:客户端配置类,用于配置 COS 的客户端,如区域、HTTP 超时等。PutObjectRequest
:用于表示上传文件的请求,包含存储桶名称、文件名、文件流和文件元数据。ObjectMetadata
:文件元数据类,用于设置文件的大小、内容类型等。PutObjectResult
:表示上传结果,包含成功后的元数据信息。
具体实例:
BasicCOSCredentials
:用于创建凭证,使用accessKeyId
和accessKeySecret
进行身份认证。
Region
:指定 COS 服务的操作区域,例如Region("ap-guangzhou")
表示使用广州区域。
ClientConfig
:创建客户端配置,用于配置 COS 服务的区域和其他客户端设置。
COSClient
:创建 COS 客户端,用于执行文件上传、下载、删除等操作。
PutObjectRequest
:封装文件上传请求,指定存储桶、文件路径和文件内容。
putObject()
:将文件上传到 COS 存储桶,返回上传结果PutObjectResult
。
getObjectMetadata()
:获取已上传文件的元数据信息,如文件大小、类型等。
// 1. 创建 COSClient 实例
BasicCOSCredentials cred = new BasicCOSCredentials(accessKeyId, accessKeySecret);
Region region = new Region(endpoint); // 指定区域
ClientConfig clientConfig = new ClientConfig(region); // 配置客户端
COSClient cosClient = new COSClient(cred, clientConfig);try {// 2. 文件上传InputStream fileInputStream = file.getInputStream();ObjectMetadata objectMetadata = new ObjectMetadata();objectMetadata.setContentLength(fileInputStream.available()); // 设置文件元数据PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectKey, fileInputStream, objectMetadata);PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest); // 上传文件// 3. 获取文件元数据ObjectMetadata metadata = cosClient.getObjectMetadata(bucketName, objectKey);long fileSize = metadata.getContentLength();// 4. 文件下载COSObject cosObject = cosClient.getObject(bucketName, objectKey);InputStream downloadedFile = cosObject.getObjectContent(); // 下载文件
} finally {// 5. 关闭 COSClient 释放资源cosClient.shutdown();
}
WeChat Pay SDK for Java
WeChat Pay SDK for Java
是一个用于与微信支付 API 交互的工具包
认证:
- 主要功能:该方法用于创建一个
CloseableHttpClient
对象,发送 HTTP 请求给微信支付 API。 - 私钥加载:通过
PemUtil.loadPrivateKey
加载商户的 API 私钥,用于请求签名。 - 证书加载:加载微信支付平台的证书,用于验签。
- 自动签名与验签:
WechatPayHttpClientBuilder
创建的 HttpClient 会自动处理请求的签名和微信返回结果的验签,确保交易安全。
private CloseableHttpClient getClient() {...// 加载私钥和微信平台证书merchantPrivateKey = PemUtil.loadPrivateKey(new FileInputStream(new File(weChatProperties.getPrivateKeyFilePath())));X509Certificate x509Certificate = PemUtil.loadCertificate(new FileInputStream(new File(weChatProperties.getWeChatPayCertFilePath())));WechatPayHttpClientBuilder builder = WechatPayHttpClientBuilder.create().withMerchant(weChatProperties.getMchid(), weChatProperties.getMchSerialNo(), merchantPrivateKey).withWechatPay(Arrays.asList(x509Certificate));// 返回构建好的 HttpClientreturn builder.build();
}
请求:
- 通过
HttpClient
发送包含请求体的 POST或GET 请求。 HttpClient
会自动处理签名(使用商户私钥)和验签(使用微信支付证书)。- 返回请求的响应内容(如下单、退款等操作结果)。
具体实现:
创建支付订单(jsapi)
- 数据构建: 将订单号、金额、openid 等信息封装为 JSON 数据,包括支付所需字段。
- 请求发送: 使用 POST 方法向 JSAPI 下单接口 发送请求,HttpClient 处理签名和验签。
- 返回结果: 接收微信支付返回的
prepay_id
,用于前端调起支付界面完成支付。
创建完整的订单:
- 后端调用微信支付的 JSAPI 下单接口,创建一个预支付订单,获取
prepay_id
。 - 后端使用
prepay_id
、timeStamp
、nonceStr
等信息生成一个支付签名(paySign
)。 - 后端将这些信息(包括
prepay_id
、timeStamp
、nonceStr
、paySign
等)打包成 JSON 返回给前端。
小程序微信支付流程:
后端 (pay 函数):负责生成完整的支付订单信息,包括 prepay_id、签名等。这个函数的结果返回给前端。
前端:利用后端返回的信息,通过调用微信支付的 API,调起支付界面,让用户进行支付。
用户付款:用户通过前端的支付界面完成付款。
支付结果通知:支付成功后,微信服务器异步通知后端支付结果,后端可以更新订单状态。