在日常生活中,我们基本上都是进行微信与支付宝的支付方式尽心支付,这种方式确实大大便利了我们的生活,那么如何在我们的产品中进行微信与支付宝支付的植入开发呢?

我们先进行支付宝的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 与网页端支付开发相关推荐

  1. 【支付】支付宝H5 或者 pc端 支付

    后端返回一段链接,直接回调给前端,前端处理代码如下 const div = document.createElement('divform'); div.innerHTML = res.code_ur ...

  2. 视频教程-10分钟搞定 php+H5手机网页微信支付 在线视频教程(含源代码)-微信开发

    10分钟搞定 php+H5手机网页微信支付 在线视频教程(含源代码) 04年进入计算机行业.拥有6年net和php项目开发经验,8年java项目开发经验. 现前端全栈工程师,主攻产品设计,微信开发等. ...

  3. C#支付宝当面付扫码支付开发,包括demo代码的修改和蚂蚁金服开发平台的配置

    支付宝开发前配置: 第一步登陆蚂蚁金服开放平台服:支付宝扫码登陆 登录之后看到一下界面,找到自主研发选项,点击开始入驻 配置自己的个人信息: 到此为止我们所有应该做的配置基本上就完成了,但是我们要注意 ...

  4. H5手机移动端WEB开发资源整合 常用的标签及注意事项

    meta基础知识 H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 <meta name="viewport" content="width=device-wid ...

  5. 安卓苹果手机在微信内打开支付宝h5拉起app支付

    // 监控微信浏览器isWeiXin() { let ua = window.navigator.userAgent.toLowerCase(); if (ua.match(/MicroMesseng ...

  6. 博奥智源营销劵发放平台网页端技术开发功能清单

    营销劵发放平台,通过平台对接的方式,让开发平台具备自动授权登陆.灵活配置活动.自动与银联后台同步优惠券领取与核销状态等功能,实现银联优惠券通过民生银行APP 进行发放.管理等目标. 劵平台功能清单 序 ...

  7. 微信网页端支付功能(前端)详解

    微信支付功能其实与登录授权功能是有相通之处的,都是调用微信的JSAPI,直接搜索JSAPI就可以看见微信支付的文档.接下来我说一下支付功能我的思路. 首先 : 用户登录进入页面,支付调取统一下单接口, ...

  8. 手机网页端支付宝支付

    手机网页端支付开发文档:https://docs.open.alipay.com/203/105285/ 第一步:进入蚂蚁金服(https://openhome.alipay.com),创建应用,提交 ...

  9. 新版开运网运势测算网站源码 支持微信/支付宝H5支付 支持分销代理 可封装APP

    源码介绍 我在外面花钱购买的某站VIP资源,就是那种搬砖站,买来没时间调试发给大家看看吧,喜欢的就下去玩玩! 支持微信/支付宝H5和电脑端扫码支付.手机端可以调起微信/支付宝应用支付 支持后台设置价格 ...

最新文章

  1. 京东程序员被同事吐槽:需求排期长拖黄业务,都研发的一些啥玩意
  2. html 调用ios手机相机 demo,H5网页调用Android和iOS手机相机功能
  3. 用OpenJTAG烧写程序到Flash—— 韦东山嵌入式Linux视频学习笔记03
  4. 【机器学习】PyCaret!又一个神仙的自动机器学习库!
  5. how does gateway framework treat default system flag in customizing
  6. Gblfy 专栏设立服务大家,共享资源
  7. Android 升级下载 它们的定义Updates 兼容版本
  8. 前端安全问题及解决办法
  9. USB-HID鼠标键盘驱动
  10. codeup21158 循环比赛日程表
  11. IJCAI 22 | 面向第三方代码库的代码生成
  12. 定义一个Instrument(乐器)类,并使用共有的play()方法,再分别定义子类 管乐器 打击乐器 弦乐器,使用重写play方法,实现每种乐器的独特play方式。
  13. Pikachu漏洞练习平台----验证码绕过(on server) 的深层次理解
  14. 大块的写作时间?这个时代,它是奢侈品
  15. 英文网站推广推荐一些很好的SEO优化工具
  16. DO、DTO、BO、VO、POJO等各种O浅学(总结)
  17. 基于casbin的ABAC/RBAC权限实践
  18. Windows系统安全风险-本地NTLM重放提权
  19. 思科ASA防火墙: 接口配置名称 安全等级 acl防控列表
  20. SIM卡的结构和类型

热门文章

  1. MySQL的存储过程和函数简单写法
  2. MySQL 获取系统时间/系统日期/日期时间的函数
  3. python时间序列数据分析,Python数据分析之时间序列
  4. inkscape生成g代码_三点二. 量子对抗生成网络 (Quantum GAN)
  5. php的变量都放在哪里,php变量一般放在哪个位置
  6. 浙江科技学院c语言考试试卷,浙江科技学院c语言C试卷A.doc
  7. 【Android OpenGL ES 开发 (一)】使用c++开发opengles 与 日志功能 及 加载assets
  8. LeetCode 231. 2的幂
  9. cookie无法读取bdstoken_第二章(第12节):cookie操作
  10. 计算机组成原理唐朔飞课后答案第六章,计算机组成原理第六章部分课后题答案(唐朔飞版)...