支付宝H5 与网页端支付开发
在日常生活中,我们基本上都是进行微信与支付宝的支付方式尽心支付,这种方式确实大大便利了我们的生活,那么如何在我们的产品中进行微信与支付宝支付的植入开发呢?
我们先进行支付宝的H5与网页端支付开发,这里只进行支付宝支付的调用,关于具体的生产逻辑(例如订单之类等)大家可以根据自己的逻辑处理添加;
支付宝的开发配置地址:https://openhome.alipay.com/
进入开发者中心--->选择研发服务进行我们沙箱环境配置(测试环境)
沙箱环境会为我们提供如下信息进行仿真测试
还有我们需要的:------里面的一些秘钥,进去之后支付宝会提供我们工具,傻瓜式生成就行
接下来我们进行java程序的编码:
(1)支付宝对于一些安全的加密操作已经帮我们进行了实现,大大降低了我们开发时间需要我们Maven导入支付宝的sdk依赖 ,在官方的文档中对于支付宝各种支付实现有很好的实例,我们可以下载下来进行copy
<dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>3.1.0</version> </dependency>
(2),引入我们的配置类(红色部分写入自己在支付宝后台中的配置)
package com.pay.alipay.util.config;import java.io.FileWriter; import java.io.IOException;/* **类名:AlipayConfig*功能:基础配置类*详细:设置帐户有关信息及返回路径*修改日期:2017-04-05*说明:*以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。*该代码仅供学习和研究支付宝接口使用,只是提供一个参考。*/public class AlipayConfig {// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号public static String app_id ="2016091800539310";// 商户私钥,您的PKCS8格式RSA2私钥public static String merchant_private_key = "很长很长的字符串";// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。public static String alipay_public_key = "很长很长的字符串";// 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问public static String notify_url = "http://68a71d94.ngrok.io/alipay/notify";// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问public static String return_url = "http://localhost:80";// 签名方式public static String sign_type = "RSA2";// 字符编码格式public static String charset = "utf-8";// 支付宝网关//public static String gatewayUrl = "https://openapi.alipay.com/gateway.do";public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";//(沙箱环境)// public static String gatewayUrl = "https://openapi.alipay.com/gateway.do";//(正式环境)// 支付宝网关public static String log_path = "C:\\";/** * 写日志,方便测试(看网站需求,也可以改成把记录存入数据库)* @param sWord 要写入日志里的文本内容*/public static void logResult(String sWord) {FileWriter writer = null;try {writer = new FileWriter(log_path + "alipay_log_" + System.currentTimeMillis()+".txt");writer.write(sWord);} catch (Exception e) {e.printStackTrace();} finally {if (writer != null) {try {writer.close();} catch (IOException e) {e.printStackTrace();}}}}}
(3)编写Controller层调用service层进行获取支付表单
@RequestMapping(value="/alipay",method =RequestMethod.GET)public void alipay(HttpServletRequest request,HttpServletResponse response) {String result =null;try {log.info("------->开始调用支付宝支付接口");//开始时间long starttime = System.currentTimeMillis();result =alipay.startAlipay();log.info("alipay支付请求结束,用时:"+ (System.currentTimeMillis() - starttime) + "毫秒");}catch(Exception e) {e.printStackTrace();}response.setContentType("text/html;charset=utf8");response.getWriter().write(result);//直接将完整的表单html输出到页面 response.getWriter().flush();response.getWriter().close(); }
(4)建立支付所需要的实体对象entity,我们将支付参数封装在这里面,方便Json的转换
package com.pay.entity;public class PayBizContent {//商户订单号,商户网站订单系统中唯一订单号,必填private String out_trade_no;//支付金额,,必填private String total_amount;//订单名称private String subject;//商品描述private String body;private String product_code;public String getProduct_code() {return product_code;}public void setProduct_code(String product_code) {this.product_code = product_code;}@Overridepublic String toString() {return "AlipayBizContent [out_trade_no=" + out_trade_no + ", total_amount=" + total_amount + ", subject="+ subject + ", body=" + body + ", timeout_express=" + timeout_express + "]";}//订单失效时间,如果是十分钟则是10m配置;private String timeout_express;public String getOut_trade_no() {return out_trade_no;}public void setOut_trade_no(String out_trade_no) {this.out_trade_no = out_trade_no;}public String getTotal_amount() {return total_amount;}public void setTotal_amount(String total_amount) {this.total_amount = total_amount;}public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}public String getBody() {return body;}public void setBody(String body) {this.body = body;}public String getTimeout_express() {return timeout_express;}public void setTimeout_express(String timeout_express) {this.timeout_express = timeout_express;}}
(5)service 进行调用微信SDK
public String startAlipay() {//获得初始化的AlipayClient,微信SDK提供的,直接使用即可AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl,AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json",AlipayConfig.charset, AlipayConfig.alipay_public_key,AlipayConfig.sign_type);//wap端支付AlipayTradeWapPayRequest alipayRequest=new AlipayTradeWapPayRequest();//*****************pc端支付用这个****************////AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest(); alipayRequest.setReturnUrl(AlipayConfig.return_url);alipayRequest.setNotifyUrl(AlipayConfig.notify_url);PayBizContent aliContent =new PayBizContent();aliContent.setTotal_amount("1290");//金额aliContent.setSubject("辣条");//商品名称aliContent.setOut_trade_no("180458382060");//商户订单,必须是唯一的aliContent.setTimeout_express("10m");//过期时间为10m;//**************pc端类型用这个**********************// aliContent.setProduct_code("FAST_INSTANT_TRADE_PAY");aliContent.setProduct_code("QUICK_WAP_WAY");JSONObject json =new JSONObject();alipayRequest.setBizContent(json.toJSONString(aliContent));log.info("放入支付宝接口中的参数--->"+alipayRequest.getBizContent());try {//成功后返回一个form表单字符串String form = alipayClient.pageExecute(alipayRequest).getBody();log.info("AlipayServiceImpl-----调用支付宝返回结果:"+form);return form;} catch (AlipayApiException e) {log.error("AlipayServiceImpl----->支付宝生成表单错误");e.printStackTrace();return "调用失败";}}
转载于:https://www.cnblogs.com/iscys/p/9514539.html
支付宝H5 与网页端支付开发相关推荐
- 【支付】支付宝H5 或者 pc端 支付
后端返回一段链接,直接回调给前端,前端处理代码如下 const div = document.createElement('divform'); div.innerHTML = res.code_ur ...
- 视频教程-10分钟搞定 php+H5手机网页微信支付 在线视频教程(含源代码)-微信开发
10分钟搞定 php+H5手机网页微信支付 在线视频教程(含源代码) 04年进入计算机行业.拥有6年net和php项目开发经验,8年java项目开发经验. 现前端全栈工程师,主攻产品设计,微信开发等. ...
- C#支付宝当面付扫码支付开发,包括demo代码的修改和蚂蚁金服开发平台的配置
支付宝开发前配置: 第一步登陆蚂蚁金服开放平台服:支付宝扫码登陆 登录之后看到一下界面,找到自主研发选项,点击开始入驻 配置自己的个人信息: 到此为止我们所有应该做的配置基本上就完成了,但是我们要注意 ...
- H5手机移动端WEB开发资源整合 常用的标签及注意事项
meta基础知识 H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 <meta name="viewport" content="width=device-wid ...
- 安卓苹果手机在微信内打开支付宝h5拉起app支付
// 监控微信浏览器isWeiXin() { let ua = window.navigator.userAgent.toLowerCase(); if (ua.match(/MicroMesseng ...
- 博奥智源营销劵发放平台网页端技术开发功能清单
营销劵发放平台,通过平台对接的方式,让开发平台具备自动授权登陆.灵活配置活动.自动与银联后台同步优惠券领取与核销状态等功能,实现银联优惠券通过民生银行APP 进行发放.管理等目标. 劵平台功能清单 序 ...
- 微信网页端支付功能(前端)详解
微信支付功能其实与登录授权功能是有相通之处的,都是调用微信的JSAPI,直接搜索JSAPI就可以看见微信支付的文档.接下来我说一下支付功能我的思路. 首先 : 用户登录进入页面,支付调取统一下单接口, ...
- 手机网页端支付宝支付
手机网页端支付开发文档:https://docs.open.alipay.com/203/105285/ 第一步:进入蚂蚁金服(https://openhome.alipay.com),创建应用,提交 ...
- 新版开运网运势测算网站源码 支持微信/支付宝H5支付 支持分销代理 可封装APP
源码介绍 我在外面花钱购买的某站VIP资源,就是那种搬砖站,买来没时间调试发给大家看看吧,喜欢的就下去玩玩! 支持微信/支付宝H5和电脑端扫码支付.手机端可以调起微信/支付宝应用支付 支持后台设置价格 ...
最新文章
- 京东程序员被同事吐槽:需求排期长拖黄业务,都研发的一些啥玩意
- html 调用ios手机相机 demo,H5网页调用Android和iOS手机相机功能
- 用OpenJTAG烧写程序到Flash—— 韦东山嵌入式Linux视频学习笔记03
- 【机器学习】PyCaret!又一个神仙的自动机器学习库!
- how does gateway framework treat default system flag in customizing
- Gblfy 专栏设立服务大家,共享资源
- Android 升级下载 它们的定义Updates 兼容版本
- 前端安全问题及解决办法
- USB-HID鼠标键盘驱动
- codeup21158 循环比赛日程表
- IJCAI 22 | 面向第三方代码库的代码生成
- 定义一个Instrument(乐器)类,并使用共有的play()方法,再分别定义子类 管乐器 打击乐器 弦乐器,使用重写play方法,实现每种乐器的独特play方式。
- Pikachu漏洞练习平台----验证码绕过(on server) 的深层次理解
- 大块的写作时间?这个时代,它是奢侈品
- 英文网站推广推荐一些很好的SEO优化工具
- DO、DTO、BO、VO、POJO等各种O浅学(总结)
- 基于casbin的ABAC/RBAC权限实践
- Windows系统安全风险-本地NTLM重放提权
- 思科ASA防火墙: 接口配置名称 安全等级 acl防控列表
- SIM卡的结构和类型
热门文章
- MySQL的存储过程和函数简单写法
- MySQL 获取系统时间/系统日期/日期时间的函数
- python时间序列数据分析,Python数据分析之时间序列
- inkscape生成g代码_三点二. 量子对抗生成网络 (Quantum GAN)
- php的变量都放在哪里,php变量一般放在哪个位置
- 浙江科技学院c语言考试试卷,浙江科技学院c语言C试卷A.doc
- 【Android OpenGL ES 开发 (一)】使用c++开发opengles 与 日志功能 及 加载assets
- LeetCode 231. 2的幂
- cookie无法读取bdstoken_第二章(第12节):cookie操作
- 计算机组成原理唐朔飞课后答案第六章,计算机组成原理第六章部分课后题答案(唐朔飞版)...