Android 微信退款
来源:互联网 发布:二次元软件 编辑:程序博客网 时间:2024/06/02 22:45
/**
* Android 微信退款
**/
// 存放微信退款参数参数
Map<String, String> map = new HashMap<String, String>();
params.put("appid", appid); // 公众账号ID
params.put("mch_id", mch_id); // 商户号
params.put("nonce_str", nonce_str); // 随机字符串
params.put("sign_type", "MD5"); // 签名类型
params.put("out_trade_no", out_trade_no); // 商户退款原订单号
params.put("out_refund_no", out_refund_no); // 商户退款新单号
params.put("total_fee", "100"))); // 订单金额
params.put("refund_fee", "100"))); // 退款金额
if (!"".equals(sub_mch_id())) { // 子商户号
params.put("sub_mch_id", sub_mch_id()); // 子商户id
}
// 签名 按微信要求
String sign = sign;
String cert_text = cert_text; // 微信证书后台证书转成的base64编码的字符串
/**
* 根据需求 把微信退款证书转成 InputStream
**/
InputStream inStream = new ByteArrayInputStream(Base64.decode(cert_text));
/**
** 证书在android上的使用
**/
KeyStore keyStore = null;
try {
keyStore = KeyStore.getInstance("PKCS12");
try {
keyStore.load(inStream, mch_id().toCharArray()); // inStream :证书流,mch_id :密码,注意当证书和密码不对应的时候会出现异常
} finally {
inStream.close();
}
} catch (KeyStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
KeyManagerFactory kmf = KeyManagerFactory.getInstance("X509");
kmf.init(keyStore, payRefund.getWxMch_id().toCharArray());
KeyManager[] keyManagers = kmf.getKeyManagers();
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(keyManagers, null, null);
String wx_xml = " "; // 参数生成xml
String urladdress = "https://api.mch.weixin.qq.com/secapi/pay/refund";
// 发送https请求
byte[] xml = content.getBytes();
URL url = new URL(urladdress);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
if (conn instanceof HttpURLConnection) {
((HttpsURLConnection) conn).setSSLSocketFactory(sslContext.getSocketFactory());
}
((HttpsURLConnection) conn).setSSLSocketFactory(sslContext.getSocketFactory());
}conn.setConnectTimeout(10000);
conn.setRequestMethod("POST");
conn.setDoOutput(true);
// 设置HTTP请求的头字段
conn.setRequestProperty("Content-Type", "text/xml; charset=UTF-8"); // 内容类型
conn.setRequestProperty("Content-Length", String.valueOf(xml.length)); // 实体内容的长度
conn.getOutputStream().write(xml);
conn.getOutputStream().flush();
conn.getOutputStream().close();
if (conn.getResponseCode() != 200)
throw new RuntimeException("请求url失败");
InputStream is = conn.getInputStream(); // 获取返回的数据
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int len;
while ((len = is.read(buf)) != -1) {
out.write(buf, 0, len);
}
String string = out.toString("UTF-8");
result = string;
out.close();
// 解析文本 查看退款结果
- Android 微信退款
- 微信退款
- 微信退款
- 微信退款
- 微信退款问题
- 微信退款
- 微信退款
- 微信支付,退款
- 微信退款处理
- 微信退款接口
- 微信退款接口
- 微信 退款 java
- 微信退款通知
- 微信退款开发
- 微信api退款及退款查询
- 微信api退款及退款查询
- 微信支付退款接口
- 微信退款demo--Java
- java语言实现操作系统中的文件管理系统
- Linux命令日志
- https站点调用wcf的问题解决
- 【升华网络】为你介绍淘宝
- Android PorterDuffColorFilter 图形混合滤镜
- Android 微信退款
- spark on yarn报错java.lang.ClassNotFoundException: com.sun.jersey.api.client.config.Client
- python 中的split()函数和os.path.split()函数
- Tensorflow C++库的编译和使用方法
- 《Apache Flume教程》第二章 Hadoop中的数据传输
- 常量-变量
- tomcat + nginx 配置负载均衡实验过程
- QT控件大全 十九 QVCursor
- GraphicsMagick使用brew安装