一:支付宝开放文档:

支付宝手机网站支付的开发文档: https://docs.open.alipay.com/203

二:配置应用环境:

开发者调用接口前需要先生成RSA2密钥,RSA2密钥包含应用私钥(APP_PRIVATE_KEY)、应用公钥(APP_PUBLIC_KEY)。生成密钥后在开放平台管理中心进行密钥配置,配置完成后可以获取支付宝公钥(ALIPAY_PUBLIC_KEY)。此为一一对应。

生成好的公钥上传给支付宝,并记住支付对应的公钥。基础环境中的应用网关及授权回调地址需要开发者自己配置,前提是可以在外网有申请可以访问的。

三:签约配置

自用型应用。将所需要的功能进行签约,商户签约需要营业执照,身份证等多种信息。

签约完成后,应用申请上线。

四:手机网站快速接入,调用支付宝2.0版本

第一步:搭建和配置开发环境

下载服务端SDK

第二步:调用接口

手机网站支付产品包含两类API:

1页面跳转类:需要从前端页面以Form表单的形式发起请求,浏览器会自动跳转至支付宝的相关页面(一般是收银台或签约页面),用户在该页面完成相关业务操作后再回跳到商户指定页面。

2系统调用类:直接从服务端发起HTTP请求,支付宝会同步返回请求结果。

特别注意:

1.由于前台回跳的不可靠性,前台回跳只能作为商户支付结果页的入口,最终支付结果必须以异步通知或查询接口返回为准,不能依赖前台回跳。

2.商户系统接收到异步通知以后,必须通过验签(验证通知中的sign参数)来确保支付通知是由支付宝发送的。详细验签规则参考异步通知验签。

3.接受到异步通知并验签通过后,一定要检查通知内容,包括通知中的app_id, out_trade_no, total_amount是否与请求中的一致,并根据trade_status进行后续业务处理。

五:使用SDK快速接入

1:手机网站支付alipay.trade.wap.pay:

对于页面跳转类API,SDK不会也无法像系统调用类API一样自动请求支付宝并获得结果,而是在接受request请求对象后,为开发者生成前台页面请求需要的完整form表单的html(包含自动提交脚本),商户直接将这个表单的String输出到http response中即可。

 1 AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); //获得初始化的AlipayClient
 2 AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();//创建API对应的request
 3 alipayRequest.setReturnUrl("http://domain.com/CallBack/return_url.jsp");
 4 alipayRequest.setNotifyUrl("http://domain.com/CallBack/notify_url.jsp");//在公共参数中设置回跳和通知地址
 5 alipayRequest.setBizContent("{" +
 6 " \"out_trade_no\":\"20150320010101002\"," +
 7 " \"total_amount\":\"88.88\"," +
 8 " \"subject\":\"Iphone6 16G\"," +
 9 " \"product_code\":\"QUICK_WAP_PAY\"" +
10 " }");//填充业务参数
11 String form="";
12 try {
13 form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单
14 } catch (AlipayApiException e) {
15 e.printStackTrace();
16 }
17 httpResponse.setContentType("text/html;charset=" + CHARSET);
18 httpResponse.getWriter().write(form);//直接将完整的表单html输出到页面
19 httpResponse.getWriter().flush();
20 httpResponse.getWriter().close();

2:支付异步通知验签:

1 Map<String, String> paramsMap = ... //将异步通知中收到的所有参数都存放到map中
2 boolean signVerified = AlipaySignature.rsaCheckV1(paramsMap, ALIPAY_PUBLIC_KEY, CHARSET, SIGN_TYPE) //调用SDK验证签名
3 if(signVerified){
4 // TODO 验签成功后,按照支付结果异步通知中的描述,对支付结果中的业务内容进行二次校验,校验成功后在response中返回success并继续商户自身业务处理,校验失败返回failure
5 }else{
6 // TODO 验签失败则记录异常日志,并在response中返回failure.
7 }

3:交易退款接口alipay.trade.refund

1 AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); //获得初始化的AlipayClient
2 AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();//创建API对应的request类
3 request.setBizContent("{" +
4 " \"out_trade_no\":\"20150320010101001\"," +
5 " \"trade_no\":\"2014112611001004680073956707\"," +
6 " \"out_request_no\":\"1000001\"," +
7 " \"refund_amount\":\"2014112611001004680073956707\"" +
8 " }");//设置业务参数
9 AlipayTradeRefundResponse response = alipayClient.execute(request);//通过alipayClient调用API,获得对应的response类

六:注意事项(特别注意,SDK新加的)

1.在内网需要访问外网的时候,需要使用代理路径。在退款时候调用SDK,需要调用新的重构方法。

1 public DefaultAlipayClient(String serverUrl, String appId, String privateKey, String format,  String charset, String alipayPublicKey, String signType,String proxyHost, int proxyPort) {
2
3         this(serverUrl, appId, privateKey, format, charset, alipayPublicKey, signType);
4
5         this.proxyHost = proxyHost;
6
7         this.proxyPort = proxyPort;
8
9 }

2.心得:时刻关注官方的文档,当发现官方所提供的不支持自己需要时,需想官方提交问题,等待支付宝那边将官网文档完善。

3.在测试支付宝支付退款时候,选择沙箱环境进行验证,沙箱路径与真实的网关路径十分相似,写网关的时候注意路径是否正确。需保管好自己的沙箱账户。

