/**
* 微信支付信息封装。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支付接口,创建预支付交易订单,将订单信息发送到客户端,客户端再调用微信支付SDK完成支付。封装这部分API可能包括生成订单、处理支付回调、验证支付结果等功能。 4. **银联支付API封装**: ...
本文将详细介绍如何进行微信及支付宝支付的封装,以便于开发者更高效地实现这两种支付方式。 首先,我们需要了解微信支付和支付宝支付的基础概念。微信支付是腾讯公司推出的移动支付服务,用户可以通过微信App进行...
2、微信扫码支付API封装,生成微信支付的二维码地址 3、微信APP支付API封装 4、银联支付API封装 5、开发环境为Visual Studio 2015,无数据库,使用.net 4.0开发。 6、需要各个支付的配置信息一次在config目录配置
在.NET开发环境中,为了实现与支付宝、微信以及银联支付平台的接口集成,开发者通常需要对各个支付平台的API进行封装,以便简化支付流程并确保兼容性。此压缩包"**c#开发支付宝微信银联支付API调用封装源码.zip**...
SP 扫码支付是用的最普遍的一种接口,所有 ASP 的网站都可以整合使用,微信扫码支付结果会实时在微信中回调显示,同时实现支付下单结果返回,并入库自动更新订单操作。 微信公众号支付是基于微信公众号而开发的支付...
微信小程序支付SDK二次封装主要目的是为了简化开发流程,让开发者能更快速、便捷地集成到自己的小程序项目中。本文将详细介绍这个二次封装的过程以及如何利用它进行支付操作。 首先,我们要理解微信小程序支付的...
在iOS应用开发中,集成微信和支付宝支付是常见的需求,特别是在电商、社交和其他涉及交易的APP中。本文将深入探讨如何进行微信支付和...在实际项目中,正确、高效地封装支付功能是提升产品质量和用户满意度的关键步骤。
Delphi开发的微信、支付宝支付源代码,无需域名,只需输入微信公众号、微信商户号、微信API密钥;支付宝APPID 、支付宝验签密钥文件;订单编号、支付金额,就可以完成以下微信、支付宝支付。 1、生成微信支付二维码...
微信支付工具类是一系列用于处理微信支付业务的Java类,它们封装了与微信支付接口交互的逻辑,使得开发者能够更方便地集成微信支付功能到自己的应用程序中。以下是对这些类的功能和作用的详细说明: 1. **WXPay....
6. **预支付订单**:在用户实际支付之前,你需要通过调用微信支付API生成预支付订单,这个订单包含了商品信息、金额等交易详情,微信支付服务器会返回一个预支付交易会话标识(prepay_id),这个标识在前端H5页面中...
在iOS开发中,微信支付和支付宝支付是两种常见的移动支付方式。为了提供用户友好的体验,开发者有时需要在应用内部实现从微信支付链接无缝跳转到支付宝支付的过程。本篇文章将详细讲解如何在iOS原生环境中封装这个...
微信二维码扫码支付,APP发起微信支付接口,等等
2、微信扫码支付API封装,生成微信支付的二维码地址 3、微信APP支付API封装 4、银联支付API封装 按照实例配置好各个API的参数即可。 //服务器异步通知页面路径 string notify_url = ""; //页面跳转同步通知页面...
4. **支付结果通知**:当用户完成支付后,微信服务器会通过回调URL将支付结果通知给商户服务器,商户需要处理这些回调信息,进行订单状态的更新。 5. **订单查询**:在某些情况下,如网络延迟或用户关闭页面,可能...
- **统一下单接口**:这是支付流程的起点,开发者通过调用此接口,将订单信息提交给微信支付服务器,获取预支付交易会话标识。 - **支付结果通知接口**:当用户完成支付后,微信服务器会回调此接口,告知开发者...
3. **调用微信支付SDK**:利用提供的DLL,开发者可以调用微信支付的SDK,将预支付订单信息发送到微信服务器进行签名验证。 4. **生成二维码或H5页面**:成功验证后,会返回一个支付交易的唯一标识,开发者可以将其...
微信、支付宝支付整合,自用,仅供参考
微信H5支付,微信浏览器支付,微信支付 1, 修改wxpay.php文件的参数 define('APPID','APPID'); define('APIKEY','商户安全密钥'); define('MCH_ID','商户ID'); define('NOTIFY_URL','http://你的域名/return_url....
本项目"Android-Android微信支付宝支付封装"提供了一种便捷的方式,帮助开发者快速集成这两种主流移动支付方式。 首先,我们要理解的是支付流程。在Android应用中,微信支付通常涉及以下几个步骤:调用微信开放平台...
本文将深入探讨如何将支付宝和微信支付进行封装,以便在应用程序中轻松调用,实现无缝集成。 首先,我们需要理解支付宝和微信支付的基本工作原理。支付宝主要基于Alipay SDK,提供包括SDK初始化、订单生成、支付...