微信支付--预支付(统一下单)
来源:互联网 发布:淘宝酒类选什么类女 编辑:程序博客网 时间:2024/04/28 08:53
微信官方文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1
1.按照微信官方文档统一下单接口的描述,将请求参数放入Map
protected Map<String, Object> processPost(HttpServletRequest request, HttpServletResponse response) throws BaseException { String attach = ConvertUtil.getTrimStringFromRequestParam(request, "attach", ""); String device_info = ConvertUtil.getTrimStringFromRequestParam(request, "device_info", WXPayConstants.DEVICE_INFO_DEFAULT.WEB.toString()); String body = ConvertUtil.getNonEmptyStringFromRequestParam(request, "body"); String detail = ConvertUtil.getTrimStringFromRequestParam(request, "detail", ""); String out_trade_no = ConvertUtil.getNonEmptyStringFromRequestParam(request, "out_trade_no"); String total_fee = ConvertUtil.getNonEmptyStringFromRequestParam(request, "total_fee"); String trade_type = ConvertUtil.getTrimStringFromRequestParam(request, "trade_type", WXPayConstants.TRADE_TYPE.JSAPI.toString()); String product_id = ConvertUtil.getNonEmptyStringFromRequestParam(request, "product_id"); String openid = ConvertUtil.getNonEmptyStringFromRequestParam(request, "openid"); Map<String, Object> parametersMap = CommonUtils.createMap("appid", WXPayConstants.APP_ID);//appid CommonUtils.generateMap(parametersMap, "attach", attach);//附加数据 CommonUtils.generateMap(parametersMap, "mch_id", WXPayConstants.PAY_STORE_ID);//商户号 CommonUtils.generateMap(parametersMap, "device_info", device_info);//设备号 自定义参数,可以为终端设备号(门店号或收银设备ID),PC网页或公众号内支付可以传"WEB" CommonUtils.generateMap(parametersMap, "nonce_str", WXPayUtil.generateNonceStr()); CommonUtils.generateMap(parametersMap, "sign_type", WXPayConstants.SignType.MD5); CommonUtils.generateMap(parametersMap, "body", body);//商品描述 CommonUtils.generateMap(parametersMap, "detail", detail);//商品详情 CommonUtils.generateMap(parametersMap, "out_trade_no", out_trade_no);//自己系统的订单号 CommonUtils.generateMap(parametersMap, "fee_type", WXPayConstants.FEE_TYPE.CNY); CommonUtils.generateMap(parametersMap, "total_fee", total_fee);//单位位分 CommonUtils.generateMap(parametersMap, "spbill_create_ip", CommonUtils.getIpAddr(request)); CommonUtils.generateMap(parametersMap, "notify_url", WXPayConstants.NOTIFY_URL); CommonUtils.generateMap(parametersMap, "trade_type", trade_type); CommonUtils.generateMap(parametersMap, "product_id", product_id);//商品id CommonUtils.generateMap(parametersMap, "openid", openid);//open id return WechatService.prepayId(parametersMap); }
2.用微信自带的工具类对map进行加密并获取签名
/** * 统一支付(获取预支付id) * @param * @return * @author lichenyi * @date 2017-8-25 0025 10:44 */ public static Map<String, Object> prepayId(Map<String, Object> parametersMap) throws HttpRequestFailedException, MD5Exception { String resultString = null; try { String parameterXML = WXPayUtil.generateSignedXml(parametersMap); //wechat origin code WXPayRequest wxPayRequest = new WXPayRequest(new WXPayConfigBean()); resultString = wxPayRequest.requestWithoutCert(WXPayConstants.UNIFIEDORDER_URL_SUFFIX, WXPayUtil.generateNonceStr(), parameterXML, false); logger.info("【预支付订单信息】 --> "+WXPayUtil.xmlToMap(resultString)); return WXPayUtil.xmlToMap(resultString); } catch (Exception e) { e.printStackTrace(); } return null; }
写的粗糙,有疑问,可以留言。
如果觉得文章真心好, 请打赏下我吧http://blog.csdn.net/assassinsshadow/article/details/76086401
阅读全文
0 0
- 微信支付--预支付(统一下单)
- 微信支付的第一步:预支付
- 微信公众号支付——预支付订单
- 微信支付-----统一下单action
- 微信支付统一下单
- 微信支付之统一下单
- 微信app支付-统一下单
- 【微信开发】支付-统一下单
- 如何集成android微信支付及各种问题(-1,签名错误,无法获得预支付id)的解决办法。
- 5.微信支付之统一下单
- 微信支付(java版本)_统一下单
- java微信app支付-统一下单
- 微信支付 进行统一下单 签名错误
- 微信支付(java版本)_统一下单
- 微信支付统一下单,签名错误
- 微信支付》统一下单接口调用
- 微信开发-公众号支付(2)-统一下单
- 微信支付-扫码支付-原生支付-统一下单-参数说明
- [FreeBSD] 安全加固
- 动态规划
- Spring MVC 参数包含中文会导致乱码的额问题,解决方案
- 三种无限极分类
- 时间戳与时间格式的相互转换
- 微信支付--预支付(统一下单)
- Hadoop集群安装
- 最短路径算法——Dijkstra(迪杰斯特拉)
- TP5+SPL迭代器--MultipleIterator
- Hello Blog
- 最长上升子序列
- css3使用transform出现字体模糊的解决办法
- 关于网站优化基础技巧_关键词的整理和分析
- 剑指offer_数组---顺时针打印矩阵