
所有需求均来自业务需求. 我们前一段时间进行了微信扫描代码付款,对于PC用户来说确实更加方便. 但是,如果手机订购了,您不能让用户自己打扫自己吗?在检查了文档之后,微信仍然支持通过公共帐户中的网页进行支付转移(前提是您必须具有微信服务帐户并申请微信支付功能).
因为该公司当前使用的支付项目是由JAVA代码开发的,但是微信给出的演示没有Java版本,只有PHP版本(PHP实际上是世界上最好的语言).

可以跳过开幕词. 我们来看看微信提供的业务流程时序图:
乍看之下,它很吓人吗?实际上,扫描代码付款已经完成,逻辑仍然很简单,我们需要开发红色标记.

尽管微信官方网站上的图片分布仍然非常详尽,但在这里我不得不重新考虑一下. 用户选择一个产品-> {很多过程,以后再写}->重定向到用户确认界面,包括一些产品信息,金额和其他信息->用户输入密码后,会出现一个成功的付款页面->用户单击以完成回调通知.
请求生成订单,生成商户订单,获取openID,下达统一订单以获取prepay_id参数,为JSAPI页面调用和签名生成支付参数.

首先,请求生成订单. 下订单的API与扫描代码付款的API相同,但是参数不同. 1)交易类型trade_type的值必须为JSAPI(JSAPI--公共帐户付款,NATIVE--本地扫描代码付款,APP--app付款,统一订单界面trade_type的转移参数可以在这里参考MICROPAY- -刷卡付款,刷卡付款还有一个单独的付款界面,请勿调用统一订单界面)
2)当trade_type = JSAPI(即,公共帐户付款)时,用户ID openId是必需参数. 在此微信支付java开发详细,涉及获取问题. 有些文章说您可以下订单而无需获取订单. 测试微信支付java开发详细,至少我在这里不能做到.

首先致电前台的微信; redirect_uri = http: //weixin.52itstyle.com/pay/weixinMobile/dopay&response_type=code&scope=snsapi_base&state=“ + xxxxx +” #wechat_redirect“;这时您将在后台代码参数的dopay方法中收到一个. = request.getParameter(“ code”);然后根据此代码获取用户openid,请参考具体方法.
3)生成命令后获取prepay_id,这是关键点,然后根据给定的参数进行加密; index =6. 最后,将参数返回到前台,即以url指定的方式付款.
流程图不保留,菊花戳人,所以最后附上一段代码:
/**
* 预下单(对于已经产生的订单)
* @Author 张志朋
* @param request
* @param response
* @return
* @throws Exception String
* @Date 2017年1月17日
* 更新日志
* 2017年1月17日 张志朋 首次创建
*
*/
@SuppressWarnings("rawtypes")
@RequestMapping(value = "dopay")
public String dopay(HttpServletRequest request, HttpServletResponse response) throws Exception {
//其实这里只要传递一个订单编号即可
String state = request.getParameter("state");
String[] split = state.split("CUT");
String totalFee = split[0];
String orderNo = split[1];
//获取code 这个在微信支付调用时会自动加上这个参数 无须设置
String code = request.getParameter("code");
//获取用户openID(JSAPI支付必须传openid)
String openId = MobileUtil.getOpenId(code);
String notify_url = "http://weixin.52itstyle.com/pay/weixinMobile/WXPayBack";//回调接口
String trade_type = "JSAPI";// 交易类型H5支付
SortedMap<Object, Object> packageParams = new TreeMap<Object, Object>();
ConfigUtil.commonParams(packageParams);
packageParams.put("body","测试微信H5支付");// 商品描述
packageParams.put("out_trade_no", orderNo);// 商户订单号
packageParams.put("total_fee", totalFee);// 总金额
packageParams.put("spbill_create_ip", "127.0.0.1");// 发起人IP地址
packageParams.put("notify_url", notify_url);// 回调地址
packageParams.put("trade_type", trade_type);// 交易类型
packageParams.put("openid", openId);//用户openID
String sign = PayCommonUtil.createSign("UTF-8", packageParams,ConfigUtil.API_KEY);
packageParams.put("sign", sign);// 签名
String requestXML = PayCommonUtil.getRequestXml(packageParams);
String resXml = HttpUtil.postData(ConfigUtil.UNIFIED_ORDER_URL, requestXML);
Map map = XMLUtil.doXMLParse(resXml);
String returnCode = (String) map.get("return_code");
String returnMsg = (String) map.get("return_msg");
String url ="";
if("SUCCESS".equals(returnCode)){
String resultCode = (String) map.get("result_code");
String errCodeDes = (String) map.get("err_code_des");
if("SUCCESS".equals(resultCode)){
//获取预支付交易会话标识
String prepay_id = (String) map.get("prepay_id");
String prepay_id2 = "prepay_id=" + prepay_id;
String packages = prepay_id2;
SortedMap<Object, Object> finalpackage = new TreeMap<Object, Object>();
String timestamp = DateUtil.getTimestamp();
String nonceStr = packageParams.get("nonce_str").toString();
finalpackage.put("appId", ConfigUtil.APP_ID);
finalpackage.put("timeStamp", timestamp);
finalpackage.put("nonceStr", nonceStr);
finalpackage.put("package", packages);
finalpackage.put("signType", "MD5");
//这里很重要 参数一定要正确 狗日的腾讯 参数到这里就成大写了
//可能报错信息(支付验证签名失败 get_brand_wcpay_request:fail)
sign = PayCommonUtil.createSign("UTF-8", finalpackage,ConfigUtil.API_KEY);
url = "redirect:/weixinMobile/pay?timeStamp="
+ timestamp
+ "&nonceStr=" + nonceStr + "&package=" + packages
+ "&signType=MD5" + "&paySign=" + sign
+"&appid="+ ConfigUtil.APP_ID;
}else{
LogUtil.info("订单号:"+orderNo+"错误信息:"+errCodeDes);
url = "redirect:/weixinMobile/error?code=0";//该订单已支付
}
}else{
LogUtil.info("订单号:"+orderNo+"错误信息:"+returnMsg);
url = "redirect:/weixinMobile/error?code=1";//系统系统
}
return url;
}
pay.jsp
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/sanxing/article-204579-1.html
战争其实离我们不远
你唱歌好听吗