失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 支付宝支付 支付宝手机网页支付

支付宝支付 支付宝手机网页支付

时间:2022-02-19 01:13:55

相关推荐

支付宝支付 支付宝手机网页支付

1.首先你需要与支付宝的蚂蚁金服建立合作关系然后进入开放平台

2.在开放平台中建立你的应用,我这里的应用已经创建好了,就不在演示了,这个也比较简单

3.在应用中添加你需要的功能,注意:添加的功能必须是审核通过的或者不需要审核可以直接使用的。下面是我的应用需要的功能。

4.设置应用相关配置信息。注明:如果你不开发小程序或者生活号可以不设置授权回调地址。

5.接下来是代码实现。

private final String APP_ID = "xxxxx"; //你创建的应用APPIDprivate final String APP_PRIVATE_KEY = "xxxx"; //你的应用的私钥 private final String CHARSET = "UTF-8"; private final String ALIPAY_PUBLIC_KEY = "xxxx"; //支付宝公钥private final String SIGN_TYPE = "RSA2"; //加密方式//第一步,启动支付收银台,页面由支付宝SDK输出已定好的页面代码@RequestMapping(value = "/doPayPage")public void doPayPage(HttpServletResponse httpResponse,@RequestParam String total_amount,@RequestParam String mark, String clubId) throws AlipayApiException, IOException {AlipayClient alipayClient = new DefaultAlipayClient("/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE); //获得初始化的AlipayClientAlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();//创建API对应的requestalipayRequest.setReturnUrl("/zyl/jsp/integral_recharge.jsp");//回跳地址alipayRequest.setNotifyUrl("/zyl/alipay/callBack.do");//通知地址String passback_params = getLoginUser().getId() + "&" + mark;if(null != clubId && !"".equals(clubId)) {passback_params += clubId;}String content = "{" +" \"out_trade_no\":\""+System.currentTimeMillis()+"\"," +" \"total_amount\":0.01," +" \"subject\":\"zyl\"," +"\"passback_params\":"+passback_params+""+" }";alipayRequest.setBizContent(content);//填充业务参数String form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单httpResponse.setContentType("text/html;charset=" + CHARSET);httpResponse.getWriter().write(form);//直接将完整的表单html输出到页面httpResponse.getWriter().flush();}/** 此接口为上面第一步,通知回调地址请求接口,次接口支付宝会将支付结果反馈的次接口,通过此接口可知道支付是否完成* @param total_amount 订单金额* @param trade_no 支付宝交易号* @param subject 订单标题* @param sign_type 签名类型* @param trade_status 交易状态 [WAIT_BUYER_PAY 交易创建,等待买家付款;* TRADE_CLOSED 未付款交易超时关闭,或支付完成后全额退款;*TRADE_SUCCESS 交易支付成功;* TRADE_FINISHED 交易结束,不可退款]* @param sign 签名* @param app_id 开发者的app_id* @param notify_time 通知时间* @param notify_id 通知校验ID* @param out_trade_no 商户订单号* @param buyer_id 买家支付宝用户号 ( 说明:买家支付宝账号对应的支付宝唯一用户号。以2088开头的纯16位数字,如:2088102122524333)* @param buyer_logon_id 买家支付宝账号 (说明:买家支付宝账号,如:15901825620)* @param receipt_amount 实收金额* @param buyer_pay_amount 付款金额* @param gmt_payment 交易付款时间* @throws IOException */@RequestMapping(value = "/callBack",method = RequestMethod.POST)public void callBack(HttpServletRequest request,HttpServletResponse response) throws IOException{Map<?, ?> paramsMap = request.getParameterMap();Map<String, String> map = null;if(null != paramsMap){System.out.println("##################打印参数开始###########################");//String str = "";map = new HashMap<String, String>();for (Object key : paramsMap.keySet()) {map.put((String) key, request.getParameter(key.toString()));System.out.println(key+":"+request.getParameter(key.toString()));//String as = key+"="+request.getParameter(key.toString());//str += as +"&";}//System.out.println("##################parms>"+str+"############################");System.out.println("##################打印参数结束############################");try {boolean signVerified = AlipaySignature.rsaCheckV1(map, ZFB_PUBLI_KEY, CHARSET, SIGN_TYPE); //调用SDK验证签名if(signVerified){// TODO 验签成功后,按照支付结果异步通知中的描述,对支付结果中的业务内容进行二次校验,校验成功后在response中返回success并继续商户自身业务处理,校验失败返回failureString trade_status = map.get("trade_status");String total_amount = map.get("total_amount"); //订单金额String trade_no = map.get("trade_no"); //支付宝交易号String app_id = map.get("app_id");String out_trade_no = map.get("out_trade_no"); //商户订单号String buyer_logon_id = map.get("buyer_logon_id"); //买家支付宝账号String buyer_pay_amount = map.get("buyer_pay_amount"); //付款金额String gmt_create = map.get("gmt_create"); //交易创建时间String gmt_payment = map.get("gmt_payment"); //交易付款时间String notify_id = map.get("notify_id"); //通知校验IDString passback_params = map.get("passback_params");String[] myselfParams = passback_params.split("&");int userId = Integer.valueOf(myselfParams[0]);//此处做你的相应的业务逻辑处理response.getWriter().println("success");return;}else{// TODO 验签失败则记录异常日志,并在response中返回failure.response.getWriter().println("failure");return ;}} catch (Exception e) {e.printStackTrace();response.getWriter().println("failure");return ;}}response.getWriter().println("failure");}

希望对有需要的人,能够提供帮助。

如果觉得《支付宝支付 支付宝手机网页支付》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。