当前位置: 首页 > news >正文

做网站需要服务器和什么推广易官网

做网站需要服务器和什么,推广易官网,电商平台证明怎么开,电商运营推广怎么做网页操作步骤 1.进入支付宝开发平台—沙箱环境 使用开发者账号登录开放平台控制平台 2.点击沙箱进入沙箱环境 说明#xff1a;沙箱环境支持的产品#xff0c;可以在沙箱控制台 沙箱应用 产品列表 中查看。 3.进入沙箱#xff0c;配置接口加签方式 在沙箱进行调试前…网页操作步骤 1.进入支付宝开发平台—沙箱环境 使用开发者账号登录开放平台控制平台 2.点击沙箱进入沙箱环境 说明沙箱环境支持的产品可以在沙箱控制台 沙箱应用 产品列表 中查看。 3.进入沙箱配置接口加签方式 在沙箱进行调试前需要确保已经配置密钥/证书用于加签支付宝提供了 系统默认密钥 及 自定义密钥 两种方式进行配置。这里我采取的是默认方式 开发者如需使用系统默认密钥/证书可在开发信息中选择系统默认密钥。注意:使用API在线调试工具调试OpenAPI必须使用系统默认密钥。 4.配置应用网关 应用网关用于接收支付宝沙箱环境的异步通知对接 From 蚂蚁消息如创建门店的被动通知。 注意仅 HTTP 订阅模式的 From 蚂蚁消息才需要配置应用网关WebSocket 订阅模式的 From 蚂蚁消息无需配置应用网关。 5.生成自己的密钥 至此网页操作完成 2idea操作步骤 1.导入依赖 dependencygroupIdcom.alipay.sdk/groupIdartifactIdalipay-sdk-java/artifactIdversion4.22.110.ALL/version /dependency 2.在 application.yml 里面进行配置 alipay:appId: appPrivateKey: alipayPublicKey: notifyUrl: 回调接口 3.alipay的JAVA配置AlipayConfig.java 读取yml中的配置信息自动填充到对应的属性 Data Component ConfigurationProperties(prefix  alipay) public class AliPayConfig {private String appId;private String appPrivateKey;private String alipayPublicKey;private String notifyUrl;} 4.支付接口 新建一个 AliPayController.java 1、 在Controller中配置gateway_url调用支付宝url的一个网关地址、formatJSON形式、charsetUTF-8、sign_type签名方式-rsa22、 编写一个Get请求方法参数是一个AliPay的配置类里面包括自己生成的订单号、总金额、支付的名称、支付宝交易凭证号和HttpServletResponse3、 创建Client他是由通用SDK提供的Client负责调用支付宝的API设置参数包含网关地址、appid、密钥、公钥、format、charset、签名方式-----------------------创建Client他是由通用SDK提供的Client负责调用支付宝的API4、 创建AlipayTradePagePayRequest配置notifyUrl并设置Request参数参数包含订单号、总金额、支付的名称格式JSON格式-------------------------创建Request并设置Request参数5、 通过AlipayClient执行request调用SDK生成表单用HttpServletResponse浏览器响应的一个流写表单的内容创建一个html的网页---------------------------执行请求拿到响应的结果返回给浏览器 Data public class AliPay {private String traceNo;private double totalAmount;private String subject;private String alipayTraceNo; } private static final String GATEWAY_URL  https://openapi.alipaydev.com/gateway.do; private static final String FORMAT  JSON; private static final String CHARSET  UTF-8;//签名方式private static final String SIGN_TYPE  RSA2; Resource private AliPayConfig aliPayConfig;Resource private OrdersMapper ordersMapper;GetMapping(/pay) // subjectxxxtraceNoxxxtotalAmountxxx public void pay(AliPay aliPay, HttpServletResponse httpResponse) throws Exception {// 1. 创建Client通用SDK提供的Client负责调用支付宝的APIAlipayClient alipayClient  new DefaultAlipayClient(GATEWAY_URL, aliPayConfig.getAppId(),aliPayConfig.getAppPrivateKey(), FORMAT, CHARSET, aliPayConfig.getAlipayPublicKey(), SIGN_TYPE);// 2. 创建 Request并设置Request参数AlipayTradePagePayRequest request  new AlipayTradePagePayRequest();  // 发送请求的 Request类request.setNotifyUrl(aliPayConfig.getNotifyUrl());JSONObject bizContent  new JSONObject();bizContent.set(out_trade_no, aliPay.getTraceNo());  // 我们自己生成的订单编号bizContent.set(total_amount, aliPay.getTotalAmount()); // 订单的总金额bizContent.set(subject, aliPay.getSubject());   // 支付的名称bizContent.set(product_code, FAST_INSTANT_TRADE_PAY);  // 固定配置request.setBizContent(bizContent.toString());// 执行请求拿到响应的结果返回给浏览器String form  ;try {form  alipayClient.pageExecute(request).getBody(); // 调用SDK生成表单} catch (AlipayApiException e) {e.printStackTrace();}httpResponse.setContentType(text/html;charset  CHARSET);httpResponse.getWriter().write(form);// 直接将完整的表单html输出到页面httpResponse.getWriter().flush();httpResponse.getWriter().close(); } 5.在拦截器里面加上 忽略alipay接口的配置 遇到的坑 url中有中文字符报错更换依赖 官网提供有easy版和正式版 easy-sdk 好像不太支持中文的subject否则 biz_content就会乱码那我索性就用了 alipay-sdk 正式版的 6.回调接口 1、 使用的Post接口首先验证交易状态是否成功获取request里面的信息2、 支付宝验签使用的是AlipaySignature通用SDK提供的类获取一个String字符串将其与sign签名验证通过后使用OrderMapper更新到数据库 使用的Post接口因为官方建议处理付款成功后的操作在异步调用方法中异步调用为post请求异步回调方法必须为公网IP因为支付宝是基于公网访问访问不了localhost需要代理设置公网IP有两种方案1、内网穿透2、将项目部署到服务器我们项目使用的是内网穿透使用的是natapp配置一条免费的隧道在idea中配置notifyurl接口 PostMapping(/notify)  // 注意这里必须是POST接口 public String payNotify(HttpServletRequest request) throws Exception {if (request.getParameter(trade_status).equals(TRADE_SUCCESS)) {System.out.println(支付宝异步回调);        MapString, String params  new HashMap();MapString, String[] requestParams  request.getParameterMap();for (String name : requestParams.keySet()) {params.put(name, request.getParameter(name));// System.out.println(name      request.getParameter(name));}String tradeNo  params.get(out_trade_no);String gmtPayment  params.get(gmt_payment);String alipayTradeNo  params.get(trade_no);String sign  params.get(sign);String content  AlipaySignature.getSignCheckContentV1(params);boolean checkSignature  AlipaySignature.rsa256CheckContent(content, sign, aliPayConfig.getAlipayPublicKey(), UTF-8); // 验证签名// 支付宝验签if (checkSignature) {// 验签通过System.out.println(交易名称:   params.get(subject));System.out.println(交易状态:   params.get(trade_status));System.out.println(支付宝交易凭证号:   params.get(trade_no));System.out.println(商户订单号:   params.get(out_trade_no));System.out.println(交易金额:   params.get(total_amount));System.out.println(买家在支付宝唯一id:   params.get(buyer_id));System.out.println(买家付款时间:   params.get(gmt_payment));System.out.println(买家付款金额:   params.get(buyer_pay_amount));// 更新订单未已支付ordersMapper.updateState(tradeNo, 已支付, gmtPayment, alipayTradeNo);}}return success; } 3退款流程 1、 创建Client他是由通用SDK提供的Client负责调用支付宝的API参数包含网关地址、appid、密钥、公钥、format、charset、签名方式----------------------创建Client通用SDK提供的Client负责调用支付宝的API 2、 创建AlipayTradePagePayRequest设置Request参数参数包含支付宝回调的订单流水号、总金额、我的订单编号格式JSON格式----------------------------创建Request设置参数3、 通过AlipayClient执行request获取response通过isSuccess判断是否成功成功后更新数据库状态-------------执行请求更新数据库 GetMapping(/return) public Result returnPay(AliPay aliPay) throws AlipayApiException {// 7天无理由退款String now  DateUtil.now();Orders orders  ordersMapper.getByNo(aliPay.getTraceNo());if (orders ! null) {// hutool工具类判断时间间隔long between  DateUtil.between(DateUtil.parseDateTime(orders.getPaymentTime()), DateUtil.parseDateTime(now), DateUnit.DAY);if (between  7) {return Result.error(-1, 该订单已超过7天不支持退款);}}// 1. 创建Client通用SDK提供的Client负责调用支付宝的APIAlipayClient alipayClient  new DefaultAlipayClient(GATEWAY_URL,aliPayConfig.getAppId(), aliPayConfig.getAppPrivateKey(), FORMAT, CHARSET,aliPayConfig.getAlipayPublicKey(), SIGN_TYPE);// 2. 创建 Request设置参数AlipayTradeRefundRequest request  new AlipayTradeRefundRequest();JSONObject bizContent  new JSONObject();bizContent.set(trade_no, aliPay.getAlipayTraceNo());  // 支付宝回调的订单流水号bizContent.set(refund_amount, aliPay.getTotalAmount());  // 订单的总金额bizContent.set(out_request_no, aliPay.getTraceNo());   //  我的订单编号// 返回参数选项按需传入//JSONArray queryOptions  new JSONArray();//queryOptions.add(refund_detail_item_list);//bizContent.put(query_options, queryOptions);request.setBizContent(bizContent.toString());// 3. 执行请求AlipayTradeRefundResponse response  alipayClient.execute(request);if (response.isSuccess()) {  // 退款成功isSuccess 为trueSystem.out.println(调用成功);// 4. 更新数据库状态ordersMapper.updatePayState(aliPay.getTraceNo(), 已退款, now);return Result.success();} else {   // 退款失败isSuccess 为falseSystem.out.println(response.getBody());return Result.error(response.getCode(), response.getBody());}} 订单三十分钟未支付自动取消 使用消息队列 我们可以采用rabbitMQ的延时队列。RabbitMQ具有以下两个特性可以实现延迟队列 RabbitMQ可以针对Queue和Message设置 x-message-tt来控制消息的生存时间如果超时则消息变为dead letter RabbitMQ的Queue可以配置x-dead-letter-exchange 和x-dead-letter-routing-key可选两个参数用来控制队列内出现了deadletter则按照这两个参数重新路由。结合以上两个特性就可以模拟出延迟消息的功能 优缺点 优点 高效,可以利用rabbitmq的分布式特性轻易的进行横向扩展,消息支持持久化增加了可靠性。 缺点 本身的易用度要依赖于rabbitMq的运维.因为要引用rabbitMq,所以复杂度和成本变高。 用户下单之后投递一个msg消息存放在msg服务器daunt该消息msg消息过期时间为30分钟一直未被订单消费者消费消息会转移到死信交换机路由到死信队列中被我们的死信消费者30分钟后消息。 死信消费者在根据订单号码查询支付订单状态如果是未支付情况下则将该订单设置未超时。 对筛选出来的订单号码进行核对校验: 1、 订单中是否存在2、 携带订单号码调用支付宝查询订单支付状态是否为待支付3、 更新该订单号码状态
http://www.zqtcl.cn/news/910941/

