H5集成支付宝App支付客户端+服务端(java)

由于最近项目需要接入第三方开发,支付宝支付,微信支付,OSS图片上传以及短信服务。为避免第一次开发支付宝再次花时间查看文档,今天总结一下接入支付宝的过程,以及接入过程中遇到的问题。

1.首先在蚂蚁金服开放平台申请应用https://open.alipay.com/platform/home.htm,App支付需要签约后才能生效,签约只需提供完成资料即可通过审核。

2.在已申请应用中查看签约状态,若状态为已生效才可以继续开发,签约状态查看如下所示,注意:未完成签约的应用是无法接入成功的。

3.配置密钥

使用官网提供一键生成工具生成一对RSA密钥https://docs.open.alipay.com/291/105971,这里公钥和私钥一定要验证是否匹配,需要将应用公钥到支付宝开放平台,并将应用私钥作为参数在服务端配置,用来与应用公钥进行匹配(这里一定要注意)。

4.客户端开发

客户端开发相对简单,可根据需要自行添加业务。

 1                 var channel=null;
 2                 // 1. 获取支付通道
 3                     plus.payment.getChannels(function(channels){
 4                         channel=channels[0];
 5                     },function(e){
 6                         alert("获取支付通道失败:"+e.message);
 7                     });
 8                 var ALIPAYSERVER=AppDataURL + ‘/weixinpay.do?price=1‘;
 9                 // 2. 发起支付请求
