支付方法中的证书文件参数由File调整为InputStream

This commit is contained in:
jinyu 2015-07-08 09:02:17 +08:00
parent 7fe0b7b055
commit 7be1a45403
10 changed files with 116 additions and 147 deletions

View File

@ -1,7 +1,5 @@
package com.foxinmy.weixin4j.api;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
@ -48,7 +46,7 @@ public class CashApi {
/**
* 发放红包 企业向微信用户个人发现金红包
*
* @param caFile
* @param ca
* 证书文件(V3版本后缀为*.p12)
* @param redpacket
* 红包信息
@ -59,7 +57,7 @@ public class CashApi {
* href="http://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=13_5">发放红包接口说明</a>
* @throws WeixinException
*/
public RedpacketSendResult sendRedpack(File caFile, Redpacket redpacket)
public RedpacketSendResult sendRedpack(InputStream ca, Redpacket redpacket)
throws WeixinException {
JSONObject obj = (JSONObject) JSON.toJSON(redpacket);
obj.put("nonce_str", RandomUtil.generateString(16));
@ -70,16 +68,10 @@ public class CashApi {
obj.put("sign", sign);
String param = XmlStream.map2xml(obj);
WeixinResponse response = null;
InputStream ca = null;
try {
ca = new FileInputStream(caFile);
SSLHttpClinet request = new SSLHttpClinet(weixinAccount.getMchId(),
ca);
response = request.post(PayURLConsts.MCH_REDPACKSEND_URL, param);
} catch (WeixinException e) {
throw e;
} catch (IOException e) {
throw new WeixinException(e.getMessage());
} finally {
if (ca != null) {
try {
@ -96,7 +88,7 @@ public class CashApi {
/**
* 查询红包记录
*
* @param caFile
* @param ca
* 证书文件(V3版本后缀为*.p12)
* @param outTradeNo
* 商户发放红包的商户订单号
@ -106,7 +98,7 @@ public class CashApi {
* href="http://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=13_6">查询红包接口说明</a>
* @throws WeixinException
*/
public RedpacketRecord queryRedpack(File caFile, String outTradeNo)
public RedpacketRecord queryRedpack(InputStream ca, String outTradeNo)
throws WeixinException {
Map<String, String> para = new HashMap<String, String>();
para.put("nonce_str", RandomUtil.generateString(16));
@ -118,16 +110,10 @@ public class CashApi {
para.put("sign", sign);
String param = XmlStream.map2xml(para);
WeixinResponse response = null;
InputStream ca = null;
try {
ca = new FileInputStream(caFile);
SSLHttpClinet request = new SSLHttpClinet(weixinAccount.getMchId(),
ca);
response = request.post(PayURLConsts.MCH_REDPACKQUERY_URL, param);
} catch (WeixinException e) {
throw e;
} catch (IOException e) {
throw new WeixinException(e.getMessage());
} finally {
if (ca != null) {
try {
@ -144,7 +130,7 @@ public class CashApi {
/**
* 企业付款 实现企业向个人付款针对部分有开发能力的商户 提供通过API完成企业付款的功能 比如目前的保险行业向客户退保给付理赔
*
* @param caFile
* @param ca
* 证书文件(V3版本后缀为*.p12)
* @param mpPayment
* 付款信息
@ -155,7 +141,7 @@ public class CashApi {
* href="http://pay.weixin.qq.com/wiki/doc/api/mch_pay.php?chapter=14_1">企业付款</a>
* @throws WeixinException
*/
public MPPaymentResult mchPayment(File caFile, MPPayment mpPayment)
public MPPaymentResult mchPayment(InputStream ca, MPPayment mpPayment)
throws WeixinException {
JSONObject obj = (JSONObject) JSON.toJSON(mpPayment);
obj.put("nonce_str", RandomUtil.generateString(16));
@ -167,16 +153,10 @@ public class CashApi {
obj.put("sign", sign);
String param = XmlStream.map2xml(obj);
WeixinResponse response = null;
InputStream ca = null;
try {
ca = new FileInputStream(caFile);
SSLHttpClinet request = new SSLHttpClinet(weixinAccount.getMchId(),
ca);
response = request.post(PayURLConsts.MCH_ENPAYMENT_URL, param);
} catch (WeixinException e) {
throw e;
} catch (IOException e) {
throw new WeixinException(e.getMessage());
} finally {
if (ca != null) {
try {
@ -197,7 +177,7 @@ public class CashApi {
/**
* 企业付款查询 用于商户的企业付款操作进行结果查询返回付款操作详细结果
*
* @param caFile
* @param ca
* 证书文件(V3版本后缀为*.p12)
* @param outTradeNo
* 商户调用企业付款API时使用的商户订单号
@ -207,7 +187,7 @@ public class CashApi {
* href="http://pay.weixin.qq.com/wiki/doc/api/mch_pay.php?chapter=14_3">企业付款查询</a>
* @throws WeixinException
*/
public MPPaymentRecord mchPaymentQuery(File caFile, String outTradeNo)
public MPPaymentRecord mchPaymentQuery(InputStream ca, String outTradeNo)
throws WeixinException {
JSONObject obj = new JSONObject();
obj.put("nonce_str", RandomUtil.generateString(16));
@ -218,16 +198,10 @@ public class CashApi {
obj.put("sign", sign);
String param = XmlStream.map2xml(obj);
WeixinResponse response = null;
InputStream ca = null;
try {
ca = new FileInputStream(caFile);
SSLHttpClinet request = new SSLHttpClinet(weixinAccount.getMchId(),
ca);
response = request.post(PayURLConsts.MCH_ENPAYQUERY_URL, param);
} catch (WeixinException e) {
throw e;
} catch (IOException e) {
throw new WeixinException(e.getMessage());
} finally {
if (ca != null) {
try {

View File

@ -1,7 +1,5 @@
package com.foxinmy.weixin4j.api;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
@ -45,7 +43,7 @@ public class CouponApi {
/**
* 发放代金券(需要证书)
*
* @param caFile
* @param ca
* 证书文件(后缀为*.p12)
* @param couponStockId
* 代金券批次id
@ -61,7 +59,7 @@ public class CouponApi {
* href="http://pay.weixin.qq.com/wiki/doc/api/sp_coupon.php?chapter=12_3">发放代金券接口</a>
* @throws WeixinException
*/
public CouponResult sendCoupon(File caFile, String couponStockId,
public CouponResult sendCoupon(InputStream ca, String couponStockId,
String partnerTradeNo, String openId, String opUserId)
throws WeixinException {
Map<String, String> map = baseMap();
@ -81,16 +79,10 @@ public class CouponApi {
map.put("sign", sign);
String param = XmlStream.map2xml(map);
WeixinResponse response = null;
InputStream ca = null;
try {
ca = new FileInputStream(caFile);
SSLHttpClinet request = new SSLHttpClinet(weixinAccount.getMchId(),
ca);
response = request.post(PayURLConsts.MCH_COUPONSEND_URL, param);
} catch (WeixinException e) {
throw e;
} catch (IOException e) {
throw new WeixinException(e.getMessage());
} finally {
if (ca != null) {
try {

View File

@ -4,7 +4,6 @@ import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
@ -102,7 +101,7 @@ public class Pay3Api {
* 要采用原来的退款单号总退款金额不能超过用户实际支付金额
* </p>
*
* @param caFile
* @param ca
* 证书文件(V3版本后缀为*.p12)
* @param idQuery
* 商户系统内部的订单号, transaction_id out_trade_no 二选一,如果同时存在优先级:
@ -123,14 +122,11 @@ public class Pay3Api {
* @since V3
* @throws WeixinException
*/
protected RefundResult refundApply(File caFile, IdQuery idQuery,
protected RefundResult refundApply(InputStream ca, IdQuery idQuery,
String outRefundNo, double totalFee, double refundFee,
String opUserId, Map<String, String> mopara) throws WeixinException {
WeixinResponse response = null;
InputStream ca = null;
try {
ca = new FileInputStream(caFile);
Map<String, String> map = baseMap(idQuery);
map.put("out_refund_no", outRefundNo);
map.put("total_fee", DateUtil.formaFee2Fen(totalFee));
@ -149,10 +145,6 @@ public class Pay3Api {
SSLHttpClinet request = new SSLHttpClinet(weixinAccount.getMchId(),
ca);
response = request.post(PayURLConsts.MCH_REFUNDAPPLY_URL, param);
} catch (WeixinException e) {
throw e;
} catch (IOException e) {
throw new WeixinException(e.getMessage());
} finally {
if (ca != null) {
try {
@ -169,7 +161,7 @@ public class Pay3Api {
/**
* 退款申请
*
* @param caFile
* @param ca
* 证书文件(V3版本后缀为*.p12)
* @param idQuery
* 商户系统内部的订单号, transaction_id out_trade_no 二选一,如果同时存在优先级:
@ -184,9 +176,9 @@ public class Pay3Api {
* 货币类型符合ISO 4217标准的三位字母代码默认人民币CNY
* @param opUserId
* 操作员帐号, 默认为商户号
* @see {@link com.foxinmy.weixin4j.api.Pay3Api#refundApply(File, IdQuery, String, double, double, String, Map)}
* @see {@link com.foxinmy.weixin4j.api.Pay3Api#refundApply(InputStream, IdQuery, String, double, double, String, Map)}
*/
public RefundResult refundApply(File caFile, IdQuery idQuery,
public RefundResult refundApply(InputStream ca, IdQuery idQuery,
String outRefundNo, double totalFee, double refundFee,
CurrencyType refundFeeType, String opUserId) throws WeixinException {
Map<String, String> mopara = new HashMap<String, String>();
@ -194,7 +186,7 @@ public class Pay3Api {
refundFeeType = CurrencyType.CNY;
}
mopara.put("refund_fee_type", refundFeeType.name());
return refundApply(caFile, idQuery, outRefundNo, totalFee, refundFee,
return refundApply(ca, idQuery, outRefundNo, totalFee, refundFee,
opUserId, mopara);
}
@ -204,7 +196,7 @@ public class Pay3Api {
* 如需实现相同功能请调用退款接口</font></br> <font
* color="red">调用扣款接口后请勿立即调用撤销,需要等待5秒以上先调用查单接口,如果没有确切的返回,再调用撤销</font></br>
*
* @param caFile
* @param ca
* 证书文件(V3版本后缀为*.p12)
* @param idQuery
* 商户系统内部的订单号, transaction_id out_trade_no 二选一,如果同时存在优先级:
@ -213,11 +205,9 @@ public class Pay3Api {
* @since V3
* @throws WeixinException
*/
public ApiResult reverseOrder(File caFile, IdQuery idQuery)
public ApiResult reverseOrder(InputStream ca, IdQuery idQuery)
throws WeixinException {
InputStream ca = null;
try {
ca = new FileInputStream(caFile);
SSLHttpClinet request = new SSLHttpClinet(weixinAccount.getMchId(),
ca);
Map<String, String> map = baseMap(idQuery);
@ -229,8 +219,6 @@ public class Pay3Api {
PayURLConsts.MCH_ORDERREVERSE_URL, param);
return response.getAsObject(new TypeReference<ApiResult>() {
});
} catch (IOException e) {
throw new WeixinException(e.getMessage());
} finally {
if (ca != null) {
try {

View File

@ -1,6 +1,9 @@
package com.foxinmy.weixin4j.payment;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import com.alibaba.fastjson.JSON;
@ -45,7 +48,7 @@ public class WeixinPayProxy {
private final CouponApi couponApi;
private final CashApi cashApi;
private final File DEFAULT_CA_FILE;
private final String DEFAULT_CA_FILE;
/**
* 使用weixin4j.properties配置的账号信息
@ -65,8 +68,8 @@ public class WeixinPayProxy {
this.pay3Api = new Pay3Api(weixinAccount);
this.couponApi = new CouponApi(weixinAccount);
this.cashApi = new CashApi(weixinAccount);
this.DEFAULT_CA_FILE = new File(ConfigUtil.getClassPathValue("ca_file",
Weixin4jConst.DEFAULT_MEDIA_PATH));
this.DEFAULT_CA_FILE = ConfigUtil.getClassPathValue("ca_file",
Weixin4jConst.DEFAULT_MEDIA_PATH);
}
/**
@ -104,7 +107,7 @@ public class WeixinPayProxy {
* 要采用原来的退款单号总退款金额不能超过用户实际支付金额
* </p>
*
* @param caFile
* @param ca
* 证书文件(后缀为*.p12)
* @param idQuery
* 商户系统内部的订单号, transaction_id out_trade_no 二选一,如果同时存在优先级:
@ -130,23 +133,27 @@ public class WeixinPayProxy {
* @throws WeixinException
*/
public com.foxinmy.weixin4j.payment.mch.RefundResult refundApply(
File caFile, IdQuery idQuery, String outRefundNo, double totalFee,
double refundFee, CurrencyType refundFeeType, String opUserId)
throws WeixinException {
return pay3Api.refundApply(caFile, idQuery, outRefundNo, totalFee,
InputStream ca, IdQuery idQuery, String outRefundNo,
double totalFee, double refundFee, CurrencyType refundFeeType,
String opUserId) throws WeixinException {
return pay3Api.refundApply(ca, idQuery, outRefundNo, totalFee,
refundFee, refundFeeType, opUserId);
}
/**
* 退款申请采用properties中配置的ca文件
*
* @see {@link com.foxinmy.weixin4j.payment.WeixinPayProxy#refundV3(File, IdQuery, String, double, double,CurrencyType, String)}
* @throws IOException
*
* @see {@link com.foxinmy.weixin4j.payment.WeixinPayProxy#refund(InputStream, IdQuery, String, double, double,CurrencyType, String)}
*/
public com.foxinmy.weixin4j.payment.mch.RefundResult refundApply(
IdQuery idQuery, String outRefundNo, double totalFee,
double refundFee, String opUserId) throws WeixinException {
return pay3Api.refundApply(DEFAULT_CA_FILE, idQuery, outRefundNo,
totalFee, refundFee, CurrencyType.CNY, opUserId);
double refundFee, String opUserId) throws WeixinException,
IOException {
return pay3Api.refundApply(new FileInputStream(DEFAULT_CA_FILE),
idQuery, outRefundNo, totalFee, refundFee, CurrencyType.CNY,
opUserId);
}
/**
@ -214,9 +221,9 @@ public class WeixinPayProxy {
* @since V3
* @throws WeixinException
*/
public ApiResult reverseOrder(File caFile, IdQuery idQuery)
public ApiResult reverseOrder(InputStream ca, IdQuery idQuery)
throws WeixinException {
return pay3Api.reverseOrder(caFile, idQuery);
return pay3Api.reverseOrder(ca, idQuery);
}
/**
@ -225,11 +232,14 @@ public class WeixinPayProxy {
* @param idQuery
* transaction_idout_trade_no 二选一
* @return 撤销结果
* @see {@link com.foxinmy.weixin4j.mp.WeixinProxy#reverse(File, IdQuery)}
* @see {@link com.foxinmy.weixin4j.mp.WeixinProxy#reverse(InputStream, IdQuery)}
* @throws WeixinException
* @throws IOException
*/
public ApiResult reverseOrder(IdQuery idQuery) throws WeixinException {
return pay3Api.reverseOrder(DEFAULT_CA_FILE, idQuery);
public ApiResult reverseOrder(IdQuery idQuery) throws WeixinException,
IOException {
return pay3Api.reverseOrder(new FileInputStream(DEFAULT_CA_FILE),
idQuery);
}
/**
@ -305,7 +315,7 @@ public class WeixinPayProxy {
/**
* 发放代金券(需要证书)
*
* @param caFile
* @param ca
* 证书文件(后缀为*.p12)
* @param couponStockId
* 代金券批次id
@ -322,22 +332,22 @@ public class WeixinPayProxy {
* href="http://pay.weixin.qq.com/wiki/doc/api/sp_coupon.php?chapter=12_3">发放代金券接口</a>
* @throws WeixinException
*/
public CouponResult sendCoupon(File caFile, String couponStockId,
public CouponResult sendCoupon(InputStream ca, String couponStockId,
String partnerTradeNo, String openId, String opUserId)
throws WeixinException {
return couponApi.sendCoupon(caFile, couponStockId, partnerTradeNo,
openId, opUserId);
return couponApi.sendCoupon(ca, couponStockId, partnerTradeNo, openId,
opUserId);
}
/**
* 发放代金券采用properties中配置的ca文件
*
* @see {@link com.foxinmy.weixin4j.payment.WeixinPayProxy#sendCoupon(File, String, String, String, String)}
* @see {@link com.foxinmy.weixin4j.payment.WeixinPayProxy#sendCoupon(InputStream, String, String, String, String)}
*/
public CouponResult sendCoupon(String couponStockId, String partnerTradeNo,
String openId) throws WeixinException {
return couponApi.sendCoupon(DEFAULT_CA_FILE, couponStockId,
partnerTradeNo, openId, null);
String openId) throws WeixinException, IOException {
return couponApi.sendCoupon(new FileInputStream(DEFAULT_CA_FILE),
couponStockId, partnerTradeNo, openId, null);
}
/**
@ -377,7 +387,7 @@ public class WeixinPayProxy {
/**
* 发放红包 企业向微信用户个人发现金红包
*
* @param caFile
* @param ca
* 证书文件(V3版本后缀为*.p12)
* @param redpacket
* 红包信息
@ -389,25 +399,26 @@ public class WeixinPayProxy {
* href="http://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=13_5">红包接口说明</a>
* @throws WeixinException
*/
public RedpacketSendResult sendRedpack(File caFile, Redpacket redpacket)
public RedpacketSendResult sendRedpack(InputStream ca, Redpacket redpacket)
throws WeixinException {
return cashApi.sendRedpack(caFile, redpacket);
return cashApi.sendRedpack(ca, redpacket);
}
/**
* 发放红包采用properties中配置的ca文件
*
* @see {@link com.foxinmy.weixin4j.payment.WeixinPayProxy#sendRedpack(File, Redpacket)}
* @see {@link com.foxinmy.weixin4j.payment.WeixinPayProxy#sendRedpack(InputStream, Redpacket)}
*/
public RedpacketSendResult sendRedpack(Redpacket redpacket)
throws WeixinException {
return cashApi.sendRedpack(DEFAULT_CA_FILE, redpacket);
throws WeixinException, IOException {
return cashApi.sendRedpack(new FileInputStream(DEFAULT_CA_FILE),
redpacket);
}
/**
* 查询红包记录
*
* @param caFile
* @param ca
* 证书文件(V3版本后缀为*.p12)
* @param outTradeNo
* 商户发放红包的商户订单号
@ -418,25 +429,26 @@ public class WeixinPayProxy {
* href="http://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=13_6">查询红包接口说明</a>
* @throws WeixinException
*/
public RedpacketRecord queryRedpack(File caFile, String outTradeNo)
public RedpacketRecord queryRedpack(InputStream ca, String outTradeNo)
throws WeixinException {
return cashApi.queryRedpack(caFile, outTradeNo);
return cashApi.queryRedpack(ca, outTradeNo);
}
/**
* 查询红包采用properties中配置的ca文件
*
* @see {@link com.foxinmy.weixin4j.payment.WeixinPayProxy#queryRedpack(File,String)}
* @see {@link com.foxinmy.weixin4j.payment.WeixinPayProxy#queryRedpack(InputStream,String)}
*/
public RedpacketRecord queryRedpack(String outTradeNo)
throws WeixinException {
return cashApi.queryRedpack(DEFAULT_CA_FILE, outTradeNo);
throws WeixinException, IOException {
return cashApi.queryRedpack(new FileInputStream(DEFAULT_CA_FILE),
outTradeNo);
}
/**
* 企业付款 实现企业向个人付款针对部分有开发能力的商户 提供通过API完成企业付款的功能 比如目前的保险行业向客户退保给付理赔
*
* @param caFile
* @param ca
* 证书文件(V3版本后缀为*.p12)
* @param mpPayment
* 付款信息
@ -448,25 +460,26 @@ public class WeixinPayProxy {
* href="http://pay.weixin.qq.com/wiki/doc/api/mch_pay.php?chapter=14_1">企业付款</a>
* @throws WeixinException
*/
public MPPaymentResult mpPayment(File caFile, MPPayment mpPayment)
public MPPaymentResult mpPayment(InputStream ca, MPPayment mpPayment)
throws WeixinException {
return cashApi.mchPayment(caFile, mpPayment);
return cashApi.mchPayment(ca, mpPayment);
}
/**
* 企业付款采用properties中配置的ca文件
*
* @see {@link com.foxinmy.weixin4j.payment.WeixinPayProxy#mpPayment(File, MPPayment)}
* @see {@link com.foxinmy.weixin4j.payment.WeixinPayProxy#mpPayment(InputStream, MPPayment)}
*/
public MPPaymentResult mpPayment(MPPayment mpPayment)
throws WeixinException {
return cashApi.mchPayment(DEFAULT_CA_FILE, mpPayment);
throws WeixinException, IOException {
return cashApi.mchPayment(new FileInputStream(DEFAULT_CA_FILE),
mpPayment);
}
/**
* 企业付款查询 用于商户的企业付款操作进行结果查询返回付款操作详细结果
*
* @param caFile
* @param ca
* 证书文件(V3版本后缀为*.p12)
* @param outTradeNo
* 商户调用企业付款API时使用的商户订单号
@ -477,18 +490,19 @@ public class WeixinPayProxy {
* href="http://pay.weixin.qq.com/wiki/doc/api/mch_pay.php?chapter=14_3">企业付款查询</a>
* @throws WeixinException
*/
public MPPaymentRecord mpPaymentQuery(File caFile, String outTradeNo)
public MPPaymentRecord mpPaymentQuery(InputStream ca, String outTradeNo)
throws WeixinException {
return cashApi.mchPaymentQuery(caFile, outTradeNo);
return cashApi.mchPaymentQuery(ca, outTradeNo);
}
/**
* 企业付款查询采用properties中配置的ca文件
*
* @see {@link com.foxinmy.weixin4j.payment.WeixinPayProxy#mpPaymentQuery(File, String)}
* @see {@link com.foxinmy.weixin4j.payment.WeixinPayProxy#mpPaymentQuery(InputStream, String)}
*/
public MPPaymentRecord mpPaymentQuery(String outTradeNo)
throws WeixinException {
return cashApi.mchPaymentQuery(DEFAULT_CA_FILE, outTradeNo);
throws WeixinException, IOException {
return cashApi.mchPaymentQuery(new FileInputStream(DEFAULT_CA_FILE),
outTradeNo);
}
}

View File

@ -1,5 +1,8 @@
package com.foxinmy.weixin4j.mp.test;
import java.io.FileInputStream;
import java.io.IOException;
import org.junit.Test;
import com.foxinmy.weixin4j.exception.WeixinException;
@ -22,7 +25,7 @@ import com.foxinmy.weixin4j.type.MPPaymentCheckNameType;
public class CashTest extends CouponTest {
@Test
public void sendRedpacket() throws WeixinException {
public void sendRedpacket() throws WeixinException, IOException {
Redpacket redpacket = new Redpacket("HB001", "无忧钱庄", "无忧钱庄",
"oyFLst1bqtuTcxK-ojF8hOGtLQao", 1d);
redpacket.setActName("红包测试");
@ -32,23 +35,26 @@ public class CashTest extends CouponTest {
redpacket.setRemark("快来领取红包吧!");
redpacket.setTotalNum(1);
redpacket.setWishing("来就送钱");
RedpacketSendResult result = WEIXINPAY.sendRedpack(caFile, redpacket);
RedpacketSendResult result = WEIXINPAY.sendRedpack(new FileInputStream(
caFile), redpacket);
System.err.println(result);
}
@Test
public void queryRedpacket() throws WeixinException {
public void queryRedpacket() throws WeixinException, IOException {
String outTradeNo = "HB001";
RedpacketRecord record = WEIXINPAY.queryRedpack(caFile, outTradeNo);
RedpacketRecord record = WEIXINPAY.queryRedpack(new FileInputStream(
caFile), outTradeNo);
System.err.println(record);
}
@Test
public void mpPayment() throws WeixinException {
public void mpPayment() throws WeixinException, IOException {
MPPayment payment = new MPPayment("MP001",
"oyFLst1bqtuTcxK-ojF8hOGtLQao",
MPPaymentCheckNameType.NO_CHECK, "企业付款测试", 0.01d, "127.0.0.1");
MPPaymentResult result = WEIXINPAY.mpPayment(caFile, payment);
MPPaymentResult result = WEIXINPAY.mpPayment(
new FileInputStream(caFile), payment);
System.err.println(result);
}
}

View File

@ -1,6 +1,8 @@
package com.foxinmy.weixin4j.mp.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Date;
import org.junit.Assert;
@ -34,11 +36,11 @@ public class CouponTest {
protected final File caFile = new File("证书文件路径(*.p12)");
@Test
public void sendCoupon() throws WeixinException {
public void sendCoupon() throws WeixinException, IOException {
String partnerTradeNo = String.format("%s%s%s", ACCOUNT.getMchId(),
DateUtil.fortmat2yyyyMMdd(new Date()), "1");
CouponResult result = WEIXINPAY.sendCoupon(caFile, "123",
partnerTradeNo, "oyFLst1bqtuTcxK-ojF8hOGtLQao", null);
CouponResult result = WEIXINPAY.sendCoupon(new FileInputStream(caFile),
"123", partnerTradeNo, "oyFLst1bqtuTcxK-ojF8hOGtLQao", null);
Assert.assertTrue(result.getRetCode().equalsIgnoreCase(Consts.SUCCESS));
}

View File

@ -1,6 +1,8 @@
package com.foxinmy.weixin4j.mp.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
@ -109,13 +111,13 @@ public class PayTest {
}
@Test
public void refundV3() throws WeixinException {
public void refundV3() throws WeixinException, IOException {
File caFile = new File("签名文件如123.p12");
IdQuery idQuery = new IdQuery("TT_1427183696238", IdType.TRADENO);
com.foxinmy.weixin4j.payment.mch.RefundResult result = PAY3
.refundApply(caFile, idQuery,
"TT_R" + System.currentTimeMillis(), 0.01d, 0.01d,
null, "10020674");
.refundApply(new FileInputStream(caFile), idQuery, "TT_R"
+ System.currentTimeMillis(), 0.01d, 0.01d, null,
"10020674");
System.err.println(result);
String sign = result.getSign();
result.setSign(null);

View File

@ -579,8 +579,6 @@ public class WeixinProxy {
*
* @param code
* 通过员工授权获取到的code每次员工授权带上的code将不一样code只能使用一次5分钟未被使用自动过期
* @param agentid
* 跳转链接时所在的企业应用ID
* @see com.foxinmy.weixin4j.qy.model.User
* @see com.foxinmy.weixin4j.qy.api.UserApi
* @return 成员对象
@ -592,8 +590,8 @@ public class WeixinProxy {
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E6%A0%B9%E6%8D%AEcode%E8%8E%B7%E5%8F%96%E6%88%90%E5%91%98%E4%BF%A1%E6%81%AF">根据code获取成员信息</a>
* @throws WeixinException
*/
public User getUserByCode(String code, int agentid) throws WeixinException {
return userApi.getUserByCode(code, agentid);
public User getUserByCode(String code) throws WeixinException {
return userApi.getUserByCode(code);
}
/**
@ -601,9 +599,8 @@ public class WeixinProxy {
*
* @param code
* 通过员工授权获取到的code每次员工授权带上的code将不一样code只能使用一次5分钟未被使用自动过期
* @param agentid
* 跳转链接时所在的企业应用ID
* @return { "UserId":"USERID", "DeviceId":"DEVICEID" }
* @return { "UserId":"USERID", "DeviceId":"DEVICEID" } or
* {"OpenId":"OPENID","DeviceId":"DEVICEID"}
* @see com.foxinmy.weixin4j.qy.api.UserApi
* @see <a
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E4%BC%81%E4%B8%9A%E8%8E%B7%E5%8F%96code">企业获取code</a>
@ -611,9 +608,8 @@ public class WeixinProxy {
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E6%A0%B9%E6%8D%AEcode%E8%8E%B7%E5%8F%96%E6%88%90%E5%91%98%E4%BF%A1%E6%81%AF">根据code获取成员信息</a>
* @throws WeixinException
*/
public JSONObject getUserIdByCode(String code, int agentid)
throws WeixinException {
return userApi.getUserIdByCode(code, agentid);
public JSONObject getUserIdByCode(String code) throws WeixinException {
return userApi.getUserIdByCode(code);
}
/**

View File

@ -156,8 +156,6 @@ public class UserApi extends QyApi {
*
* @param code
* 通过员工授权获取到的code每次员工授权带上的code将不一样code只能使用一次5分钟未被使用自动过期
* @param agentid
* 跳转链接时所在的企业应用ID
* @see com.foxinmy.weixin4j.qy.model.User
* @see com.foxinmy.weixin4j.qy.api.UserApi
* @return 成员对象
@ -169,8 +167,8 @@ public class UserApi extends QyApi {
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E6%A0%B9%E6%8D%AEcode%E8%8E%B7%E5%8F%96%E6%88%90%E5%91%98%E4%BF%A1%E6%81%AF">根据code获取成员信息</a>
* @throws WeixinException
*/
public User getUserByCode(String code, int agentid) throws WeixinException {
return getUser(getUserIdByCode(code, agentid).getString("UserId"));
public User getUserByCode(String code) throws WeixinException {
return getUser(getUserIdByCode(code).getString("UserId"));
}
/**
@ -200,8 +198,6 @@ public class UserApi extends QyApi {
*
* @param code
* 通过员工授权获取到的code每次员工授权带上的code将不一样code只能使用一次5分钟未被使用自动过期
* @param agentid
* 跳转链接时所在的企业应用ID
* @return { "UserId":"USERID", "DeviceId":"DEVICEID" }
* @see <a
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E4%BC%81%E4%B8%9A%E8%8E%B7%E5%8F%96code">企业获取code</a>
@ -209,12 +205,11 @@ public class UserApi extends QyApi {
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E6%A0%B9%E6%8D%AEcode%E8%8E%B7%E5%8F%96%E6%88%90%E5%91%98%E4%BF%A1%E6%81%AF">根据code获取成员信息</a>
* @throws WeixinException
*/
public JSONObject getUserIdByCode(String code, int agentid)
throws WeixinException {
public JSONObject getUserIdByCode(String code) throws WeixinException {
String user_getid_uri = getRequestUri("user_getid_uri");
Token token = tokenHolder.getToken();
WeixinResponse response = weixinClient.post(String.format(
user_getid_uri, token.getAccessToken(), code, agentid));
user_getid_uri, token.getAccessToken(), code));
return response.getAsJson();
}

View File

@ -20,7 +20,7 @@ user_update_uri={api_base_url}/user/update?access_token=%s
# \u83b7\u53d6\u6210\u5458\u4fe1\u606f
user_get_uri={api_base_url}/user/get?access_token=%s&userid=%s
# code\u83b7\u53d6\u6210\u5458\u4fe1\u606f
user_getid_uri={api_base_url}/user/getuserinfo?access_token=%s&code=%s&agentid=%d
user_getid_uri={api_base_url}/user/getuserinfo?access_token=%s&code=%s
# \u83b7\u53d6\u90e8\u95e8\u6210\u5458
user_slist_uri={api_base_url}/user/simplelist?access_token=%s&department_id=%d&fetch_child=%d&status=%d
# \u83b7\u53d6\u90e8\u95e8\u6210\u5458(\u8be6\u60c5)