转载于:https://www.cnblogs.com/wangzhengyu/p/8550157.html

支付宝WAP支付总结相关推荐

  1. 支付宝WAP支付接口开发

    支付宝WAP支付接口开发 因项目需要,要增加支付宝手机网站支付功能,找了支付宝的样例代码和接口说明,折腾两天搞定,谨以此文作为这两天摸索的总结.由于公司有自己的支付接口,并不直接使用这个接口,所以晚些 ...

  2. WebView支付宝wap支付转支付宝客户端支付

    android WebView支付宝wap支付转支付宝客户端支付重写WebViewClient的以下方法即可.可参考 支付宝平台文档商户APP的WebView处理alipays协议 public bo ...

  3. php 公众号内h5支付宝支付宝支付宝支付宝支付,微信浏览器中支付宝wap支付和微信JSAPI公众号支付...

    手机浏览器只有支付宝wap支付,微信浏览器中出现支付宝wap支付和微信JSAPI公众号支付,其中支付宝wap在线支付没有在新窗口打开(兼容大部分手机),Thinkphp3.2公众号支付 下载资源 下载 ...

  4. 支付宝Wap支付你了解多少?

    上几篇文章详细介绍了支付宝APP支付.微信APP支付 此文章来介绍下支付宝Wap支付(也叫作手机网站支付) 目录 1.创建应用并获取APPID 2.配置应用环境 3.配置沙箱环境 4.服务端实现(Ma ...

  5. 支付宝 Wap 支付的两种实现方式

    点击▲关注 "爪哇妹" 给公众号标星置顶 更多摄影技巧 第一时间直达 简介 适用于商家在移动端网页应用中集成支付宝支付功能.商家在网页中调用支付宝提供的网页支付接口调起支付宝客户端 ...

  6. java 支付宝wap支付初识

    最近突然想弄下支付宝的支付,因为感觉很好玩.中间遇到很多问题,查查找找,总算是整了两天给整出来了,这里为自己记录下. 第一步:直接去安卓支付宝的官方文档去,写的很清楚了已经,这里有源码https:// ...

  7. java支付宝wap支付_SpringBoot 支付宝H5Wap沙盒环境手机网站支付

    在这里介绍的是使用SpringBoot 来完成对H5Wap移动端网页沙盒环境的手机网站支付 * {+ I) s9 |- c* E先贴上支付宝沙盒环境应用网站 ( p0 b8 ^1 \0 A8 i% N ...

  8. 支付宝wap支付过程中需要注意的坑

    1,首先本人使用的是新版即时到帐的接口文档开发.本人没有使用支付宝的sdk包,所有代码都有自己参考Sdk包自己编写.并且wap手机支付异步通知和同步通知(新版称前台回调),都集成在之前开发的电脑扫码支 ...

  9. php支付宝wap支付详解,alipay_wap

    软件简介 目的 支付宝的demo很搓 项目需要接入很多支付,磋上加搓,不是特别好管理 本类库的目标 完成跟支付宝手机网关支付对接的功能 便于后面扩展(利用各种Handler),可测试 如何使用本类库? ...

最新文章

  1. Python学习资源 | 3个高性能开源计算机视觉库
  2. MyBatis-Plus之通过插件将数据库表生成Entiry,Mapper.xml,Mapper.class的方式。
  3. 温故知新,.Net Core遇见WinForms客户端窗体框架,在DotNet Core大一统基础上老树发芽...
  4. 苹果MacOS系统上安装第三方驱动失败/无效
  5. [BZOJ 1012] [JSOI 2008] 最大数maxnumber
  6. [cocos2d-x]HelloWorldDemo
  7. Java SpringMVC
  8. 假如 AI 时代少了软件可信,我们将面临什么?
  9. 使用idea开发SpringBoot应用,添加@SpringBootApplication注解时,不能自动提示
  10. 在二维数组中寻找最小鞍点1181(该行最大值,该列最小值)(2种思路)
  11. git不小心删除文件后,如何获取?
  12. 【番外篇】波动率的几种模型
  13. iPhone 14来了,苹果13和14区别,值不值得买
  14. Pandas学习——文本数据
  15. 一张纸(5毫米)折叠多少次可以达到珠穆朗玛峰的高度(8848米)?
  16. 梦想起航商务工作PPT模板
  17. NodeJs模块化(KPD)
  18. 华为荣耀10作为安卓手机程序开发真机
  19. 《比尔总动员》2013年7月11版别更新公告
  20. matlab绘制四棱台,Auto-CAD2016斜截四棱台的画法.ppt

热门文章

  1. 非暴力沟通——当我们褪去隐蔽的精神暴力,爱将自然流露
  2. 详解编辑距离算法-Levenshtein Distance
  3. 【阿不】深入ASP.NET数据绑定(上)
  4. gcd(最大公约数算法)
  5. 【产业互联网周报】硅谷银行破产,冲击或蔓延全球;组建国家数据局、国家金融监督管理总局;钉钉收购“我来wolai”...
  6. 希尔排序 C语言实现
  7. Android,应用apk及源码
  8. 屁宝杀手升级啦!支持 Creator 2.4.0及所有2.X版本
  9. 谈字节编址字访问的地址信息浪费问题
  10. 陆上行舟,现在还是理想