10                 function pay(id){
11                     var PAYSERVER=‘‘;
12                     if(id==‘alipay‘){
13                         PAYSERVER=ALIPAYSERVER;
14                     }else if(id==‘wxpay‘){
15                         PAYSERVER=WXPAYSERVER;
16                     }else{
17                         plus.nativeUI.alert("不支持此支付通道!",null,"");
18                         return;
19                     }
20                     var xhr=new XMLHttpRequest();
21                     xhr.onreadystatechange=function(){
22                         switch(xhr.readyState){
23                             case 4:
24                             mui.toast("xhr.status:"+xhr.status);
25                             if(xhr.status==200){
26                                 plus.payment.request(channel,xhr.responseText,function(result){
27                                     plus.nativeUI.alert("支付成功!",function(){
28                                         back();
29                                     });
30                                 },function(error){
31                                     plus.nativeUI.alert("支付失败:" + error.code+error.message);
32                                 });
33                             }else{
34                                 alert("获取订单信息失败!");
35                             }
36                             break;
37                             default:
38                             break;
39                         }
40                     }
41                     xhr.open(‘GET‘,PAYSERVER);
42                     xhr.send();

5.服务端开发

以下代码只需配置好正确参数即可使用。

 1  @RequestMapping(value = "/AliPay.do")
 2     public void aliPayInfo(HttpServletRequest request, HttpServletResponse response) {
 3         response.setHeader("Access-Control-Allow-Origin", "*");
 4         String money = request.getParameter("money");
 5         String subject = request.getParameter("subject");
 6         String orderCode = request.getParameter("orderCode");
 7         String outTradeNo = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + (int) (Math.random() * 90000 + 88888);
 8         //实例化客户端
 9         AlipayClient alipayClient = new DefaultAlipayClient(ConfigUtil.ALI_SERVER_URL, ConfigUtil.ALI_APPID, ConfigUtil.ALI_PRIVATEKEY);
10         //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口为alipay.trade.app.pay
11         AlipayTradeAppPayRequest requestR = new AlipayTradeAppPayRequest();
12         AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
13         model.setBody("我是测试数据");
14         model.setSubject(subject);
15         model.setOutTradeNo(outTradeNo);
16         model.setTimeoutExpress("30m");
17         model.setTotalAmount(money);
18         model.setProductCode("QUICK_MSECURITY_PAY");
19         requestR.setBizModel(model);
20         requestR.setNotifyUrl(ConfigUtil.ALI_NOTIFYURL);
21         try {
22             OrderInfo orderInfo = iTouristService.getOrderIdByOrderCode(orderCode);
23            if (orderInfo != null){
24                boolean res = iTouristService.updateOrderInfoByPrepareField(orderInfo,outTradeNo);
25
26                if (res){
27                    AlipayTradeAppPayResponse responseR = alipayClient.sdkExecute(requestR);
28                    String cao = responseR.getBody();
29                    response.getWriter().write(cao);
30                    response.getWriter().flush();
31                    response.getWriter().close();
32                }
33            }
34         } catch (Exception e) {
35             // TODO: handle exception
36         }
37     }

初次做第三方开发,经验不足,如有错误,希望指点一二,谢谢!

原文地址:https://www.cnblogs.com/zxinbk/p/8336856.html

时间: 2024-10-11 14:50:56

H5集成支付宝App支付客户端+服务端(java)的相关文章

android 集成支付宝app支付(原生态)-包括android前端与java后台

本文讲解了 android开发的原生态app集成了支付宝支付, 还提供了java后台服务器处理支付宝支付的加密代码, app前端与java后台服务器使用json数据格式交互信息,java后台服务主要用来对支付数据进行加密和接受支付宝服务器的回调 注意: 本文即涉及到 android前端, 也涉及到 Java后台 准备条件: 到支付宝官网上注册用户, 打开开放平台,支付宝默认生成沙箱环境,用来测试支付流程 安装Android Studio[下载], 安装 Eclipse mars  [下载],  

微信支付(APP支付)-服务端开发(二 )

如果你已经可以微信支付成功,那么你已经成功90%,剩下的就是订单确认问题了. 接上一篇文章,今天我们来谈一谈,订单查询与确认: APP端支付成功之后,会再次向服务端发起请求,确认付款订单时候成功,同时服务端也要根据订单号更新数据库,确保前后端一直性. 服务端收到APP端发送的请求后,回获取到APP端传递过来的订单号,拿到订单号后,同样的方式,拼接xml格式的字符串,发送微信端,查询订单信息,比如付款是否成功,付款金额,订单详情等等. /调用微信接口,查询订单是否支付成功 public Map<S

微信app支付,服务端对接

首先,文档不给力,不吐槽了. 遇到的坑如下: 1. mch_id和appid没有关联关 系 这个没有花太久,参考了csdn某君的建议,直接邮件给相关技术团队([email protected]). 告知,其实对的mch_id是多少. (帐号管理比较烂还是为了安全原因,总之无从查询这个对应关系,必需邮件) 2. 签名不对 所有算法按照规定来做的,生成的签名也跟调试工具(https://pay.weixin.qq.com/wiki/tools/signverify/)生成的一致. 寻思了下,应该是商

关于支付宝app支付服务端的实现-Java版

前言 最近在工作中需要使用支付宝app支付,在初次使用过程中也不可避免的出现了一些问题,那么本次随笔主要是概述支付宝app支付服务端的整个实现过程以及就服务端出现的一些问题做一些总结. 1.准备工作 1.1 入驻蚂蚁金服开放平台 https://open.alipay.com/platform/home.htm 1.2 创建应用 首先需要创建一个应用. 然后需要设置应用公钥. 下载支付宝密钥生成器.生成成功之后将公钥复制到这里. 最后提交审核,等待. 2.Maven依赖 首先需要下载SDK,ht

关于集成支付宝快捷支付(无线)的流程

最近在开发Android客户端需要集成支付宝款姐支付(无线),被各种公钥私钥绕的头晕故在这里记录一下,希望对其他人也有所帮助 本文使用的开发语言: 客户端:JAVA 服务端:PHP 1.确保你的支付宝商家帐号已经签约快捷支付(无线) 2.下载快捷支付(无线)SDK,目录结构如下图 注:openssl用来生成商户的公钥和私钥,其余的一目了然 2.1 生成一对公钥和私钥,然后打开公钥(rsa_public_key.pem)去除-----BEGIN PUBLIC KEY----------END PU

支付宝app支付java后台流程及原理分析

java版支付宝app支付流程及原理分析 本实例是基于springmvc框架编写     一.流程步骤         1.执行流程           当手机端app(就是你公司开发的app)在支付页面时,调起服务端(后台第1个创建订单接口)接口,后台把需要调起支付宝支付的参数返回给手机端,手机端拿到         这些参数后,拉起支付宝支付环境完成支付,完成支付后会调异步通知(第2个接口),此时需要给支付宝返回成功或者失败信息,成功后会调用同步通知(第3个接口)         返回支付成

.Net后台实现支付宝APP支付

前面讨论了微信支付,接下来聊聊支付宝的APP支付(新款支付宝支付).其实这些支付原理都一样,只不过具体到每个支付平台,所使用的支付配置参数不同,返回至支付端的下单参数也不同. 话不多说,直接上代码. 在App.Pay项目中使用NuGet管理器添加引用Alipay.AopSdk,也可以不添加引用,将官方SDK源码放至项目中. 添加完引用后,我们就可以开工了,新建文件夹AliPay,在文件夹中新建AliPayConfig类,存放支付宝APP支付所需的参数,同样,这些参数我也放在了配置文件中. 1 u

2分钟快速集成支付宝快捷支付

本文介绍了iOS快速集成支付宝支付的方法,本文中介绍的方法是经过一次封装,因此配置完成之后调用仅需一行代码即可支付宝支付,非常的方便,希望大家喜欢. 我只是根据官方的文档,对支付宝的SDK做了进一步封装,其中密钥的生成很简单,需要看官方的文档,官方的文档我在工程附件目录里也有一份,如果需要马上集成,没工夫研究的话,可以大致看一下密钥的生成即可,其他的配置我会在下面进行讨论. 要在iOS应用里集成支付宝支付,需要公司和支付宝签约,然后生成相应的密钥.密钥的生成支付宝的开发文档里已经说的非常清楚了,

Android版网络办公系统应用客户端+服务端

该项目源码是Android版网络办公系统应用客户端+服务端,也是一个简单的网上办公系统的Android客户端,项目有服务端和客户端部分的源码的,客户端开发环境eclipse  AVD版本 4.0服务器 phpStudy 2013集成环境 Apache+php5.3+ISAPI模式 phpStudy 2013集成环境绿色版下载http://www.phpstudy.net/phpstudy/phpStudy2013d.zip官网   http://www.phpstudy.net/ android