微信刷卡 sdk java_微信支付 Java SDK
微信支付 Java SDK
对微信支付开发者文档中给出的API进行了封装。
com.github.wxpay.sdk.WXPay类下提供了对应的方法:
方法名
说明microPay
刷卡支付
unifiedOrder
统一下单
orderQuery
查询订单
reverse
撤销订单
closeOrder
关闭订单
refund
申请退款
refundQuery
查询退款
downloadBill
下载对账单
report
交易保障
shortUrl
转换短链接
authCodeToOpenid
授权码查询openid注意:
证书文件不能放在web服务器虚拟目录,应放在有访问权限控制的目录中,防止被他人下载
建议将证书文件名改为复杂且不容易猜测的文件名
商户服务器要做好病毒和木马防护工作,不被非法侵入者窃取证书文件
请妥善保管商户支付密钥、公众帐号SECRET,避免密钥泄露
参数为Map对象,返回类型也是Map
方法内部会将参数会转换成含有appid、mch_id、nonce_str、sign\_type和sign的XML
可选HMAC-SHA256算法和MD5算法签名
通过HTTPS请求得到返回数据后会对其做必要的处理(例如验证签名,签名错误则抛出异常)
对于downloadBill,无论是否成功都返回Map,且都含有return_code和return_msg,若成功,其中return_code为SUCCESS,另外data对应对账单数据
示例
配置类MyConfig:
import com.github.wxpay.sdk.WXPayConfig;
import java.io.*;
public class MyConfig implements WXPayConfig{
private byte[] certData;
public MyConfig() throws Exception {
String certPath = "/path/to/apiclient_cert.p12";
File file = new File(certPath);
InputStream certStream = new FileInputStream(file);
this.certData = new byte[(int) file.length()];
certStream.read(this.certData);
certStream.close();
}
public String getAppID() {
return "wx8888888888888888";
}
public String getMchID() {
return "12888888";
}
public String getKey() {
return "88888888888888888888888888888888";
}
public InputStream getCertStream() {
ByteArrayInputStream certBis = new ByteArrayInputStream(this.certData);
return certBis;
}
public int getHttpConnectTimeoutMs() {
return 8000;
}
public int getHttpReadTimeoutMs() {
return 10000;
}
}
统一下单:
import com.github.wxpay.sdk.WXPay;
import java.util.HashMap;
import java.util.Map;
public class WXPayExample {
public static void main(String[] args) throws Exception {
MyConfig config = new MyConfig();
WXPay wxpay = new WXPay(config);
Map data = new HashMap();
data.put("body", "腾讯充值中心-QQ会员充值");
data.put("out_trade_no", "2016090910595900000012");
data.put("device_info", "");
data.put("fee_type", "CNY");
data.put("total_fee", "1");
data.put("spbill_create_ip", "123.12.12.123");
data.put("notify_url", "http://www.example.com/wxpay/notify");
data.put("trade_type", "NATIVE"); // 此处指定为扫码支付
data.put("product_id", "12");
try {
Map resp = wxpay.unifiedOrder(data);
System.out.println(resp);
} catch (Exception e) {
e.printStackTrace();
}
}
}
订单查询:
import com.github.wxpay.sdk.WXPay;
import java.util.HashMap;
import java.util.Map;
public class WXPayExample {
public static void main(String[] args) throws Exception {
MyConfig config = new MyConfig();
WXPay wxpay = new WXPay(config);
Map data = new HashMap();
data.put("out_trade_no", "2016090910595900000012");
try {
Map resp = wxpay.orderQuery(data);
System.out.println(resp);
} catch (Exception e) {
e.printStackTrace();
}
}
}
退款查询:
import com.github.wxpay.sdk.WXPay;
import java.util.HashMap;
import java.util.Map;
public class WXPayExample {
public static void main(String[] args) throws Exception {
MyConfig config = new MyConfig();
WXPay wxpay = new WXPay(config);
Map data = new HashMap();
data.put("out_trade_no", "2016090910595900000012");
try {
Map resp = wxpay.refundQuery(data);
System.out.println(resp);
} catch (Exception e) {
e.printStackTrace();
}
}
}
下载对账单:
import com.github.wxpay.sdk.WXPay;
import java.util.HashMap;
import java.util.Map;
public class WXPayExample {
public static void main(String[] args) throws Exception {
MyConfig config = new MyConfig();
WXPay wxpay = new WXPay(config);
Map data = new HashMap();
data.put("bill_date", "20140603");
data.put("bill_type", "ALL");
try {
Map resp = wxpay.downloadBill(data);
System.out.println(resp);
} catch (Exception e) {
e.printStackTrace();
}
}
}
其他API的使用和上面类似。
暂时不支持下载压缩格式的对账单,但可以使用该SDK生成请求用的XML数据:
import com.github.wxpay.sdk.WXPay;
import com.github.wxpay.sdk.WXPayUtil;
import java.util.HashMap;
import java.util.Map;
public class WXPayExample {
public static void main(String[] args) throws Exception {
MyConfig config = new MyConfig();
WXPay wxpay = new WXPay(config);
Map data = new HashMap();
data.put("bill_date", "20140603");
data.put("bill_type", "ALL");
data.put("tar_type", "GZIP");
try {
data = wxpay.fillRequestData(data);
System.out.println(WXPayUtil.mapToXml(data));
} catch (Exception e) {
e.printStackTrace();
}
}
}
收到支付结果通知时,需要验证签名,可以这样做:
import com.github.wxpay.sdk.WXPay;
import com.github.wxpay.sdk.WXPayUtil;
import java.util.Map;
public class WXPayExample {
public static void main(String[] args) throws Exception {
String notifyData = "...."; // 支付结果通知的xml格式数据
MyConfig config = new MyConfig();
WXPay wxpay = new WXPay(config);
Map notifyMap = WXPayUtil.xmlToMap(notifyData); // 转换成map
if (wxpay.isPayResultNotifySignatureValid(notifyMap)) {
// 签名正确
// 进行处理。
// 注意特殊情况:订单已经退款,但收到了支付结果成功的通知,不应把商户侧订单状态从退款改成支付成功
}
else {
// 签名错误,如果数据里没有sign字段,也认为是签名错误
}
}
}
HTTPS请求可选HMAC-SHA256算法和MD5算法签名:
import com.github.wxpay.sdk.WXPay;
import com.github.wxpay.sdk.WXPayConstants;
public class WXPayExample {
public static void main(String[] args) throws Exception {
MyConfig config = new MyConfig();
WXPay wxpay = new WXPay(config, WXPayConstants.SignType.HMACSHA256);
// ......
}
}
若需要使用sandbox环境:
import com.github.wxpay.sdk.WXPay;
import com.github.wxpay.sdk.WXPayConstants;
public class WXPayExample {
public static void main(String[] args) throws Exception {
MyConfig config = new MyConfig();
WXPay wxpay = new WXPay(config, WXPayConstants.SignType.MD5, true);
// ......
}
}
微信刷卡 sdk java_微信支付 Java SDK相关推荐
- 在sdk中添加源文件_实用干货 | 一步一步教你在SpringBoot中集成微信刷卡支付
一:准备工作 使用微信支付需要先开通服务号,然后还要开通微信支付,最后还要配置一些开发参数,过程比较多. 申请服务号(企业) 开通微信支付 开发配置 具体准备工作请参考Spring Boot入门教程( ...
- 微信免密支付php代码实现,微信刷卡支付接入模式及免密流程
根据商户具体的情况,刷卡支付接入模式可分为:商户后台接入和门店接入: 根据用户是否需要输入支付密码可分为:免密模式和验密模式. 1.接入模式-商户后台接入 该模式适合具备统一后台系统的商户.门店收银台 ...
- 关于互相帮忙投票的微信群、微信刷投票群、微信投票刷票群的详情介绍
关于互相帮忙投票的微信群.微信刷投票群.微信投票刷票群的详情介绍,当前很多微信投票活动慢慢变多,许多人在网上寻找关于"互相帮忙投票的微信群.微信刷投票群.微信投票刷票群"来自己拉票 ...
- java微信刷卡支付demo_微信刷卡支付例子
[实例简介] java微信支付样例~ 刷卡支付源码~自测可以使用,有需要的可以下来使用 [实例截图] [核心代码] wx-pay └── ScanPay └── ScanPay ├── WebCont ...
- Android微信刷卡支付开发
微信开发不容易,在于各个环节的理解和疏通. 支付类型分为几种,每种的业务也不相同,所以就困扰了很多人,我也抱怨过资料的混乱,没办法慢慢梳理. 摸索过后才知道我需要的是刷卡支付业务.公司的Android ...
- java实现工单派发_编写官方微信支付 Java SDK 的同学领下工单!
由于昨天微信被爆官方的 Java SDK 存在支付漏洞,于是今天官方就放出了最新的 SDK.刚好正在接支付这块,立马就 down 了最新的 SDK,maven install,然后项目引入.然后项目就 ...
- 引入微信支付Java SDK WxPayAPI_JAVA.zip
最近需要接入微信支付,百度了很多博客,关键第一步导入微信支付提供的官方sdk就卡住了,那些博客上也没说怎么导入,以前没整过sdk,一下懵了,后来发现WxPayAPI_JAVA.zip解压出来的文件是个 ...
- php微信刷卡支付开发,【微信支付】刷卡支付开发者文档
1.签名算法 签名生成的通用步骤如下: 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=valu ...
- 微信上传素材 java_微信素材上传(JAVA)
public String uploadMaterial(String url,InputStream sbs,String filelength,String filename, String ty ...
最新文章
- 教你两种黑掉“人工智能”的方法
- BI工具选型指标,如何选择好的BI工具
- 微信小程序组件知识点GET
- Maven 项目在 Eclipse 的创建配置
- Visual Studio Code 显示隐藏的.git文件和目录
- 关闭 IOS8 最近使用 最近联系人
- [转帖] Windows 与linux的栈大小问题
- linux 源码安装mysql 5.5
- sql loader
- 海康威视设备发现sdp原理
- 芒果广告不能用百度了,怎么办?
- LPDDR4X与LPDDR4 区别 <转>
- printf()输出格式大全(附 - 示例代码)
- 电脑连接热点无internet访问权限_Win10连接wifi后显示无internet访问权限如何解决...
- mysql foxpro,如何使用MySql同步Visual Foxpro dbfs?
- [置顶] 施一公:优秀博士如何养成(全文) 清华大学演讲
- excel双击后公式计算机,#电脑上的excel表格里的数字为什么要双击才能展开#excel文本双击后变数字...
- Prophet文档中文翻译--outliers
- Javascript 将 jpeg、png转换为webp
- 策略模式与工厂模式的区别