`
a729812804
  • 浏览: 41856 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

微信 wxPaymentPackage 支付信息封装

 
阅读更多

/**

* 微信支付信息封装。java版

* @return

* @throws IOException

* @throws QQConnectException

*/

@SuppressWarnings("unchecked")

public String wxPaymentPackage() throws IOException, QQConnectException {

logger.error("token token========" + token);

Account account = (Account) getSession().getAttribute(FrontContainer.USER_INFO);

token = (Token) getSession().getAttribute(ConfigUtil.APPID + "token");

logger.error("token token========" + token);

if (account == null || StringUtils.isBlank(account.getAccount()) || token == null) {

return this.wxLogin();

}

//自己订单信息自己封装

order = (Order) getSession().getAttribute("order");// 订单信息

getSession().setAttribute("order", null);

ordership = (Ordership) getSession().getAttribute("ordership");// 配送信息

getSession().setAttribute("ordership", null);

logger.error("微信 payapireturnurl.order.id  ============" + order.getId());

logger.error("微信 payapireturnurl.ordership.id  ============" + ordership.getId());

// 封装

SortedMap<Object, Object> parameters = new TreeMap<Object, Object>();

parameters.put("appid", ConfigUtil.APPID);

parameters.put("mch_id", ConfigUtil.MCH_ID);

parameters.put("device_info", "WEB");

parameters.put("nonce_str", PayCommonUtil.CreateNoncestr());

parameters.put("body", order.getRemark());

parameters.put("out_trade_no", order.getId() + 12);

parameters.put("total_fee", String.valueOf((int) (Float.parseFloat(order.getAmount()) * 100)));// order.getTotal()

// 必须是字符串

// 否则报转换错误

// 单位为分;

String spbill_create_ip = AddressUtils.getIp(getRequest());

parameters.put("spbill_create_ip", spbill_create_ip);

parameters.put("notify_url", ConfigUtil.NOTIFY_URL);

parameters.put("trade_type", "JSAPI");

parameters.put("openid", token.getOpenId());// 需要获取

String sign = PayCommonUtil.createSign("UTF-8", parameters);

parameters.put("sign", sign);

String requestXML = PayCommonUtil.getRequestXml(parameters);

logger.error("requestXML  ===" + requestXML);

String result = CommonUtil.httpsRequest(ConfigUtil.UNIFIED_ORDER_URL, "POST", requestXML);

Map<String, String> map = new HashMap();

String json = "";

try {

map = XMLUtil.doXMLParse(result);

} catch (JDOMException e) {

logger.error("JDOMException===" + e.getMessage());

throw new NullPointerException("JDOMException参数异常");

} catch (IOException e) {

logger.error("IOException====" + e.getMessage());

throw new NullPointerException("IOException参数异常");

}// 解析微信返回的信息,以Map形式存储便于取值

SortedMap<Object, Object> params = new TreeMap<Object, Object>();

String timeStamp = Long.toString(new Date().getTime()).substring(0, 10);

String nonceStr = PayCommonUtil.CreateNoncestr();

if (!map.isEmpty()) {

params.put("appId", ConfigUtil.APPID);

params.put("timeStamp", timeStamp);

params.put("nonceStr", nonceStr);

params.put("package", "prepay_id=" + map.get("prepay_id"));

params.put("signType", ConfigUtil.SIGN_TYPE);

String paySign = PayCommonUtil.createSign("UTF-8", params);

params.put("packageValue", "prepay_id=" + map.get("prepay_id")); // 这里用packageValue是预防package是关键字在js获取值出错

params.put("paySign", paySign); // paySign的生成规则和Sign的生成规则一致

params.put("sendUrl", ConfigUtil.SUCCESS_URL); // 付款成功后跳转的页面

params.put("orderid", order.getId()); // 订单号

String userAgent = getRequest().getHeader("user-agent");

char agent = userAgent.charAt(userAgent.indexOf("MicroMessenger") + 15);

params.put("agent", new String(new char[] { agent }));// 微信版本号,用于前面提到的判断用户手机微信的版本是否是5.0以上版本。

}

json = JSONObject.fromObject(params).toString();

logger.error("json===" + json);

getRequest().setAttribute("json", json);

return null;

}

分享到:
评论

相关推荐

    微信及支付宝 支付封装

    本文将详细介绍如何进行微信及支付宝支付的封装,以便于开发者更高效地实现这两种支付方式。 首先,我们需要了解微信支付和支付宝支付的基础概念。微信支付是腾讯公司推出的移动支付服务,用户可以通过微信App进行...

    C#asp.net支付宝微信银联支付API调用封装源码

    2、微信扫码支付API封装,生成微信支付的二维码地址 3、微信APP支付API封装 4、银联支付API封装 5、开发环境为Visual Studio 2015,无数据库,使用.net 4.0开发。 6、需要各个支付的配置信息一次在config目录配置

    asp.net支付宝微信银联支付API调用封装源码C#

    它涉及到调用微信APP支付接口,创建预支付交易订单,将订单信息发送到客户端,客户端再调用微信支付SDK完成支付。封装这部分API可能包括生成订单、处理支付回调、验证支付结果等功能。 4. **银联支付API封装**: ...

    c#开发支付宝微信银联支付API调用封装源码.zip

    在.NET开发环境中,为了实现与支付宝、微信以及银联支付平台的接口集成,开发者通常需要对各个支付平台的API进行封装,以便简化支付流程并确保兼容性。此压缩包"**c#开发支付宝微信银联支付API调用封装源码.zip**...

    C# 微信Native支付ApiV3 .net framework

    封装了微信Native支付V3版本,使用.net framework开发,集成了微信统一下单、查询订单、关闭订单、订单退款接口和签名; 文件直接拷贝到.net项目里即可使用,文件所需要的DLL通过NuGet程序包可直接安装,压缩包中...

    Asp微信支付系统接口代码下载 修复版+微信扫码支付+H5支付+微信公众号支付+微信红包支付+微信刷卡支付等等

    SP 扫码支付是用的最普遍的一种接口,所有 ASP 的网站都可以整合使用,微信扫码支付结果会实时在微信中回调显示,同时实现支付下单结果返回,并入库自动更新订单操作。 微信公众号支付是基于微信公众号而开发的支付...

    iOS 微信和支付宝,支付封装

    在iOS应用开发中,集成微信和支付宝支付是常见的需求,特别是在电商、社交和其他涉及交易的APP中。本文将深入探讨如何进行微信支付和...在实际项目中,正确、高效地封装支付功能是提升产品质量和用户满意度的关键步骤。

    SpringBoot集成H5微信支付宝支付

    4. **生成支付请求**:创建支付请求对象,设置交易类型(JSAPI支付)、商品描述、openid(对于H5支付,通常通过微信分享或扫码获取)等信息。 5. **调用微信统一下单接口**:通过微信支付SDK的API,调用统一下单接口...

    微信支付宝扫码支付DELPHI示例源码.rar

    Delphi开发的微信、支付宝支付源代码,无需域名,只需输入微信公众号、微信商户号、微信API密钥;支付宝APPID 、支付宝验签密钥文件;订单编号、支付金额,就可以完成以下微信、支付宝支付。 1、生成微信支付二维码...

    微信支付工具类--封装全部微信支付工具类

    微信支付工具类是一系列用于处理微信支付业务的Java类,它们封装了与微信支付接口交互的逻辑,使得开发者能够更方便地集成微信支付功能到自己的应用程序中。以下是对这些类的功能和作用的详细说明: 1. **WXPay....

    thinkphp微信、支付宝支付整合

    微信、支付宝支付整合,自用,仅供参考

    PHP微信H5支付完整代码(包含回调后台代码),改好商户资料和您回调地址即可使用

    6. **预支付订单**:在用户实际支付之前,你需要通过调用微信支付API生成预支付订单,这个订单包含了商品信息、金额等交易详情,微信支付服务器会返回一个预支付交易会话标识(prepay_id),这个标识在前端H5页面中...

    iOS 原生加载微信支付链接跳转支付宝方法封装

    在iOS开发中,微信支付和支付宝支付是两种常见的移动支付方式。为了提供用户友好的体验,开发者有时需要在应用内部实现从微信支付链接无缝跳转到支付宝支付的过程。本篇文章将详细讲解如何在iOS原生环境中封装这个...

    微信小程序支付sdk二次封装(开箱即用)

    微信小程序支付SDK二次封装主要目的是为了简化开发流程,让开发者能更快速、便捷地集成到自己的小程序项目中。本文将详细介绍这个二次封装的过程以及如何利用它进行支付操作。 首先,我们要理解微信小程序支付的...

    微信支付组件,封装组件

    - **统一下单接口**:这是支付流程的起点,开发者通过调用此接口,将订单信息提交给微信支付服务器,获取预支付交易会话标识。 - **支付结果通知接口**:当用户完成支付后,微信服务器会回调此接口,告知开发者...

    支付宝微信银联支付API调用封装源码

    2、微信扫码支付API封装,生成微信支付的二维码地址 3、微信APP支付API封装 4、银联支付API封装 按照实例配置好各个API的参数即可。 //服务器异步通知页面路径 string notify_url = ""; //页面跳转同步通知页面...

    微信H5支付DEMO 绝对可用

    4. **支付结果通知**:当用户完成支付后,微信服务器会通过回调URL将支付结果通知给商户服务器,商户需要处理这些回调信息,进行订单状态的更新。 5. **订单查询**:在某些情况下,如网络延迟或用户关闭页面,可能...

    C#,.NET 微信支付封装源码

    微信二维码扫码支付,APP发起微信支付接口,等等

    swift-简单封装微信与支付宝支付代码帮助大家快速完成iOS端支付的接入

    微信支付的基本流程包括:用户选择商品,点击支付,应用跳转到微信支付界面,用户确认支付信息并支付,最后微信返回支付结果到应用。 “支付宝支付”则是通过支付宝开放平台进行集成。同样需要注册获取商户账号和...

    Android-Android微信支付宝支付封装

    本项目"Android-Android微信支付宝支付封装"提供了一种便捷的方式,帮助开发者快速集成这两种主流移动支付方式。 首先,我们要理解的是支付流程。在Android应用中,微信支付通常涉及以下几个步骤:调用微信开放平台...

Global site tag (gtag.js) - Google Analytics