一、首先就是你需要申请网页版支付的功能,申请完网站之后,就可以申请支付功能了,app支付也差不多,没什么区别

1、登陆你的商家支付宝账号,进入,支付宝商家中心,选择接入电脑网站支付

2、然后点击立即接入

3、这一步是需要提交申请的,需要注意的是,网站上最少需要五个左右的明码标价的商品或者功能,如果没有是不可能通过审核的,之后就可以开始开发了

二、java开发

1、下载支付宝的 demo 支付宝网页支付demo

2、解压之后,先取出page.pay.jsp,这是最主要的一个页面,然后放到你的项目中,作为跳转页面存放

3、Controller层代码,主要是为了形成签名

/*** 支付宝支付*/
@ResponseBody
@RequestMapping("/order_alipay.do")
//memberSettled是我自己的对象,查出来支付宝所需的属性
public String alipayOrder(HttpServletRequest request, HttpServletResponse response, MemberSettled memberSettled, Model model){String form = null;try {Map<String,Object> settledMap = goodsService.selectMemberSettledInfoBySetId(memberSettled);Integer userId = getCurrentLoginId();String order_code = userService.insertMemberSettledOrderInfo(memberSettled.getPayMode(),(Double) settledMap.get("pay_number"),(String) settledMap.get("pay_detail"),userId);//自己封装的方法form  = PayUtil.alipayH5PayResponse(order_code,(Double) settledMap.get("pay_number"),(String) settledMap.get("pay_detail"),(String) settledMap.get("settled_time"),request,response);response.setContentType("text/html;charset=" + Alipay.getCHARSET());response.getWriter().write(form);//直接将完整的表单html输出到页面response.getWriter().flush();response.getWriter().close();} catch (ServletException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return form.toString();
}

4、进入支付宝网页支付API ,查看需要的请求或者参数

5、PayUtil.alipayH5PayResponse的内容

AlipayClient alipayClient = new DefaultAlipayClient(Alipay.getURL(), Alipay.getAppId(), Alipay.getAppPrivateKey(), "json",Alipay.getCHARSET(), Alipay.getAlipayPublicKey(), Alipay.getSignType()); //获得初始化的AlipayClientAlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();//创建API对应的requestalipayRequest.setReturnUrl("xxxx");
//        alipayRequest.setReturnUrl("http://domain.com/CallBack/return_url.jsp");alipayRequest.setNotifyUrl("xxxx");//在公共参数中设置回跳和通知地址
//        alipayRequest.setNotifyUrl("http://domain.com/CallBack/notify_url.jsp");
//只是为了测试
//        alipayRequest.setBizContent("{" +
//                "    \"out_trade_no\":" + out_trade_no +"," +                    //商户订单号,64个字符以内、可包含字母、数字、下划线;需保证在商户端不重复
//                "    \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +             //销售产品码,与支付宝签约的产品码名称。 注:目前仅支持FAST_INSTANT_TRADE_PAY
//                "    \"total_amount\":" + total_amount + "," +                   //订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
//                "    \"subject\":" + subject + "" +                              //订单标题
//                "  }");//填充业务参数//正式代码,需要什么就添加什么alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","+ "\"total_amount\":\""+ total_amount +"\","+ "\"subject\":\""+ subject +"\","+ "\"body\":\""+ body +"\","+ "\"timeout_express\":\"10m\","+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");String form="";try {form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单} catch (AlipayApiException e) {e.printStackTrace();}return form;

6、我自己的Alipay中的内容

/*** 回调地址,必须是外网可以访问的到*/
private static final String RESULT_URL = "xxxx";
/*** 商家产品码(不知道啥玩意)一串数字*/
private static final String SELL_ID = "xxxxx";
/*** 支付宝网关(固定)*/
private static final String URL = "https://openapi.alipay.com/gateway.do";
/*** APPID即创建应用后生成,点击你的应用,复制APPID*/
private static final String APP_ID = "xxxx";
/*** 开发者应用私钥,由开发者自己生成*/
private static final String APP_PRIVATE_KEY = "xxxxxxx";
/*** 求和签名使用的字符编码格式,支持GBK和UTF-8   开发者根据实际工程编码配置*/
private static final String CHARSET = "UTF-8";
/*** 支付宝公钥,由支付宝生成*/
private static final String ALIPAY_PUBLIC_KEY = "xxxxx";
/*** 商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2   RSA2*/
private static final String SIGN_TYPE = "RSA2";
/*** 参数返回格式,只支持json  json(固定)*/
private Map<String,Object> FORMAT;private static final String RETURN_URL = "";private static final String NOTIFY_URL = "";public static String getSellId() {return SELL_ID;
}public static String getURL() {return URL;
}public static String getAppId() {return APP_ID;
}public static String getAppPrivateKey() {return APP_PRIVATE_KEY;
}public static String getCHARSET() {return CHARSET;
}public static String getAlipayPublicKey() {return ALIPAY_PUBLIC_KEY;
}public static String getSignType() {return SIGN_TYPE;
}public Map<String, Object> getFORMAT() {return FORMAT;
}public void setFORMAT(Map<String, Object> FORMAT) {this.FORMAT = FORMAT;
}public static String getResultUrl() {return RESULT_URL;
}public static String getReturnUrl() {return RETURN_URL;
}public static String getNotifyUrl() {return NOTIFY_URL;
}

7、到此为止,支付是已经没问题了,秘钥什么的我其他的博客中也有写过其实这些都不是特别的难,多看看demo以及api就行了

三、开始写回调
  1、因为我的项目并不会需要特别复杂的回调页面,所以就简单的写一下,还记得上面有个notify.jsp,这个就是回调的意思

/*** 后台管理系统支付宝支付成功通知接口*/@RequestMapping("/notify_url")public String notifyAlipayInterface(HttpServletResponse response, AliReturnPayBean returnPay, HttpServletRequest request)throws AlipayApiException, IOException {//获取支付宝POST过来反馈信息Map<String,String> params = new HashMap<String,String>();Map<String,String[]> requestParams = request.getParameterMap();for (Iterator<String> 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] + ",";}//乱码解决,这段代码在出现乱码时使用valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");params.put(name, valueStr);}
//这的AlipayConfig其实就是我上面的Alipayboolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.getAlipayPublicKey(), AlipayConfig.getCHARSET(), AlipayConfig.getSignType()); //调用SDK验证签名if(signVerified){// TODO 验签成功后,按照支付结果异步通知中的描述,对支付结果中的业务内容进行二次校验,// TODO 校验成功后在response中返回success并继续商户自身业务处理,校验失败返回failure// TODO 其中seller_id 是卖家支付宝用户号//因为params中没有status这个参数,所以我就用自己封装的AliReturnPayBean来接收的部分参数,其实没有什么用,可以直接删除的if(returnPay.getTrade_status() == null || "TRADE_SUCCESS".equals(returnPay.getTrade_status())|| "TRADE_FINISHED".equals(returnPay.getTrade_status())){//查找出来信息之后可以二次判断,我并没有做判断,你们可以判断价格以及数量,时间等等的信息,判断订单是否正确
//                Map<String,Object> payOrderMap = cmsService.selectSettledPayOrderInfo(returnPay.getOut_trade_no());int result = cmsService.updateSettledPayOrderStatusByTradeNo(returnPay.getOut_trade_no(),1,(String) params.get("trade_no"));}else if("TRADE_FINISHED".equals(returnPay.getTrade_status())){int result = cmsService.updateSettledPayOrderStatusByTradeNo(returnPay.getOut_trade_no(),2,null);}
//            response.getWriter().write("success");}else{// TODO 验签失败则记录异常日志,并在response中返回failure.
//            response.getWriter().write("failure");}//这是我自己测试跳转用的页面return "share";}

8、第一阶段结束 over over over

支付宝电脑版扫码支付相关推荐

  1. 支付宝支付-支付宝PC端扫码支付

    前言 支付宝支付-沙箱环境使用 支付宝支付-支付宝PC端扫码支付「本文」 支付宝支付-手机浏览器H5支付「待写」 PC端扫码支付,其实就是就是 电脑网站支付,本文基于支付宝沙箱环境,不了解的可以看一下 ...

  2. 支付宝新版SDK-PC扫码支付-手机浏览器H5支付

    一.前言 支付宝支付-沙箱环境使用 支付宝新版SDK-PC端扫码支付 + 手机浏览器H5支付「本文」 PC端扫码支付,其实就是就是 电脑网站支付,本文基于支付宝沙箱环境,不了解的可以看一下上边的链接. ...

  3. PHP项目集成支付宝PC端扫码支付API(国内支付)

    一.PC端(电脑端)网站扫码支付接口申请流程 1. 注册是支付宝商家账号 -- 注册地址: 2. 注册成功后,找到蚂蚁金服开放平台,点击支付应用: 3. 创建应用 4. 添加应用中的电脑支付功能 5. ...

  4. C#支付宝当面付扫码支付开发,包括demo代码的修改和蚂蚁金服开发平台的配置

    支付宝开发前配置: 第一步登陆蚂蚁金服开放平台服:支付宝扫码登陆 登录之后看到一下界面,找到自主研发选项,点击开始入驻 配置自己的个人信息: 到此为止我们所有应该做的配置基本上就完成了,但是我们要注意 ...

  5. 支付宝当面付扫码支付支付后不回调_码云上不错的几个支付相关的项目

    阅读文本大概需要15分钟. 网上支付相关的额业务场景无处不在,如果能掌握支付相关的核心技术,对于升职涨薪有莫大的好处.目前国内支付以支付宝和微信这两种支付为首,其他支付则可以忽略不计.有些网友以这两种 ...

  6. PHP版本微信支付开发----电脑网站扫码支付(native)(心得、总结)

    早就听说微信支付比支付宝支付的坑多,但还得得该填的填,该绕的绕, 最终我们网站的微信支付功能成功上线啦♪(^ ∇ ^*) 首先自报家门,我的PHP版本是7,微信demo用的是php_sdk_v3.0. ...

  7. 支付宝当面付-扫码支付

    1.需要jar包 2.请求支付 private static AlipayTradeService tradeService;@Autowiredstatic {/** 一定要在创建AlipayTra ...

  8. 支付宝当面付扫码支付接口开发

    最近公司要做一个有关支付的相关项目,需要对接支付宝的支付接口,实现扫描二维码支付功能,为此研究了一下支付宝相关业务.主要依据就是支付宝的相关接口文档: https://docs.open.alipay ...

  9. 支付宝当面付扫码支付支付后不回调_科普帖 | 青蛙?蜻蜓?自助收银?刷脸支付?一文为你解惑...

    思迅支付金融 青蛙是什么? 蜻蜓又是什么? 要如何购买正确的设备? 自助刷脸大屏又是什么鬼? 刷脸支付还要区分设备和支付方式? 我采购的硬件设备能开通刷脸支付吗? 刷脸支付有没有新的优惠政策呢? 不知 ...

  10. 支付宝当面付扫码支付支付后不回调_刷脸支付每周问题集锦

    每周问题集锦 1问:独立蜻蜓小票机,如何安装? 答:设置--打印机设置--打开--链接小票机--确定,测试. 2问:富友每个月几号出账?如何对返佣? 答:每个月15-20号出上个月的账单,我司会查询返 ...

最新文章

  1. 小鹏发布会上硬刚特斯拉AutoPilot:有视频有真相,特斯拉不懂中国路况
  2. matlab与音频处理
  3. IOT/智能设备日志解决方案(1):概述
  4. Jobs added with no trigger must be durable
  5. java stringutils_Java 笔记----- StringUtils 拼接字符
  6. list复制到另一个list_一文总结saltstack的十一个常用模块,附实例讲解
  7. 微软公有云魅力之Traffic Manager
  8. Hexo框架下用NexT(v7.0+)主题美化博客
  9. 川崎机器人仿真软件K-ROSET破解版的发展历程
  10. java取拼音首字母_java取出汉字字符串的拼音首字母
  11. OCR识别发票扫描仪解决方案
  12. 手机网页底部广告代码,悬浮底部广告,带关闭开关,复制文字,按钮
  13. 图文详解如何从win8/8.1中文版(核心版)升级到win8/8.1专业版
  14. Chrome下可用的的Kubernetes Dashboard证书的制作
  15. JEPG图片下载方法
  16. 三菱plc恒压供水程序+威纶触摸屏程序 以控制水泵一用一备、一拖二、一拖三、一拖四、一拖四带小泵恒压功能
  17. php 日期相减获得天数,PHP两个日期相减 计算天数、月、年[Stack Overflow]
  18. 为啥联通卡显示无服务器,天津联通物联卡显示无服务器
  19. 安卓桌面软件哪个好_Mac桌面壁纸软件哪个好?7款好用的mac壁纸软件推荐,从此告别壁纸荒...
  20. 鼠友题库每日百题(一)

热门文章

  1. TiDB EcoSystem Tools 原理解读(一):TiDB-Binlog 架构演进与实现原理
  2. 如何用excel快速实现“平均值±标准差”
  3. 2019杭电多校三 C. Yukikaze and Demons (点分治)
  4. 免ajax省市三级联动:http://runjs.cn/detail/rcsqficf
  5. 网络安全技能竞赛通关教程
  6. 国内十大上市移动医疗企业盘点
  7. 【kimol君的无聊小发明】—用python写音乐下载器
  8. 三个免费的无版权图片站
  9. 数字式PID控制MATLAB仿真
  10. python单引号和什么的作用几乎是一样的_python里的单引号和双引号的有什么作用...