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

网站备案与icp备案x3型虚拟主机 wordpress

网站备案与icp备案,x3型虚拟主机 wordpress,前端开发课程,嘉兴网站如何制作一、前言 支付宝支付—沙箱环境使用 支付宝新版SDK-PC端扫码支付 手机浏览器H5支付「本文」 PC端扫码支付#xff0c;其实就是就是 电脑网站支付#xff0c;本文基于支付宝沙箱环境#xff0c;不了解的可以看一下上边的链接。 PS#xff1a;本文是基于支付宝新版 SDK …一、前言 支付宝支付—沙箱环境使用 支付宝新版SDK-PC端扫码支付 手机浏览器H5支付「本文」 PC端扫码支付其实就是就是 电脑网站支付本文基于支付宝沙箱环境不了解的可以看一下上边的链接。 PS本文是基于支付宝新版 SDK 重写的用法非常简单之前的旧版 SDK 就别参考了~ 本文环境 JDK1.8IDEA 2020.3.2SpringBoot 2.2.2alipay-easysdk 2.2.0支付宝沙箱环境 二、引入依赖 源码地址https://github.com/niceyoo/alipay-demo 创建一个 SpringBoot 应用有基础的建议直接看↑源码在 pom 中引入如下依赖 !-- alipay -- dependencygroupIdcom.alipay.sdk/groupIdartifactIdalipay-easysdk/artifactIdversion2.2.0/version /dependency在 application.yml 文件中添加如下配置 ## 支付宝配置 alipay:# 应用IDappId: 你的appid# 应用私钥privateKey: 你的应用私钥privateKey# 支付宝公钥注意不是生成的应用公钥publicKey: 你的支付宝公钥publicKey#支付网关配置这一项是写死的正式环境是openapi.alipay.comgateway: openapi.alipaydev.com# 支付宝前台跳转地址returnUrl: http://ngrok.sscai.club/html/success# 支付宝后台通知地址notifyUrl: http://ngrok.sscai.club/api/alipay/notify_url# 支付宝前台手机网页支付中途取消跳转地址errorUrl: http://ngrok.sscai.club/html/error这些参数在哪里获取的 1、appId应用ID https://open.alipay.com/platform/appDaily.htm?tabinfo 具体见下图所示 2、publicKey、privateKey支付宝公钥、应用私钥 windows工具点击此链接 macos工具点击此链接 这块参考这篇文章的第三节吧https://www.cnblogs.com/niceyoo/p/12196095.html 3、gateway支付网关配置 测试环境openapi.alipaydev.com 正式环境openapi.alipay.com 4、returnUrl、notifyUrl、errorUrl跳转地址 这三个地址在测试环境可以使用内网映射的地址尤其是 notifyUrl 这个是支付宝的回调 URl必须外网可访问。 内网映射可以使用免费的 natapp 。 natapp链接https://natapp.cn/ 具体用法可自行百度。 内网映射就是将内网映射到外网实现通过外网链接访问本地的效果。 例如上方的http://ngrok.sscai.club 指向我本地的 http://127.0.0.1:port 三、代码部分 1、支付宝参数配置类 上面定义的参数有了接下来就是如何使用了。新增一个配置类(AlipayConfig) import com.alipay.easysdk.factory.Factory; import com.alipay.easysdk.kernel.Config; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component;/*** author : niceyoo* version : 1.0* title : AlipayApplication* description : 支付宝支付配置类* copyright :* date :*/ Component public class AlipayConfig implements ApplicationRunner {/*** 应用id*/Value(${alipay.appId})private String appId;/*** 私钥*/Value(${alipay.privateKey})private String privateKey;/*** 公钥*/Value(${alipay.publicKey})private String publicKey;/*** 支付宝网关*/Value(${alipay.gateway})private String gateway;/*** 支付成功后的接口回调地址不是回调的友好页面不要弄混了*/Value(${alipay.notifyUrl})private String notifyUrl;/*** 项目初始化事件* */Overridepublic void run(ApplicationArguments args) throws Exception {/**初始化支付宝SDK**/Factory.setOptions(getOptions());System.out.println(**********支付宝SDK初始化完成**********);}private Config getOptions() {/**这里省略了一些不必要的配置可参考文档的说明**/Config config new Config();config.protocol https;config.gatewayHost this.gateway;config.signType RSA2;config.appId this.appId;/** 为避免私钥随源码泄露推荐从文件中读取私钥字符串而不是写入源码中 **/config.merchantPrivateKey this.privateKey;/** 注如果采用非证书模式则无需赋值上面的三个证书路径改为赋值如下的支付宝公钥字符串即可 **/config.alipayPublicKey this.publicKey;/** 可设置异步通知接收服务地址可选**/config.notifyUrl notifyUrl;return config;} }PS详细的参数文档https://opendocs.alipay.com/apis/00y8k9 2、模拟订单Controller类 /*** author : niceyoo* version : 1.0* title : AlipayController* description : 订单支付控制层-测试代码* copyright :* date :*/ RestController RequestMapping(/api/alipay) public class AlipayController {Autowiredprivate AlipayService alipayService;/*** description: 支付宝电脑网页支付* param subject: 订单名称* param total: 金额* return java.lang.String*/PostMapping(/page)public String page(String subject, String total) {subject 测试支付;total 1000;return alipayService.page(subject, total);}/*** description: 支付宝手机网页支付* param subject: 订单名称* param total: 金额* return java.lang.String*/PostMapping(/wap)public String wap(String subject, String total) {subject 测试支付;total 1000;return alipayService.wap(subject, total);}/*** description: 支付宝异步回调* param request: 请求* return java.lang.String*/PostMapping(/notify_url)public String notify_url(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));}/** 支付宝验签 **/if (Factory.Payment.Common().verifyNotify(params)) {/** 验签通过 **/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));}}return success;}/*** description: 支付宝退款* param outTradeNo: 商家订单号* param refundAmount: 退款金额(不能大于交易金额)* return java.lang.String*/PostMapping(/refund)public String refund(String outTradeNo, String refundAmount) {return alipayService.refund(outTradeNo, refundAmount);}}订单 Controller 类主要模拟了四个方法 page网站支付wap手机支付notify_url支付回调方法refund退款调用方法 3、模拟订单Service类 /*** author : niceyoo* version : 1.0* title : AlipayService* description :* copyright :* date : 2021/2/8 12:27*/ Service public class AlipayService {/*** 支付成功后要跳转的页面*/Value(${alipay.returnUrl})private String returnUrl;/*** 支付宝前台手机网页支付中途取消跳转地址*/Value(${alipay.errorUrl})private String errorUrl;/**** param subject* param total* return*/public String page(String subject, String total) {try {AlipayTradePagePayResponse response Factory.Payment/** 选择电脑网站 **/.Page()/** 调用支付方法(订单名称, 商家订单号, 金额, 成功页面) **/.pay(subject, OrderUtil.getOrderNo(), total, returnUrl);return response.body;} catch (Exception e) {e.printStackTrace();}return null;}/**** param subject* param total* return*/public String wap(String subject, String total) {try {AlipayTradeWapPayResponse response Factory.Payment/** 选择手机网站 **/.Wap()/** 调用支付方法(订单名称, 商家订单号, 金额, 中途退出页面, 成功页面) **/.pay(subject, OrderUtil.getOrderNo(), total, errorUrl, returnUrl);return response.body;} catch (Exception e) {e.printStackTrace();}return null;}/**** param outTradeNo* param refundAmount* return*/public String refund(String outTradeNo, String refundAmount) {try {AlipayTradeRefundResponse response Factory.Payment.Common()/** 调用交易退款(商家订单号, 退款金额) **/.refund(outTradeNo, refundAmount);if (response.getMsg().equals(Success)) {return 退款成功;}} catch (Exception e) {e.printStackTrace();}return 退款失败;}}Service 主要调用支付宝支付提供的便捷方法大家可以看一下方法中的写法。 用到的模拟生成订单号的工具类 public class OrderUtil {/*** 根据时间戳生成订单号* */public static String getOrderNo () {DateTimeFormatter df DateTimeFormatter.ofPattern(yyyyMMddHHmmssSSS);LocalDateTime localDateTime Instant.ofEpochMilli(System.currentTimeMillis()).atZone(ZoneOffset.ofHours(8)).toLocalDateTime();return df.format(localDateTime);}}4、前端截图以及支付演示 由于使用了 thymeleaf增加了三个前端界面 首页调用支付支付成功界面支付失败界面 首页主要就是 form 表单的提交调用了两个方法网页支付、手机网站支付 form enctypemultipart/form-data action/api/alipay/page methodpostbutton typesubmit电脑确认支付/button /form form enctypemultipart/form-data action/api/alipay/wap methodpostbutton typesubmit手机确认支付/button /form支付时需要用到沙箱账号即支付宝沙箱版下载链接如下一个我的下载链接一个官方的哪个下载快用哪个。 https://niceyoo.lanzous.com/i7QFulh3uri https://sandbox.alipaydev.com/user/downloadApp.htm 4.1、点击电脑确认支付PC端支付截图 4.2、点击手机确认支付手机端支付截图 PS进行支付测试注意付款要用沙箱环境提供的支付宝APK。且环境必须手机浏览器环境下非PC端操作。 支付成功后会支付宝会调回调方法下图是我的代理调用截图 至此从以上看来其实不难发现支付宝支付是非常简单的。 ok这篇文章就到这结束了上边并没有详细介绍接口调用、参数说明等详细介绍请查看官方文档https://docs.open.alipay.com/270/105902/
http://www.pierceye.com/news/553252/

