자바 백 스테이지 위 챗 결제 와 위 챗 환불 실현
8861 단어 Java위 챗 페 이 먼 트위 챗 환불
모두 내 가 일 하면 서 개발 한 것 이 니,직접 측정 할 수 있 고,좋아 하지 않 으 면 뿌리 지 마라.
controller 에서 저 는 이렇게 썼 습 니 다.당신들 은 자신의 업무 수요 에 따라 변경 해 야 합 니 다.Response Bean 은 제 가 직접 봉 인 했 습 니 다.원 하 는 형식 으로 바 꿀 수 있 습 니 다.
/**
*
* @return
*/
@RequestMapping(value = "/doUnifiedOrder", method = RequestMethod.POST)
public ResponseBean doUnifiedOrder(@RequestBody Map<String,Object> req) {
Map resultMap=new HashMap();
String openid = (String) req.get("openId");
WXPay wxpay =null;
try {
//
myConfig.initCert();
wxpay= new WXPay(myConfig);
} catch (Exception e) {
e.printStackTrace();
}
//
String nonce_str = WXPayUtil.generateNonceStr();
// ip
// ip
InetAddress addr = null;
try {
addr = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
// , ,
String payOutMoney = WxMoney.changeY2F(String.valueOf(req.get("money")));
String tradeName = (String) req.get("tradeName");
if(tradeName!=null&&tradeName.length()>0){
}else{
tradeName = " ";
}
String body = tradeName;
//
String out_trade_no= WXPayUtil.generateNonceStr();
//
HashMap<String, String> data = new HashMap<String, String>();
data.put("appid", appid);
data.put("mch_id", id);
data.put("nonce_str", nonce_str);
data.put("body", body);
data.put("out_trade_no",out_trade_no);
data.put("total_fee", payOutMoney);
data.put("spbill_create_ip", "127.0.0.1");
data.put("notify_url", );
data.put("trade_type","JSAPI");
data.put("openid", openid);
try {
Map<String, String> rMap = wxpay.unifiedOrder(data);
String return_code = (String) rMap.get("return_code");
String result_code = (String) rMap.get("result_code");
String nonceStr = WXPayUtil.generateNonceStr();
resultMap.put("nonceStr", nonceStr);
Long timeStamp = System.currentTimeMillis() / 1000;
if ("SUCCESS".equals(return_code) && return_code.equals(result_code)) {
String prepayid = rMap.get("prepay_id");
resultMap.put("package", "prepay_id="+prepayid);
resultMap.put("signType", "MD5");
// , wx.requestPayment
resultMap.put("timeStamp", timeStamp + "");
// , wx.requesetPayment
resultMap.put("appId",myConfig.getAppID());
String sign = WXPayUtil.generateSignature(resultMap, myConfig.getKey());
resultMap.put("paySign", sign);
resultMap.put("out_trade_no",out_trade_no);
ResponseBean responseBean = new ResponseBean(HttpStatus.OK.value()," ",resultMap);
return responseBean;
}else{
ResponseBean responseBean = new ResponseBean(HttpStatus.OK.value()," "," ");
return responseBean;
}
} catch (Exception e) {
ResponseBean responseBean = new ResponseBean(HttpStatus.OK.value()," "," ");
e.printStackTrace();
return responseBean;
}
}
위 챗 환불 코드(환불 이 필요 한 주문서 id)
public ResponseBean refund(Map<String, Object> req) {
Map resultMap=new HashMap();
String buyId = (String) req.get("buyId");
WXPay wxpay =null;
try {
myConfig.initCert();//
wxpay= new WXPay(myConfig);
} catch (Exception e) {
e.printStackTrace();
}
//
String nonce_str = WXPayUtil.generateNonceStr();
// ip
// ip
InetAddress addr = null;
try {
addr = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
// , ,
// int total_fee= (int) req.get("money");
String payOutMoney = WxMoney.changeY2F(String.valueOf(req.get("money")));
// String body = (String) req.get("z");
//
String out_trade_no= WXPayUtil.generateNonceStr();
//
HashMap<String, String> data = new HashMap<String, String>();
try {
data.put("appid", myConfig.getAppID());
data.put("mch_id", myConfig.getMchID());
data.put("nonce_str", nonce_str);
data.put("sign_type", "MD5");
data.put("out_trade_no",buyId);//
data.put("out_refund_no", out_trade_no);//
data.put("total_fee",payOutMoney);// , , , ,
data.put("refund_fee",payOutMoney);// , , ,
//MD5 , ,
String sign = WXPayUtil.generateSignature(data, myConfig.getKey());
data.put("sign", sign);
Map<String, String> rMap = wxpay.refund(data);
String return_code = (String) rMap.get("return_code");
String result_code = (String) rMap.get("result_code");
Long timeStamp = System.currentTimeMillis() / 1000;
if ("SUCCESS".equals(return_code) && return_code.equals(result_code)) {
ResponseBean responseBean = new ResponseBean(HttpStatus.OK.value()," ",rMap);
return responseBean;
}else{
ResponseBean responseBean = new ResponseBean(HttpStatus.OK.value()," "," ");
return responseBean;
}
} catch (Exception e) {
ResponseBean responseBean = new ResponseBean(HttpStatus.OK.value()," "," ");
e.printStackTrace();
return responseBean;
}
}
필요 한 도구 클래스그리고 MyConfig 에서 애플 릿 인 자 를 설정 하면 됩 니 다.환불 기능 을 추가 하려 면 업 체 인증 서 를 설정 해 야 합 니 다(프로젝트 에 해당 하 는 위치).필요 없 으 면 initCert 방법 빼.
public class MyConfig extends WXPayConfig {
@Value("${res.imgPath}")
public String imgPath;
private byte[] certData;
@Override
public String getAppID() {
return " id";
}
@Override
public String getMchID() {
return " id";
}
@Override
public String getKey() {
return " ";
}
@Override
public InputStream getCertStream() {
ByteArrayInputStream certBis = new ByteArrayInputStream(this.certData);
return certBis;
}
@Override
public int getHttpConnectTimeoutMs() {
return 8000;
}
@Override
public int getHttpReadTimeoutMs() {
return 10000;
}
@Override
IWXPayDomain getWXPayDomain() {
return new IWXPayDomain() {
@Override
public void report(String domain, long elapsedTimeMillis, Exception ex) {
}
@Override
public DomainInfo getDomain(WXPayConfig config) {
return new DomainInfo("api.mch.weixin.qq.com", false);
}
};
}
@Override
public void initCert() throws Exception {
String certPath = this.imgPath+"/upload/cert/"+"apiclient_cert.p12";//
System.out.println(certPath);
File file = new File(certPath);
InputStream certStream = new FileInputStream(file);
this.certData = new byte[(int) file.length()];
certStream.read(this.certData);
certStream.close();
}
}
자바 백 스테이지 에서 위 챗 결제 와 위 챗 환불 을 실현 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 위 챗 결제 와 위 챗 환불 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.