支付宝手机H5支付笔记
来源:互联网 发布:淘宝卖家小卡片内容 编辑:程序博客网 时间:2024/04/28 01:47
支付宝的文档其实说的很清楚了
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.ro3ZlF&treeId=203&articleId=105285&docType=1
https://b.alipay.com 登陆
跳转管理中心 创建新应用
填写应用环境
填写功能信息
上线应用
然后具体业务实现
首先 要用我们的订单号去支付宝 下单 然后支付宝会给我们一个html字符串
/** * 外部商户创建订单 * * @return */ public String unifiedOrder(String caseNum) { RechargeBase rechargeBase = chargeService.queryRechargeBaseByOne(caseNum); WXGoodsDetail gd = BeanHelper.copyProperties(rechargeBase, WXGoodsDetail.class); AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();// 创建API对应的request alipayRequest.setReturnUrl("http://XXXXXX/XXX/XXX/gateway"); alipayRequest.setNotifyUrl("http://XXXXXX/XXX/XXX/orderback");// 在公共参数中设置回跳和通知地址 alipayRequest.setBizContent("{" + " \"out_trade_no\":\"" + gd.getSequenceNumber() + "\"," + " \"total_amount\":" + gd.getFee() + "," + " \"subject\":\"" + gd.getChargeDesc() + "\"," + " \"product_code\":\"QUICK_WAP_PAY\"" + " }");// 填充业务参数 String form = null; try { form = alipayClient.pageExecute(alipayRequest).getBody(); } catch (AlipayApiException e) { LOG.error(e.getMessage(), e); } // 调用SDK生成表单 return form; }
这个form呢 是一段html 直接把这个form输出出来就可以了
String info = aliPayService.unifiedOrder(sequenceNum); response.setContentType("text/html;charset=UTF-8"); response.getWriter().write(info); response.getWriter().flush();
这个页面会自动跳转到支付宝的页面去 是h5支付的话 会自动唤醒支付宝app支付订单
只要保证配置的那些秘钥啊 appid啊 都是对的 就好了
支付成功后
/** * 支付宝网关 用户支付成功后 支付宝会把这个地址告诉用户 然后用户会访问这个地址 后台敷衍一下 提示成功就好了 * @return */ @RequestMapping("/pay/gateway") public ModelAndView returnUrl(){ ModelAndView mv=new ModelAndView("pay_success"); LOG.info("支付宝网关被调用"); return mv; }
/** * 授权回调地址 用户支付成功后 支付宝会直接访问这个地址 然后后台处理具体的业务逻辑 * @return * @throws UnsupportedEncodingException */ @RequestMapping(value="/pay/orderback",method=RequestMethod.POST) public void notifyUrl( String trade_status, String out_trade_no, String trade_no) throws UnsupportedEncodingException{ request.setCharacterEncoding("utf-8"); Map<String,String> params = new HashMap<String,String>(); Map requestParams = request.getParameterMap(); for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) { String name = (String) iter.next(); String[] values = (String[]) requestParams.get(name); String valueStr = ""; for (int i = 0; i < values.length; i++) { valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ","; } //乱码解决,这段代码在出现乱码时使用。如果mysign和sign不相等也可以使用这段代码转化 valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8"); params.put(name, valueStr); } try { aliPayService.notifyUrl(params, trade_status, out_trade_no, out_trade_no); } catch (EducationException e) { LOG.info(e.getMessage()); } LOG.info("支付宝授权回调地址被调用"); }
完
0 0
- 支付宝手机H5支付笔记
- 支付宝支付--手机支付
- h5页面 支付宝支付
- 支付宝h5支付对接
- C#支付宝支付接口H5版(手机网页支付)
- java支付宝支付,支付手机支付,pc网站支付
- java支付宝支付,支付手机支付,pc网站支付
- 支付宝支付--手机支付(转)
- 支付宝手机网页支付
- 支付宝手机支付开发
- 支付宝手机网站支付
- 支付宝手机网站支付
- h5页面调用支付宝支付
- 支付宝H5唤醒APP
- 支付宝H5唤醒APP
- h5调用支付宝接口
- 支付宝手机网站支付教程
- 支付宝三(手机网页支付)
- Spring Web MVC 处理Http请求的大致过程
- 微软笔试题#1086 : Browser Caching LRC缓存实现
- QScrollArea里面添加控件的时候,自动滚到到最后
- 5.gulp
- java中一些易混知识点(杂记)
- 支付宝手机H5支付笔记
- qt程序打包命令
- MOOC 数据结构 最大子列和问题
- static_cast
- Linux下安装codeblocks
- 给Java开发者的Play Framework(2.4)介绍 Part3:搭建Play的开发环境
- Gson工具类
- 带缓冲I/O 和不带缓冲I/O的区别与联系
- ASP.NET 后台调用前台javascript 的方法