相关文章:

  • 淘宝接单做网站wordpress能做企业网站吗
  • 网站建设运营公众号运营合同app网站开发书籍下载
  • 网站seo流程网站开发开账务处理
  • 婚介网站方案长沙网络公司电话
  • 自助网站搭建系统做网站接电话一般要会什么
  • 雷州网站建设公司网站建设与管理说课ppt
  • 问答类网站怎么做wordpress 调取页面缩略图
  • 做电影资源网站手机版wordpress实例配置
  • 广西网站建设方案品牌官网方案
  • 游戏工作室网络组建方案seo81
  • 搭建个人网站的步骤温州专业微网站制作价格
  • 网站怎么做充值系统php图书管理系统网站开发
  • 多商家网站建设自助建站系统源码 资源网
  • 广州番禺网站制作公司哪家好文章网站建设
  • 漯河网站建设e辽宁身营商环境建设局网站
  • 营销网站建设套餐企业信息公示管理系统
  • 网站布局设计排版网站外部链接做多少合适呢
  • 成品网站 源码1688上海网站建设 找德华专业
  • 网站建设费用申报佛山电脑培训班哪里有
  • 免费网站服务器厦门网站建设推广哪家好
  • 青海海东平安县建设局网站如何建设旅游网站
  • 成都响应式网站开发百度里面的站长工具怎么取消
  • 手机购物网站设计广告设计有限公司
  • 新手制作网站wordpress lamp 教程
  • 响应式的网站做优化好吗wordpress删掉自豪
  • 做网站第一步创建网站根目录
  • vs2010做网站前台专门做试题的网站
  • 柳州集团学校网站建设做美食推广的网站
  • 网站开发 发送邮件功能深圳做分销商城网站
  • 网站备案 取消网上智慧团建官网入口