相关文章:

  • 桂林微信网站wordpress 连接信息
  • 电商网站开发简历跨境电商怎么搞
  • php小型网站开发百度知道小程序
  • 风铃网站具体是做那方面的contact form7 v2.1.2 wordpress
  • 临沂网站建设举措网站数据不变重新安装wordpress
  • 外贸网站建设双语网站建设红色大气网络公司企业网站源码_适合广告设计
  • 温州哪里有做网站的阳朔到桂林机场
  • 商务网站建设详细流程小程序商城服务好的商家
  • 苏州建站模板搭建南京地铁最新消息
  • wordpress建网站教程威海建设招聘信息网站
  • 如何制作一网站企业中标信息查询网
  • 百度推广咨询seo搜索引擎优化平台
  • 建设网站要不要投资钱哪里建设网站最好
  • 长沙网站制作公司地址农业推广作业
  • 网站创意设计公司定制网站开发价格
  • 专业网站建设加盟合作怀化seo快速排名
  • 房山区网站建设wordpress自动采集翻译插件怎么用
  • 郴州做网站 郴网互联网站制作公司起名
  • 织梦做的的网站首页显示空白查企业营业执照的网站
  • 葫芦岛公司做网站外贸西班牙语网站建设
  • 广西住房和城乡建设厅培训中心网站首页wordpress建导航
  • 企业建立网站需要提供什么建立网站需要多长钱
  • 科技企业网站源码下载网页设计公司哪家效果好
  • 成都龙泉工程建设有限公司网站网络科技有限公司网站建设策划书
  • 温州网站建设对比赣州招聘网最新招聘
  • 网站建设什么时候好商丘创小资网络有限公司
  • 做网站不切片可以吗wordpress导入表单
  • 广告公司的网站建设价格wordpress简洁淘宝客免费主题
  • 内蒙古建设安全监督站的网站做网站排名多少钱
  • 自学网站平面设计友链大全