package com.mtgg.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jpay.ext.kit.HttpKit;
import com.jpay.ext.kit.IpKit;
import com.jpay.ext.kit.PaymentKit;
import com.jpay.ext.kit.StrKit;
import com.jpay.vo.AjaxResult;
import com.jpay.weixin.api.WxPayApi;
import com.jpay.weixin.api.WxPayApiConfig;
import com.jpay.weixin.api.WxPayApiConfigKit;
import com.mtgg.entity.H5ScencInfo;
import com.mtgg.entity.H5ScencInfo.H5;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
@Controller
@RequestMapping("/wc")
public class WxPayController {
// @Autowired
// private WxPayBean wxPayBean;
//
private Logger log = LoggerFactory.getLogger(this.getClass());
private AjaxResult result = new AjaxResult();
private static final String appID="wx37a5a7281317047a";
private static final String secret="0949f5a62f702d5c5862b8478425e157";
private static final String mchID="1490776702";
private static final String partnerKey="123456789101112131415139399300Sz";
private String notify_url = "http://www.zzw777.com";
public static WxPayApiConfig getApiConfig() {
return WxPayApiConfig.New()
.setAppId(appID)
.setMchId(mchID)
.setPaternerKey(partnerKey)
.setPayModel(WxPayApiConfig.PayModel.BUSINESSMODEL);
}
/**
* 微信H5 支付--------------------好使
* 注意:必须再web页面中发起支付且域名已添加到开发配置中
*/
@RequestMapping(value ="/pay.do",method = {RequestMethod.POST,RequestMethod.GET})
public void wapPay(HttpServletRequest request,HttpServletResponse response){
System.out.println("--pay start--");
String ip =IpKit.getRealIp(request);
if (com.jpay.ext.kit.StrKit.isBlank(ip)) {
ip = "127.0.0.1";
}
H5ScencInfo sceneInfo = new H5ScencInfo();
H5 h5_info = new H5();
h5_info.setType("Wap");
//此域名必须在商户平台--"产品中心"--"开发配置"中添加
h5_info.setWap_url("https://www.zzw777.com");
h5_info.setWap_name("腾讯充值");
sceneInfo.setH5_info(h5_info);
//WxPayApiConfig wxPayApiConfig=getApiConfig();
Map<String, String> params=WxPayApiConfig.New()
.setAppId(appID)
.setMchId(mchID)
.setBody("IJPay H5支付测试 -By Javen")
.setSpbillCreateIp(ip)
.setTotalFee("520")
.setTradeType(WxPayApi.TradeType.MWEB)
.setNotifyUrl(notify_url)
.setPaternerKey(partnerKey)
.setOutTradeNo(String.valueOf(System.currentTimeMillis()))
.setSceneInfo("{\"h5_info\": {\"type\":\"IOS\",\"app_name\": \"mtgg\",\"package_name\": \"com.tencent.tmgp.sgame\"}}")
.setAttach("IJPay H5支付测试 -By Javen")
.build();
String xmlResult = WxPayApi.pushOrder(false,params);
Map<String, String> result = PaymentKit.xmlToMap(xmlResult);
String return_code = result.get("return_code");
String return_msg = result.get("return_msg");
if (!PaymentKit.codeIsOK(return_code)) {
log.error("return_code>"+return_code+" return_msg>"+return_msg);
throw new RuntimeException(return_msg);
}
String result_code = result.get("result_code");
if (!PaymentKit.codeIsOK(result_code)) {
log.error("result_code>"+result_code+" return_msg>"+return_msg);
throw new RuntimeException(return_msg);
}
// 以下字段在return_code 和result_code都为SUCCESS的时候有返回
String prepay_id = result.get("prepay_id");
String mweb_url = result.get("mweb_url");
log.info("prepay_id:"+prepay_id+" mweb_url:"+mweb_url);
try {
response.sendRedirect(mweb_url);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 公众号支付
*/
@RequestMapping(value ="/gzhPay.do",method = {RequestMethod.POST,RequestMethod.GET})
public ModelAndView webPay(HttpServletRequest request, HttpServletResponse response) {
System.out.println("------------------gzhPay start-------------------");
ModelAndView mv=new ModelAndView();
String total_fee = request.getParameter("total_fee");
//获取用户的code
String code = request.getParameter("code");
String openId=null;
try {
List<Object> list = accessToken(code);
openId=list.get(1).toString();
} catch (IOException e) {
System.out.println("--openid获取错误");
}
//openid可以通过网页授权获取存到session中从而获取,IJPay是这样做的,我是另一种方式
/*openId,采用 网页授权获取 access_token API:SnsAccessTokenApi获取
String openId = (String) request.getSession().getAttribute("openId");*/
if (StrKit.isBlank(openId)) {
return mv;
}
if (StrKit.isBlank(total_fee)) {
return mv;
}
String ip = IpKit.getRealIp(request);
if (StrKit.isBlank(ip)) {
ip = "127.0.0.1";
}
WxPayApiConfigKit.putApiConfig(getApiConfig());
Map<String, String> params = WxPayApiConfigKit.getWxPayApiConfig()
.setAttach("IJPay 公众号支付测试 -By Javen")
.setBody("IJPay 公众号支付测试 -By Javen")
.setOpenId(openId)
.setSpbillCreateIp(ip)
.setTotalFee(total_fee)
.setTradeType(WxPayApi.TradeType.JSAPI)
.setNotifyUrl(notify_url)
.setOutTradeNo(String.valueOf(System.currentTimeMillis()))
.build();
String xmlResult = WxPayApi.pushOrder(false,params);
log.info(xmlResult);
Map<String, String> resultMap = PaymentKit.xmlToMap(xmlResult);
String return_code = resultMap.get("return_code");
String return_msg = resultMap.get("return_msg");
if (!PaymentKit.codeIsOK(return_code)) {
return mv;
}
String result_code = resultMap.get("result_code");
if (!PaymentKit.codeIsOK(result_code)) {
return mv;
}
// 以下字段在return_code 和result_code都为SUCCESS的时候有返回
String prepay_id = resultMap.get("prepay_id");
String timeStamp=String.valueOf(System.currentTimeMillis() / 1000);
String nonce_str=String.valueOf(System.currentTimeMillis());
String packages = "prepay_id="+prepay_id;
Map<String, String> packageParams = new HashMap<String, String>();
packageParams.put("appId", appID);
packageParams.put("timeStamp", timeStamp);
packageParams.put("nonceStr", nonce_str);
packageParams.put("package", "prepay_id=" + prepay_id);
packageParams.put("signType", "MD5");
String packageSign = PaymentKit.createSign(packageParams, WxPayApiConfigKit.getWxPayApiConfig().getPaternerKey());
packageParams.put("paySign", packageSign);
//下面可以通过Map传入参数获取json字符串,其形式和上面一样,传到前台可以转为json形式再用,也是一个�
Jose_hexi
- 粉丝: 4
- 资源: 1
最新资源
- 西门子s7 200smart与3台英威腾GD变频器通讯实战程序 原创可直接用于生产的程序,程序带注释,并附送触摸屏程序,有接线方式和设置,通讯地址说明等 程序采用轮询,可以后续根据要求适当修
- 标签打印C#控制程序源代码,适合自己进行二次开发 软件可以自己编辑标签,可以自动条形码或二维码的位置
- 松下FP-XHC60T 标准可带18轴中型程序,总共逻辑1万多步,含昆仑通态触摸屏程序(触摸屏附带配方功能,以及产能统计:), 项目功能完整主站与两个从站采用PLC链接通讯,该程序为标准框架,故障,复
- WPF智慧工厂数据平台 1, 提供一个智慧工厂数据平台框架 2,理解wpf的设计模式 3,学习如何绘制各种统计图 4,设计页面板块划分 5,如何在适当时候展现动画 有盆友问,这个是否带数据库
- yolo目标检测数据-抽烟、打电话、打哈欠数据集5665张含yolo标签文件(可用于疲劳检测、司机行为检测).zip
- FLAC3D锚杆辅助生成软件根据CAD图自动打锚杆 使用感受 在CAD画出锚杆,启动软件会生成锚杆命令流,call入flac中即可或者复制到自己命令流中,十分便捷 由于开发成软件,永久使用
- 施耐德ATV71原厂纸质原理图纸 施耐德ATV71变频器原理图纸,可以用来研究变频器电路的结构组成、控制原理,为搞清楚变频电路的控制原理、信号的来龙去脉提供科学依据,更能够做为变频器
- 信捷XC PLC与3台施耐德ATV12变频器通讯程序 信捷XC PLC与3台施耐德ATV12变频器通讯,可靠稳定,同时解决施耐德ATV12变频器断电重启后,自准备工作,无需人为准备 器件:信捷XC3
- 电动自行车方案,资料齐全 成熟电动自行车代码方案,学习好资料 中颖中颖电动自行车代码方案,包含代码,原理图,pcb,说明文档 不论是学习电动车代码还是学习电流环,速度环,Pid调节,都是很好
- 三菱PLC FX5U 伺服机器人程序 包括三菱FX5U程序,威纶通触摸屏程序,IO表,材料清单,eplan和PDF电气图 4轴伺服程序,1个机器人,FX5U结构化编程
- 电机启动模型 Matlab simulink 可用于模拟电压暂降等电能质量问题,适配于本家的IEEE 33节点模型
- python入门-外星人小游戏
- 高压大功率电动汽车360V方案 电动汽车高压电机控制器360v乘用车平台,某知名电控厂家主推 产品,软件源代码,软件FOC矢量控制算法,boot源码,全部开源,强大的上位机调试工具带实时波形显示,原理
- matlab 多智能体系统编队控制仿真,非线性,一致性,领导跟随控制,有限时间控制等
- 蛋白质功能预测中的深度学习方法:结合序列与互作网络的深层分类模型(DeepGO)
- 三菱纯水设备程序纯水设备程序 使用三菱A系列 PLC和三菱A985GOT触摸屏,也可以额外有偿转移指其他触摸屏,比如昆仑通态和威纶通还有信捷等等
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
前往页