package com.wyx.wxpay.controller;
import com.wyx.wxpay.entity.json.JSONResponse;
import com.wyx.wxpay.entity.wechat.UnifiedorderDataVO;
import com.wyx.wxpay.util.*;
import com.wyx.wxpay.util.TextMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
/**
* TestController
*
* @author WuYuxiang
* @date 2016/10/31
*/
@Controller
@RequestMapping("/")
public class TestController {
private JSONResponse jsonResponse;
private final Logger log = LoggerFactory.getLogger(this.getClass());
/**
* forward index.jsp
*
* @return
*/
@RequestMapping("index")
public String index() {
return "index";
}
@RequestMapping("wechatpay")
@ResponseBody
public JSONResponse wechatpay() {
jsonResponse = new JSONResponse();
jsonResponse.setResult(JSONResponse.Result.SUCCESS);
jsonResponse.setQrCode("weixin://wxpay/bizpayurl?pr=CqaIqk5");
UnifiedorderDataVO unifiedorderDataVO = new UnifiedorderDataVO();
unifiedorderDataVO = this.unifiedorder();
TextMessage textMessage = new TextMessage(unifiedorderDataVO);
String respMessage = MessageUtil.textMessageToXml(textMessage);
try {
String result = HttpUtil.httpsRequest("https://api.mch.weixin.qq.com/pay/unifiedorder",
"POST", respMessage.replaceAll("__", "_"));
Map<String, String> resultmap = XMLUtil.doXMLParse(result);
if ("SUCCESS".equals(resultmap.get("result_code")) && "SUCCESS".equals(resultmap.get("return_code"))) {
jsonResponse.setQrCode(resultmap.get("code_url"));
}
} catch (Exception e1) {
log.error("错误:扫码支付 -调用统一支付接口获取预支付订单出现异常!" + textMessage, e1);
}
return jsonResponse;
}
/**
* 封装统一下单订单参数
*
* @return
*/
public UnifiedorderDataVO unifiedorder() {
UnifiedorderDataVO unifiedorderDataVO = new UnifiedorderDataVO();
//公众号id--必填
unifiedorderDataVO.setAppid("wxc7f1f00a7e6d9165");
//商品备注--必填
unifiedorderDataVO.setAttach("certcodexxxxxxxxxxxxx");
//商户号(微信支付分配的商户号)--必填
unifiedorderDataVO.setMch_id("1270224101");
//随即字符串--必填
unifiedorderDataVO.setNonce_str(SignUtil.getUUID());
//商品描述--必填
unifiedorderDataVO.setBody("测试支付");
String orderId = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format((new Date())).
replaceAll("(?:-| |:)", "") + SignUtil.getUUID().substring(0, 18);
//商户订单号--必填
unifiedorderDataVO.setOut_trade_no(orderId);
//总金额--必填
unifiedorderDataVO.setTotal_fee(1);
//终端ip
unifiedorderDataVO.setSpbill_create_ip("123.103.13.184");
//通知地址--必填
// unifiedorderDataVO.setNotify_url("http://pay.edufe.zgbxdx.cn/demo/returnMessage");
unifiedorderDataVO.setNotify_url("http://zgrz.daxue.iachina.cn/demo/returnMessage");
//交易类型--必填-NATIVE二维码支付
unifiedorderDataVO.setTrade_type("NATIVE");
unifiedorderDataVO.setProduct_id(orderId);
//商户key -- secret
unifiedorderDataVO.setKey("5fb57d35446a4264810766ef50f581ad");
//拼接字符串 --签名用
String paySign = "appid=" + unifiedorderDataVO.getAppid() +
"&attach=" + unifiedorderDataVO.getAttach() +
"&body=" + unifiedorderDataVO.getBody() +
"&mch_id=" + unifiedorderDataVO.getMch_id() +
"&nonce_str=" + unifiedorderDataVO.getNonce_str() +
"¬ify_url=" + unifiedorderDataVO.getNotify_url() +
"&out_trade_no=" + unifiedorderDataVO.getOut_trade_no() +
"&product_id=" + unifiedorderDataVO.getProduct_id() +
"&spbill_create_ip=" + unifiedorderDataVO.getSpbill_create_ip() +
"&total_fee=" + unifiedorderDataVO.getTotal_fee() +
"&trade_type=" + unifiedorderDataVO.getTrade_type() +
"&key=" + unifiedorderDataVO.getKey();
//签名
unifiedorderDataVO.setSign(MD5Util.MD5Encode(paySign.toString(), "UTF-8").toUpperCase());
return unifiedorderDataVO;
}
/**
* 支付成功后回调处理
*/
@RequestMapping("returnMessage")
public void returnMessage(HttpServletRequest request, HttpServletResponse response) throws IOException {
try {
BufferedReader br = new BufferedReader(
new InputStreamReader((ServletInputStream) request.getInputStream()));
String line = null;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line);
}
String resXml = "";
String wcXml = sb.toString();
Map<String, String> m;
UnifiedorderDataVO unifiedorderDataVO = new UnifiedorderDataVO();
try {
m = XMLUtil.doXMLParse(wcXml);
unifiedorderDataVO.setAppid(m.get("appid").toString());
unifiedorderDataVO.setAttach(m.get("attach").toString());
unifiedorderDataVO.setFee_type(m.get("fee_type").toString());
unifiedorderDataVO.setMch_id(m.get("mch_id").toString());
unifiedorderDataVO.setOpenid(m.get("openid").toString());
unifiedorderDataVO.setOut_trade_no(m.get("out_trade_no").toString());
unifiedorderDataVO.setResultCode(m.get("result_code").toString());
unifiedorderDataVO.setReturnCode(m.get("return_code").toString());
unifiedorderDataVO.setSign(m.get("sign").toString());
unifiedorderDataVO.setTimeEnd(m.get("time_end").toString());
unifiedorderDataVO.setTotal_fee(Integer.parseInt(m.get("total_fee")));
unifiedorderDataVO.setTrade_type(m.get("trade_type").toString());
unifiedorderDataVO.setTransactionId(m.get("transaction_id").toString());
System.out.println(unifiedorderDataVO.getMch_id());
System.out.println(unifiedorderDataVO.getTotal_fee());
System.out.println(unifiedorderDataVO.getAttach());
System.out.println(unifiedorderDataVO.getBody());
} catch (Exception e) {
e.printStackTrace();
log.info("解析回掉xml文件失败" + e);
}
if ("SUCCESS".equals(unifiedorderDataVO.getResultCode())) {
log.info("回调成功!!回调成功!!回调成功!!回调成功!!回调成功!!回调成功!!");
System.out.println("回调成功!!回调成功!!回调成功!!回调成功!!回调成功!!回调成功!!");
log.info("===========支付成功===========");
resXml = "<xml>" + "<return_code><![CDATA[SUCCESS]]></return_code>"
+ "<return_msg><![CDATA[OK]]></return_msg>" + "</xml> ";
log.info("===========修改订单
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论





收起资源包目录





































































































共 129 条
- 1
- 2
资源评论

- doudou_7152019-01-24不错,有参考价值
- cnhww2019-05-10https://download.csdn.net/download/cnhww/11153341 下载这个吧。虚拟主机就可以用。而且免费 .说明一下。这个是ASP的微信支付接口

VikasDhanve
- 粉丝: 11
- 资源: 12
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- (源码)基于C语言和KiCad的VoltageCurrent Bricklet 2.0固件与硬件设计.zip
- (源码)基于IoT和机器学习算法的食品腐坏检测系统Decay Inspector.zip
- (源码)基于Python和CC++的MicroBit开发工具包.zip
- (源码)基于Vue3和Go的微软New Bing演示站点.zip
- (源码)基于C语言和TinyMaix框架的STM32F767图像分类系统.zip
- (源码)基于Qt框架的勇者跑酷游戏.zip
- (源码)基于Python的Arduino编程环境构建与扩展.zip
- (源码)基于Python语言的自动任务延时处理系统.zip
- (源码)基于DE1SoC开发板的水果接接乐游戏.zip
- (源码)基于Arduino的游戏控制台.zip
- (源码)基于Spring Boot框架的Microsoft API自动调用系统.zip
- (源码)基于C#的WOWS助手.zip
- (源码)基于Spark Core的Nagios监视器与LED点阵显示系统.zip
- (源码)基于MXNet框架的图片风格迁移.zip
- (源码)基于Spring Boot框架的音乐节奏游戏.zip
- (源码)基于ROS的mra7a机器人控制教程.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
