/**
* 微信支付信息封装。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;
}
相关推荐
iOS 微信及支付宝的封装
封装了微信Native支付V3版本,使用.net framework开发,集成了微信统一下单、查询订单、关闭订单、订单退款接口和签名; 文件直接拷贝到.net项目里即可使用,文件所需要的DLL通过NuGet程序包可直接安装,压缩包中...
1、支付宝电脑端扫码支付API封装 2、微信扫码支付API封装,生成微信支付的二维码地址 3、微信APP支付API封装 4、银联支付API封装
SP 扫码支付是用的最普遍的一种接口,所有 ASP 的网站都可以整合使用,微信扫码支付结果会实时在微信中回调显示,同时实现支付下单结果返回,并入库自动更新订单操作。 微信公众号支付是基于微信公众号而开发的支付...
支付宝微信银联支付API调用封装源码。源码为.net开发,。很全,亲测可用。也是自己当时做项目的收获。当时找了好久。这个源码完整上手就能用
Delphi开发的微信、支付宝支付源代码,无需域名,只需输入微信公众号、微信商户号、微信API密钥;支付宝APPID 、支付宝验签密钥文件;订单编号、支付金额,就可以完成以下微信、支付宝支付。 1、生成微信支付二维码...
支付宝支付调用API封装微信扫码支付API封装微信APP支付API封装银联支付API封装
微信二维码扫码支付,APP发起微信支付接口,等等
iOS微信支付宝支付简易封装,只需引入SDK,在Appdelegate.m中重写openURL方法和continueUserActivity方法,做好相应的处理即可
微信H5支付,微信浏览器支付,微信支付 1, 修改wxpay.php文件的参数 define('APPID','APPID'); define('APIKEY','商户安全密钥'); define('MCH_ID','商户ID'); define('NOTIFY_URL','http://你的域名/return_url....
微信支付功能封装,适用所有公众号、微信小程序支付wxpay-master.zip
微信native支付, 微信JSAPI支付, 微信退款, 微信提现, 微信付款查询, 所有方法都已经封装实现, main方法可直接调用体验, maven项目
2、微信扫码支付API封装,生成微信支付的二维码地址 3、微信APP支付API封装 4、银联支付API封装 5、开发环境为Visual Studio 2015,无数据库,使用.net 4.0开发。 6、需要各个支付的配置信息一次在config目录配置
微信/支付宝 H5支付接口(C#版demo)
DWQPayManager 针对微信支付及支付宝支付的封装
Android 微信支付宝支付封装
c#微信支付宝支付,可直接借鉴用于二次开发。
1.微信中访问链接直接支付,2.浏览器中(PC或H5)访问链接,产生支付二维码使用微信扫码支付。支付宝也包含两种支付方式:1.手机访问链接,调用支付宝APP进行支付;2.电脑访问链接,产跳转到支付宝官网产生付款码...
c#开发的微信、支付宝支付源代码,无需域名,只需输入微信公众号、微信商户号、微信API密钥;支付宝APPID 、支付宝验签密钥文件;订单编号、支付金额,就可以完成以下微信、支付宝支付。 1、生成微信支付二维码...