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

做好的网站怎么演示深圳做美颜相机的公司

做好的网站怎么演示,深圳做美颜相机的公司,中国企业500强搜索版,wordpress网上在线插件1 支付流程实现 演示案例 主要参考程序员青戈的视频【支付宝沙箱支付快速集成版】支付宝沙箱支付快速集成版_哔哩哔哩_bilibili 对应的源码在 alipay-demo: 使用支付宝沙箱实现支付功能 - Gitee.com 以下是完整的实现步骤 1.首先导入相关的依赖 ?xml version1…1 支付流程实现 演示案例 主要参考程序员青戈的视频【支付宝沙箱支付快速集成版】支付宝沙箱支付快速集成版_哔哩哔哩_bilibili 对应的源码在 alipay-demo: 使用支付宝沙箱实现支付功能 - Gitee.com 以下是完整的实现步骤 1.首先导入相关的依赖 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.example/groupIdartifactIdalipay-demo/artifactIdversion0.0.1-SNAPSHOT/versionnamealipay-demo/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingspring-boot.version2.3.7.RELEASE/spring-boot.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.4.2/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdscoperuntime/scope/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdcom.alipay.sdk/groupIdartifactIdalipay-sdk-java/artifactIdversion4.22.110.ALL/version/dependencydependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.7.20/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scopeexclusionsexclusiongroupIdorg.junit.vintage/groupIdartifactIdjunit-vintage-engine/artifactId/exclusion/exclusions/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion${spring-boot.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.8.1/versionconfigurationsource1.8/sourcetarget1.8/targetencodingUTF-8/encoding/configuration/pluginplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion2.3.7.RELEASE/versionconfigurationmainClasscom.example.alipay.AlipayDemoApplication/mainClass/configurationexecutionsexecutionidrepackage/idgoalsgoalrepackage/goal/goals/execution/executions/plugin/plugins/build/project如果已有相关依赖下面的依赖是必须要导入的 dependencygroupIdcom.alipay.sdk/groupIdartifactIdalipay-sdk-java/artifactIdversion4.22.110.ALL/version/dependencydependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.7.20/version/dependency 使用的支付接口主要进行的是电脑网页支付 官方的接口文档统一收单下单并支付页面接口 - 支付宝文档中心 官方的接口内容 package com.java.sdk.demo;import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.AlipayConfig; import com.alipay.api.domain.AlipayTradePagePayModel; import com.alipay.api.domain.ExtUserInfo; import com.alipay.api.domain.InvoiceKeyInfo; import com.alipay.api.response.AlipayTradePagePayResponse; import com.alipay.api.domain.InvoiceInfo; import com.alipay.api.request.AlipayTradePagePayRequest; import com.alipay.api.domain.ExtendParams; import com.alipay.api.domain.GoodsDetail; import com.alipay.api.domain.SubMerchant;import com.alipay.api.FileItem; import java.util.Base64; import java.util.ArrayList; import java.util.List;public class AlipayTradePagePay {public static void main(String[] args) throws AlipayApiException {// 初始化SDKAlipayClient alipayClient new DefaultAlipayClient(getAlipayConfig());// 构造请求参数以调用接口AlipayTradePagePayRequest request new AlipayTradePagePayRequest();AlipayTradePagePayModel model new AlipayTradePagePayModel();// 设置商户订单号model.setOutTradeNo(20150320010101001);// 设置订单总金额model.setTotalAmount(88.88);// 设置订单标题model.setSubject(Iphone6 16G);// 设置产品码model.setProductCode(FAST_INSTANT_TRADE_PAY);// 设置PC扫码支付的方式model.setQrPayMode(1);// 设置商户自定义二维码宽度model.setQrcodeWidth(100L);// 设置订单包含的商品列表信息ListGoodsDetail goodsDetail new ArrayListGoodsDetail();GoodsDetail goodsDetail0 new GoodsDetail();goodsDetail0.setGoodsName(ipad);goodsDetail0.setAlipayGoodsId(20010001);goodsDetail0.setQuantity(1L);goodsDetail0.setPrice(2000);goodsDetail0.setGoodsId(apple-01);goodsDetail0.setGoodsCategory(34543238);goodsDetail0.setCategoriesTree(124868003|126232002|126252004);goodsDetail0.setShowUrl(http://www.alipay.com/xxx.jpg);goodsDetail.add(goodsDetail0);model.setGoodsDetail(goodsDetail);// 设置订单绝对超时时间model.setTimeExpire(2016-12-31 10:05:01);// 设置二级商户信息SubMerchant subMerchant new SubMerchant();subMerchant.setMerchantId(2088000603999128);subMerchant.setMerchantType(alipay);model.setSubMerchant(subMerchant);// 设置业务扩展参数ExtendParams extendParams new ExtendParams();extendParams.setSysServiceProviderId(2088511833207846);extendParams.setHbFqSellerPercent(100);extendParams.setHbFqNum(3);extendParams.setIndustryRefluxInfo({\scene_code\:\metro_tradeorder\,\channel\:\xxxx\,\scene_data\:{\asset_name\:\ALIPAY\}});extendParams.setSpecifiedSellerName(XXX的跨境小铺);extendParams.setRoyaltyFreeze(true);extendParams.setCardType(S0JP0000);model.setExtendParams(extendParams);// 设置商户传入业务信息model.setBusinessParams({\mc_create_trade_ip\:\127.0.0.1\});// 设置优惠参数model.setPromoParams({\storeIdType\:\1\});// 设置请求后页面的集成方式model.setIntegrationType(PCWEB);// 设置请求来源地址model.setRequestFromUrl(https://);// 设置商户门店编号model.setStoreId(NJ_001);// 设置商户的原始订单号model.setMerchantOrderNo(20161008001);// 设置外部指定买家ExtUserInfo extUserInfo new ExtUserInfo();extUserInfo.setCertType(IDENTITY_CARD);extUserInfo.setCertNo(362334768769238881);extUserInfo.setName(李明);extUserInfo.setMobile(16587658765);extUserInfo.setMinAge(18);extUserInfo.setNeedCheckInfo(F);extUserInfo.setIdentityHash(27bfcd1dee4f22c8fe8a2374af9b660419d1361b1c207e9b41a754a113f38fcc);model.setExtUserInfo(extUserInfo);// 设置开票信息InvoiceInfo invoiceInfo new InvoiceInfo();InvoiceKeyInfo keyInfo new InvoiceKeyInfo();keyInfo.setTaxNum(1464888883494);keyInfo.setIsSupportInvoice(true);keyInfo.setInvoiceMerchantName(ABC|003);invoiceInfo.setKeyInfo(keyInfo);invoiceInfo.setDetails([{\code\:\100294400\,\name\:\服饰\,\num\:\2\,\sumPrice\:\200.00\,\taxRate\:\6%\}]);model.setInvoiceInfo(invoiceInfo);request.setBizModel(model);// 第三方代调用模式下请设置app_auth_token// request.putOtherTextParam(app_auth_token, -- 请填写应用授权令牌 --);AlipayTradePagePayResponse response alipayClient.pageExecute(request, POST);// 如果需要返回GET请求请使用// AlipayTradePagePayResponse response alipayClient.pageExecute(request, GET);String pageRedirectionData response.getBody();System.out.println(pageRedirectionData);if (response.isSuccess()) {System.out.println(调用成功);} else {System.out.println(调用失败);// sdk版本是4.38.0.ALL及以上,可以参考下面的示例获取诊断链接// String diagnosisUrl DiagnosisUtils.getDiagnosisUrl(response);// System.out.println(diagnosisUrl);}}private static AlipayConfig getAlipayConfig() {String privateKey -- 请填写您的应用私钥例如MIIEvQIBADANB ... ... --;String alipayPublicKey -- 请填写您的支付宝公钥例如MIIBIjANBg... --;AlipayConfig alipayConfig new AlipayConfig();alipayConfig.setServerUrl(https://openapi.alipay.com/gateway.do);alipayConfig.setAppId(-- 请填写您的AppId例如2019091767145019 --);alipayConfig.setPrivateKey(privateKey);alipayConfig.setFormat(json);alipayConfig.setAlipayPublicKey(alipayPublicKey);alipayConfig.setCharset(UTF-8);alipayConfig.setSignType(RSA2);return alipayConfig;} } 自身实现的接口 创建一个配置文件 alipay.appIdAPPID alipay.appPrivateKey应用私钥 alipay.alipayPublicKey支付宝公钥 alipay.notifyUrl异步发送通知消息的 URL 地址。 alipay.returnUrl回调地址 相关参数的获取方式 请参考 快速接入 - 支付宝文档中心 具体的沙箱参数 沙箱应用 - 开放平台 APPID 支付宝公钥和应用私钥 notifyUrl 需要借助一个内网穿透的工具 这里使用的是natapp 官网https://natapp.cn/ 下载https://pan.baidu.com/s/1L99Ibawylnck4b4c0NtmXg?pwd685x 具体的配置可以查看文档 NATAPP1分钟快速新手图文教程 - NATAPP-内网穿透 基于ngrok的国内高速内网映射工具 如何进行内网穿刺 a.配置完免费版的隧道下载之后Windows系统进行如下步骤 b.cmd -authtoken 参数方式运行.      windows ,点击开始-运行-命令行提示符 后进入 natapp.exe的目录 c.运行 natapp -authtoken9ab6b9040a624f40 注意参数输入正确性,不要有多余的空格等! d.运行成功,都可以得到如下界面: Tunnel Status  Online 代表链接成功 Version      当前客户端版本,如果有新版本,会有提示 Forwarding    当前穿透 网址 或者端口 Web Interface  是本地Web管理界面,可在隧道配置打开或关闭,仅用于web开发测试 Total Connections 总连接数 Avg Conn Time 0.00ms 这里不代表,不代表,不代表 延时,需要注意! notifyUrl上图获取的穿透网址Controller层的接口utl alipay.returnUrl回调地址 前端Vue的接口 设置对应的配置类 package com.example.alipay.common; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;Data Component ConfigurationProperties(prefix alipay) public class AlipayConfig {private String appId;private String appPrivateKey;private String alipayPublicKey;private String notifyUrl;private String returnUrl; } 对应的Controller接口 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 {AlipayTradePagePayResponse response alipayClient.pageExecute(request);System.out.println(response); // 在控制台输出响应结果form response.getBody(); // 调用SDK生成表单} catch (AlipayApiException e) {e.printStackTrace();}httpResponse.setContentType(text/html;charset CHARSET);httpResponse.getWriter().write(form);// 直接将完整的表单html输出到页面httpResponse.getWriter().flush();httpResponse.getWriter().close(); } 如何异步通知商家 主要使用的是回调函数 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 outTradeNo 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));// 查询订单/*** 使用 QueryWrapper 查询订单根据订单号outTradeNo从数据库中查找订单。* 如果订单存在更新订单信息包括支付宝交易号alipayNo、支付时间PayTime和订单状态State将订单状态更新为 已支付。* 最后返回 success告诉支付宝服务器回调处理成功。*/QueryWrapperOrders queryWrapper new QueryWrapper();queryWrapper.eq(order_id, outTradeNo);Orders orders ordersMapper.selectOne(queryWrapper);if (orders ! null) {orders.setAlipayNo(alipayTradeNo);orders.setPayTime(new Date());orders.setState(已支付);ordersMapper.updateById(orders);}}}return success; } 完整的Controller层代码 package com.example.alipay.controller;import cn.hutool.json.JSONObject; import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.internal.util.AlipaySignature; import com.alipay.api.request.AlipayTradePagePayRequest; import com.alipay.api.response.AlipayTradePagePayResponse; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.example.alipay.common.AlipayConfig; import com.example.alipay.controller.AliPay; import com.example.alipay.dao.OrdersMapper; import com.example.alipay.entity.Orders; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Date; import java.util.HashMap; import java.util.Map;// xjlugv6874sandbox.com // 9428521.24 - 30 9428491.24 30 9428521.24 RestController RequestMapping(/alipay) public class AliPayController {private static final String GATEWAY_URL https://openapi-sandbox.dl.alipaydev.com/gateway.do;private static final String FORMAT JSON;private static final String CHARSET UTF-8;//签名方式private static final String SIGN_TYPE RSA2;Resourceprivate AlipayConfig aliPayConfig;Resourceprivate OrdersMapper ordersMapper;GetMapping(/pay) // subjectxxxtraceNoxxxtotalAmountxxxpublic 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 {AlipayTradePagePayResponse response alipayClient.pageExecute(request);System.out.println(response); // 在控制台输出响应结果form response.getBody(); // 调用SDK生成表单} catch (AlipayApiException e) {e.printStackTrace();}httpResponse.setContentType(text/html;charset CHARSET);httpResponse.getWriter().write(form);// 直接将完整的表单html输出到页面httpResponse.getWriter().flush();httpResponse.getWriter().close();}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 outTradeNo 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));// 查询订单/*** 使用 QueryWrapper 查询订单根据订单号outTradeNo从数据库中查找订单。* 如果订单存在更新订单信息包括支付宝交易号alipayNo、支付时间PayTime和订单状态State将订单状态更新为 已支付。* 最后返回 success告诉支付宝服务器回调处理成功。*/QueryWrapperOrders queryWrapper new QueryWrapper();queryWrapper.eq(order_id, outTradeNo);Orders orders ordersMapper.selectOne(queryWrapper);if (orders ! null) {orders.setAlipayNo(alipayTradeNo);orders.setPayTime(new Date());orders.setState(已支付);ordersMapper.updateById(orders);}}}return success;} } 注意网关地址需要修改 GATEWAY_URL 为对应沙箱的支付宝网关地址 访问地址 http://localhost:9090/alipay/pay?subject%E9%A6%99%E8%95%89traceNo202208221661165525068totalAmount6.99 支付之后会返回相应的支付信息
http://www.hkea.cn/news/14495226/

相关文章:

  • 香水网站建设规划书制作网站的技术
  • 网站源码资源中企动力邮箱
  • 公司建设网站温州专业微网站制作价格
  • 网站 建设 成品七台河新闻综合
  • 网站投放广告多少钱云搜索
  • 大连网站哪家做的好老房改造 装修公司
  • 做网站需要了解什么辽宁省建设工程造价总站网站
  • 莆田系医院的网站用什么做的王也道长高清头像 微信
  • 网站开发进度计划外贸网站推广seo
  • 网站备案的幕布南通网站推广怎么收费
  • 网站建设注意事项知乎开发高端产品
  • 网站建设 蔬菜配送怎么建设空包网站
  • 推广 高端网站建设新手怎么建立自己的网站
  • 毕业设计做系统跟做网站哪个容易网站开发运营
  • 做行业网站能赚钱吗Wordpress自动化
  • h5的网站seo企业建站系统
  • 汉中市住房和城乡建设局网站信阳网站建设招聘
  • 广东营销型网站建设18年手机网站
  • 2817网站东莞建设网站官网
  • 重庆网站开发公司计算机网站建设考试试卷
  • 简单手机网站如何制作网站开发项目视频
  • 苏州定制型网站建设做网站那家比较好
  • asp手机网站统计代码个人网页制作模板图片代码
  • 游戏类网站怎么做贵州建设项目门户网站
  • 桥头网站仿做爱站工具维护
  • 网站运营策划ppt河北邯郸做移动网站
  • 手机网站与pc网站的区别那做网站
  • 网站转移 备案汕头企业免费建站
  • phpcms v9农业网站模板个人主页生成
  • 苏州大型网站建设公司搜索引擎下载入口