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

网络上建个网站买东西多少钱服务器更改wordpress

网络上建个网站买东西多少钱,服务器更改wordpress,腾讯云服务器优惠,百度网站认证目录 Nuxt.js IP 启动 支付回调 回调接口 后端实现 查看支付状态 后端实现 前端实现 ​​​​​​​前置技术#xff1a;RabbitMQ ​​​​​​​更新订单状态 ​​​​​​​Nuxt.js IP 启动 config: {nuxt: {host: 0.0…目录 Nuxt.js IP 启动 支付回调 回调接口 后端实现 查看支付状态 后端实现 前端实现 ​​​​​​​前置技术RabbitMQ ​​​​​​​更新订单状态 ​​​​​​​Nuxt.js IP 启动 config: {nuxt: {host: 0.0.0.0,port: 3000}}, ​​​​​​​支付回调 ​​​​​​​回调接口 步骤一修改yml文件添加notifyUrl配置 步骤二修改配置文件 步骤三修改工具类 步骤一修改yml文件添加notifyUrl配置 sc:pay:notifyUrl: http://40m459492i.wicp.vip/order-service/pay/callback 步骤二修改配置文件 private String notifyUrl; //回调路径 步骤三修改工具类 package com.czxy.changgou4.utils;import com.czxy.changgou4.config.PayProperties; import com.github.wxpay.sdk.WXPay; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component;import java.util.HashMap; import java.util.Map;/*** author 桐叔* email liangtongitcast.cn*/ Component EnableConfigurationProperties(PayProperties.class) public class PayHelper {private WXPay wxPay;private PayProperties payProperties;Beanpublic WXPay wxPay(PayProperties payProperties){if(wxPay null){this.payProperties payProperties;wxPay new WXPay(payProperties);}return wxPay;}private static final Logger logger LoggerFactory.getLogger(PayHelper.class);public PayHelper() {}public PayHelper(PayProperties payProperties) {wxPay new WXPay(payProperties);}public String createPayUrl(Long sn) {String key pay.url. sn;try {MapString, String data new HashMap();// 商品描述data.put(body, 商城测试);// 订单号data.put(out_trade_no, sn.toString());//货币data.put(fee_type, CNY);//金额单位是分data.put(total_fee, 1);//调用微信支付的终端IP商城的IPdata.put(spbill_create_ip, 127.0.0.1);//回调地址data.put(notify_url, this.payProperties.getNotifyUrl());// 交易类型为扫码支付data.put(trade_type, NATIVE);//商品id,使用假数据data.put(product_id, 1234567);MapString, String result this.wxPay.unifiedOrder(data);if (SUCCESS.equals(result.get(return_code))) {if(SUCCESS.equals(result.get(result_code))){String url result.get(code_url);return url;} else {logger.error(创建预交易订单失败错误信息{}, result.get(err_code_des));return null;}} else {logger.error(创建预交易订单失败错误信息{}, result.get(return_msg));return null;}} catch (Exception e) {logger.error(创建预交易订单异常, e);return null;}}/*** 查询订单状态* 交易状态参考(trade_state)SUCCESS—支付成功REFUND—转入退款NOTPAY—未支付CLOSED—已关闭REVOKED—已撤销付款码支付USERPAYING--用户支付中付款码支付PAYERROR--支付失败(其他原因如银行返回失败)* param sn* return*/public PayState queryOrder(Long sn) {MapString, String data new HashMap();// 订单号data.put(out_trade_no, sn.toString());try {MapString, String result this.wxPay.orderQuery(data);if(SUCCESS.equals(result.get(return_code))){if(SUCCESS.equals(result.get(result_code))) {String tradeState result.get(trade_state);if (SUCCESS.equals(tradeState)) {return PayState.SUCCESS;}if (NOTPAY.equals(tradeState)) {return PayState.NOT_PAY;}if (CLOSED.equals(tradeState)) {return PayState.CLOSED;}}}return PayState.PAY_ERROR;} catch (Exception e) {logger.error(查询订单状态异常, e);return PayState.PAY_ERROR;}} } ​​​​​​​后端实现 步骤一修改PayController添加callback方法步骤二检查网关放行callback方法步骤三修改花生壳访问10010端口 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter9_7index8步骤一修改PayController添加callback方法 PostMapping(/callback) public void callback(HttpServletRequest request, HttpServletResponse response) throws IOException {try {//1 获得响应内容String xml IOUtils.toString(request.getInputStream(), UTF-8);System.out.println(xml);//解析MapString, String map WXPayUtil.xmlToMap( xml );// 查询成功if(SUCCESS.equals(map.get( result_code ) )){// 获得订单号String sn map.get(out_trade_no);//TODO 更新订单状态System.out.println(sn);//如果成功给微信支付一个成功的响应response.setContentType(text/xml);String data xmlreturn_code![CDATA[SUCCESS]]/return_codereturn_msg![CDATA[OK]]/return_msg/xml;response.getWriter().write(data);}} catch (Exception e) {e.printStackTrace();response.setContentType(text/xml);String data xmlreturn_code![CDATA[FAIL]]/return_codereturn_msg![CDATA[e.getMessage()]]/return_msg/xml;response.getWriter().write(data);} }步骤二检查网关放行callback方法 步骤三修改花生壳访问10010端口 查看控制台结果 xmlappid![CDATA[wx8397f8696b538317]]/appid bank_type![CDATA[COMM_CREDIT]]/bank_type cash_fee![CDATA[1]]/cash_fee fee_type![CDATA[CNY]]/fee_type is_subscribe![CDATA[N]]/is_subscribe mch_id![CDATA[1473426802]]/mch_id nonce_str![CDATA[47e529ea929e4c9e847ee9699751a648]]/nonce_str openid![CDATA[oNpSGwZaaw_0uBEMwFpkwIwFsttw]]/openid out_trade_no![CDATA[1259484402174529500]]/out_trade_no result_code![CDATA[SUCCESS]]/result_code return_code![CDATA[SUCCESS]]/return_code sign![CDATA[2D4BC610795C1DC303B0B26092D6C6E3]]/sign time_end![CDATA[20200510220429]]/time_end total_fee1/total_fee trade_type![CDATA[NATIVE]]/trade_type transaction_id![CDATA[4200000568202005108477965385]]/transaction_id /xml 1259484402174529500 ​​​​​​​查看支付状态 ​​​​​​​后端实现 步骤一修改PayService查询订单支付状态步骤二编写PayService实现类步骤三修改PayController 步骤一修改PayService查询订单支付状态 package com.czxy.changgou4.service;import com.czxy.changgou4.utils.PayState; import com.czxy.changgou4.vo.PayRequest;/*** author 桐叔* email liangtongitcast.cn*/ public interface PayService {/*** 查看支付状态* param sn* return*/public PayState query(Long sn); } 步骤二编写PayService实现类 Override public PayState query(Long sn) {//查询微信支付状态PayState payState payHelper.queryOrder(sn);return payState;}步骤三修改PayController GetMapping(/{sn}) public BaseResult query(PathVariable(sn) Long sn){//查询PayState payState payService.query(sn);//返回if(payState.getCode() 1) {return BaseResult.ok(payState.getDesc());}return BaseResult.error(payState.getDesc()); } ​​​​​​​前端实现 如果订单已经支付跳转到支付成功页面。 步骤一修改api.js查询订单支付状态步骤二修改flow3“查询订单状态”绑定事件步骤三修改flow3编写事件如果是成功调到到flow4步骤四编写flow4与flow3基本内容一致提示信息为“支付成功货物即将送出” 步骤一修改api.js查询订单支付状态 findPayStatus : ( sn ) {return axios.get(/order-service/pay/sn )}步骤二修改flow3“查询订单状态”绑定事件 步骤三修改flow3编写事件如果是成功调到到flow4 methods: {async findPayStatusFn() {let { data } await this.$request.findPayStatus( this.sn );if( data.code 20000) {location.href flow4} else {alert( data.message );}}}, 步骤四编写flow4与flow3基本内容一致提示信息为“支付成功货物即将送出” templatediv!-- 顶部导航 start --div classtopnavdiv classtopnav_bd w990 bcdiv classtopnav_left/divdiv classtopnav_right frulli您好欢迎来到畅购[a hreflogin.html登录/a] [a hrefregister.html免费注册/a] /lili classline|/lili我的订单/lili classline|/lili客户服务/li/ul/div/div/div!-- 顶部导航 end --div styleclear:both;/div!-- 页面头部 start --div classheader w990 bc mt15div classlogo w990h2 classfla hrefindex.htmlimg srcimages/logo.png alt畅购商城/a/h2div classflow fr flow3ulli1.我的购物车/lili2.填写核对订单信息/lili classcur3.成功提交订单/li/ul/div/div/div!-- 页面头部 end --div styleclear:both;/div!-- 主体部分 start --div classsuccess w990 bc mt15div classsuccess_hdh2订单支付成功/h2/divdiv classsuccess_bdpspan/span支付成功货物即将送出/p/div/div!-- 主体部分 end --div styleclear:both;/div!-- 底部版权 start --Footer/Footer!-- 底部版权 end --/div /templatescript import TopNav from ../components/TopNav import Footer from ../components/Footerexport default {head: {title: 首页,link: [{rel:stylesheet,href: /style/success.css},],script: []},components: {TopNav,Footer,}} /scriptstyle/style ​​​​​​​前置技术RabbitMQ ​​​​​​​更新订单状态 步骤一配置环境 rabbitmq中添加order_pay队列 添加依赖 添加yml配置 步骤二修改回调函数将sn存放到rabbit中 步骤三编写监听器消费者更新订单状态 步骤四修改OrderService完成修改功能 步骤五修改OrderMapper完成修改功能 步骤一配置环境 rabbitmq中添加order_pay队列添加rabbit配置类 ackage com.czxy.changgou4.config;import org.springframework.amqp.core.Queue; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component;/*** author 桐叔* email liangtongitcast.cn*/ Component public class OrderPayQueue {private static final String ORDER_PAY_QUEUE order_pay;Beanpublic Queue queue() {return new Queue(ORDER_PAY_QUEUE);} } 添加依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-amqp/artifactId /dependency ​​​​​​​ 添加yml配置 spring:rabbitmq:host: 127.0.0.1username: guestpassword: guest 步骤二修改回调函数将sn存放到rabbit中 rabbitTemplate.convertAndSend(, order_pay, sn);  步骤三编写监听器消费者更新订单状态 package com.czxy.changgou4.listener;import com.czxy.changgou4.service.OrderService; import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;/*** author 桐叔* email liangtongitcast.cn*/ Component RabbitListener(queues order_pay) public class OrderPayListener {Autowiredprivate OrderService orderService;/*** 更新支付状态* param message*/RabbitHandlerpublic void updatePayStatus(String message){orderService.updatePayStatus( message , 1 );} }步骤四修改OrderService完成修改功能 package com.czxy.changgou4.service;import com.baomidou.mybatisplus.extension.service.IService; import com.czxy.changgou4.pojo.Order; import com.czxy.changgou4.pojo.User; import com.czxy.changgou4.vo.CartVo; import com.czxy.changgou4.vo.OrderVo;import java.util.List;public interface OrderService extends IServiceOrder {void updatePayStatus(String sn, String status); } package com.czxy.changgou4.service.impl;import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.czxy.changgou4.pojo.Order; import com.czxy.changgou4.pojo.OrderGoods; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional;import javax.annotation.Resource; import java.util.*;Service Transactional public class OrderServiceImpl extends ServiceImplOrderMapper, Order implements OrderService {Overridepublic void updatePayStatus(String sn, String status) {//更新状态baseMapper.updateStatus(sn,status);} } 步骤五修改OrderMapper完成修改功能   package com.czxy.changgou4.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.czxy.changgou4.pojo.Order; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Update;Mapper public interface OrderMapper extends BaseMapperOrder {/*** 更加sn修改状态* param sn* param status*/Update(UPDATE tb_order SET STATUS #{status} WHERE sn #{sn})void updateStatus(Param(sn) String sn, Param(status) String status); } 测试在rabbitMQ web控制台可以手动发布消息
http://www.hkea.cn/news/14334264/

相关文章:

  • 网站做seo必要的结构如何分析竞争对手的网站
  • 佛山网站建设是哪个好做一个公司网站需要多少钱
  • 常州网站建设咨询怎么用wordpress仿站
  • 北京制作网站报价外贸英语网站
  • 360网站收录提交入口大全手机模板网站模板下载网站有哪些内容
  • 辽宁工程建设信息网网站武都区建设局网站
  • 微信页面设计网站WordPress社交评论
  • 上海网站建设联怎么样建设网站赚钱
  • 网站建设seo 视频教程鲜花店网站建设的规模设想
  • 做美团网站需要多少钱网站建设300
  • 电子商务网站概念wordpress 好用主题
  • 府网站建设先进个人展示商品的网站怎么做
  • 网站建设与管理实践收获中企动力网站后台
  • vue做网站电子商务网站建设与管理总结
  • 多多返利网站建设宁波seo推荐
  • 北京工程质量建设协会网站做公众号需要做网站吗
  • 网站建设与制作教学计划干部重庆网络学院
  • 北控京奥建设有限公司网站好大夫在线个人网站王建设
  • 两个域名指向同一个网站品牌vi设计设计生成
  • asp企业网站模板下载网站开发入门培训机构
  • 网站做外部链接搜索引擎优化网站的网址
  • 买了域名怎么做自己的网站鹤山区网站建设
  • 荥阳网站建设定制网站建设案例课堂
  • 自己做网站赚佣金做网站需要哪些成本
  • wordpress 建站对比app 设计网站建设
  • 网站icp备案咋做营销型类型网站多少钱些
  • 广东网站建设模版长沙0731房地产网
  • 苏州网站制作开发麻油厂网站怎么做
  • 广告体验程序网站开发秦皇岛网站制作哪个好
  • 宁波专业品牌网站制作外包专做母婴的网站