java支付宝wap支付_SpringBoot 支付宝H5Wap沙盒环境手机网站支付
在这里介绍的是使用SpringBoot 来完成对H5Wap移动端网页沙盒环境的手机网站支付
* {+ I) s9 |- c* E先贴上支付宝沙盒环境应用网站
( p0 b8 ^1 \0 A8 i% Nhttps://openhome.alipay.com/platform/appDaily.htm?tab=info/ _4 T7 h2 T' U ]
一、配置沙盒环境的沙箱应用1 a' Z% V% ^) Q9 t/ y( Y, v
1.1 信息配置) g! M. v' d5 \( J' P( }) H5 S( h
如图8 |* I% @6 m4 K1 ]- N% r
APPID 要用到$ \* W( z/ d: l& } ? Q% W' z
支付宝网关 由于是沙盒环境这个不用去理会,固定的。
$ S$ z, _" c- w, P9 I
1.2 RSA2(SHA256)密钥推荐
" {' V4 J- X9 E第一步:需要点击设置一下
, ]# {& A1 Z. t# T0 A4 c第二步:选择公钥加签模式,然后在点击红色箭头下的支付宝密码生成器下载
' C; U0 f" l. O! {1 t) B8 d* |; I
第三步:点击会跳专到工具网站,如下网站地址
+ O- |' S1 o( a, p$ Bhttps://docs.open.alipay.com/291/106097/6 T A; K1 [" ?' l! e8 u
第四步:根据你自己的电脑下载所需要的工具,本人是win 10 所以就选择windows
" W& h5 g8 y) |6 G: @$ z
第五步:生成私钥和公钥
' K# _& n8 E; a# Y/ C4 i# f根据上面红色箭头所需要的步骤,然后直接点击生成密钥8 J+ M/ z+ h. q$ x; s
第六步:把生成的应用公钥复制 RSA2点击设置也就是图2下方,然后点击保存设置1 L$ @, { V# ^) k, |0 K+ J
第七步:重新在打开RSA2密码
6 |% b5 O5 H1 v& V此时就会出现应用公钥生成的支付宝公钥
6 G6 `, x+ r; n! y" T: s+ H: g此时就已经完成对沙箱环境的配置
) K3 v8 k2 c% G# i2 Z3 _
二、Springboot 支付宝配置
3 l( u* `' |& W6 z3 _3 y2.1 添加pom依赖包
* Q* ]+ r: e2 k: }' E0 k6 {2 D, H
com.alipay.sdk: }: R5 U, J0 U- Z" w. w+ C
alipay-sdk-java
% h1 z& Z" ?9 f7 Y/ s4.9.13.ALL# l' s( x8 h* m' h
' q! D- z+ o! u' L8 X5 b3 R; |+ i$ r" I0 ?
& Z9 c6 Q2 n: @; m4 B
`5 Q( J9 i5 o! U% |0 ]
2.2 在config包下添加AlipayConfig(下面对应是沙盒环境刚刚的配置)) p x$ Z: G9 I! ? O
app_id :APPID# m0 L6 D% { W. x9 n" T
merchant_privcate_key : 工具生成的私钥
3 b4 Y' a4 A2 E$ Z: C' C# E1 h; ^alipay_public_key :用应用公钥生成的支付宝公钥* u4 t; g5 _: A. p) k
notify_url : 异步通知地址,由于是本地测试用localhost就可以
2 T# p8 g& K$ M& p* G1 S L. F/ s" C' Q5 Creturn_url: 同步通知地址,也是可以用localhost来3 X9 P9 g# r# _& e
其它都照抄不变3 Z( I) k# F+ l! T K0 c7 ?
注意下面私钥和支付宝公匙不要搞混# @# t" n3 Y( S3 d) e/ _
2.3 写一个controller 唤起支付宝APP支付3 \1 N% O/ n- N3 w; v
项目前提:是使用freemarker模板( M$ j1 @7 {' U& Z
贴上图,用两张图说明,
5 M7 P/ z$ s2 `第一个RequestMapping:访问ftl模板页面,测试的时候会说明/ o2 v. N8 y) C ~( ^
第二个RequestMapping:唤醒APP支付宝代码核心
9 K1 w8 V; Q$ `& u% @5 [第三个和第四个,是异步通知和同步通知,可以在里面添加所需要的业务代码
2 l0 w! x; N. D i# n L: g# i
+ D n& {$ c+ @" g
; e1 n# e9 g1 q. p: k( H
贴上代码8 Y/ ?6 B7 O7 X# c0 ?1 C: q! g: C5 l
@RestController
1 c) ^$ l! D4 |4 U: Q@RequestMapping("alipay")
. G; I) ]# `7 }4 I5 npublic class WapPayController {
' W0 r8 ^9 [2 W+ A( O. b//访问支付demo页面
) k! p! N0 H( k2 d @RequestMapping("index")' \% d. I( ~# J
public ModelAndView aliPay(){* v+ v- E% E$ X9 ?: I& N
return new ModelAndView("alipay/index");: f* v# C/ `( |, _6 O5 J
}
. q1 |5 E, P( [" M( E; g0 T% j@RequestMapping("wapPayServlet")
0 u( X' Z8 O! V( k. xpublic String doWapPay(
: A' I# L n: F# q+ @& ]// @RequestParam(value = "orderId") String orderId ,1 B9 W- E+ V4 `4 h4 s: f
@RequestParam(value ="subject")String subject,
" r5 B/ N8 d% {1 o4 v@RequestParam(value ="total_amount")String total_amount){
7 p" i2 [- y/ S& M2 w* i/ i @//获得初始化的AlipayClient,将上面创建的配置类中的变量设置到该对象中+ Z3 O+ S. D' t4 L" ~ A% e8 I+ [
AlipayClient alipayClient =new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key,7 ^9 u, X8 f4 }9 J8 k
"json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
$ o4 c/ M" @+ x$ \& N; u' }AlipayTradeWapPayRequest alipayRequest =new AlipayTradeWapPayRequest();//创建API对应的request7 G. y3 L0 e( U) @' r
alipayRequest.setReturnUrl(AlipayConfig.return_url);
4 e( }. r8 P! {8 k4 W' Z2 PalipayRequest.setNotifyUrl(AlipayConfig.notify_url);
) t- O% `* H# h! H3 j//如果想正常调用接口则需要传一些必要参数,out_trade_no:订单号,保证唯一性,支付宝根据该参数生成你的支付单号,total_amount:需要支付的金额,注意是String型,且金额计数的分割","不能存在(例如1,000就是错误的参数),subject:对物品进行描述,product_code:是支付类型.更多详细的参数信息参考链接: [https://docs.open.alipay.com/api_1/alipay.trade.page.pay](https://docs.open.alipay.com/api_1/alipay.trade.page.pay)
' b D# O" T" c M1 D* e String orderId = keyUtil.genUniqueKey();//自己随便的订单号, x% _/ @8 Y1 w r% m$ [% U8 H
try {* _7 y, |, [, M! z9 }
alipayRequest.setBizContent("{\"out_trade_no\":\""+ orderId +"\","
" J. n: K; i1 t9 M +"\"total_amount\":\""+total_amount +"\","
& h* U& C. B7 T5 U +"\"subject\":\""+ subject +"\","+ L6 d5 [) `5 m+ d5 Q" t& R
+"\"product_code\":\"QUICK_WAP_PAY\"}");. n# t, A- J2 M7 b: `/ E8 C; u* e
// FAST_INSTANT_TRADE_PAY PC7 I: d0 a: P$ {, ^0 O+ p4 j: c
// QUICK_WAP_PAY mobile
% v" a/ T& B, U# t5 s//请求: e8 _* a- @: O4 i$ N; }
String result;
8 w7 H2 H. h* }1 W% I9 w0 f7 y1 l//发送请求并返回
# t0 F6 L( e2 I3 q result = alipayClient.pageExecute(alipayRequest).getBody();( E) G3 q5 f' k; G! M) d
System.out.println("*********************\n返回结果为:"+result);- b0 A" p1 n" s+ C' n& Z! E) A* [1 g
return result;
# Y. T8 F0 r6 ^( ^* n! V. x}catch (Exception e) {
0 |8 P1 w# i X: o, z+ t# i// TODO Auto-generated catch block
2 _' g% l s7 I1 g9 \ e.printStackTrace();
: \) E, [; f: N. Preturn null;1 ~7 s8 A; [) B% T$ n% W
}* ~0 x; l$ S* A4 g o3 @5 y
}% K* e1 l0 h+ N
@RequestMapping("alipay-callback-return-sult")0 s" V7 F4 B4 `8 x7 z. g
public ResultVo successResult(HttpServletRequest request, HttpServletResponse response){
2 g- Y/ T+ U4 v8 o3 A' I//可以根据request.getParameterMap()获得到调用接口时传递的一些参数去做后续的业务处理. {. L6 c( c# i, o" I% l1 V" z
Map parameterMap = request.getParameterMap();1 O b/ a; |0 ], h
String[] out_trade_nos = parameterMap.get("out_trade_no");
; R) q. M2 I" b G4 |+ BString id = out_trade_nos[0];
, E+ C( R3 p4 A5 O8 C//跳转到其他页面或重定向到其他方法
8 D: l; F& O/ J+ {6 { return ResultVoUtil.success(id);# w, o+ h5 s. F. T4 v5 A
}
' o9 b% B" t& W@RequestMapping("alipay-callback-notify-url")
; r+ k1 O- b9 T6 T0 |public ResultVo failResult(HttpServletRequest request, HttpServletResponse response){
) H4 q, g \6 C, O6 c; i% tMap parameterMap = request.getParameterMap();, @- h E) g+ H5 ~% j
String[] out_trade_nos = parameterMap.get("out_trade_no");$ t0 n1 X7 E0 q- a2 l" r
String uuid = out_trade_nos[0];* n3 G( u l T i K+ g
return ResultVoUtil.success(uuid);5 V+ \- M3 R4 Y1 R% P# X
}# p# J$ F* h& N0 d) _! i; W# D, Z
}@3 X! m9 R, x0 J2 h
3. 项目代码测试
~% E: H D( O" k0 W* u3.1 先设置ftl模板,就是通过第一个RequestMapping:访问ftl模板页面+ Z/ I/ C9 ]2 h
3. 2 运行本地springboot项目,访问图10的页面,点击提交按钮7 y& J# i5 R) \' V |
就会唤醒alipay支付宝页面,由于是用浏览器测试就选择继续浏览器付款
- C' T6 [ x; c$ @, I' N注:需要安装APP的,需要去沙盒环境下方扫码下载一个沙盒钱包b/ J/ I2 N% H9 y( Y* Q
3.3 点击继续浏览器付款
; [. E1 c, x( z! T B测试的时候填手机号码没用,需要点击右下角的支付宝账号登录8 n$ B+ h" h! g6 n L
3.4 点击支付宝账号登录,输入沙箱环境的账号的和密码
[& p; o7 y+ J0 z) {6 e' E3 U
3.5 沙箱环境的账号和密码等,输入买家的账号和密码到图14
" S! n. S* i: s8 Q
3. 6 点击图14下一步,完成确实支付
& s! N% f7 ]) Z1 p* s% Z
3.7 输入密码
4 L {, D8 b/ n7 F4 k3 w) J0 J7 m6个 111111+ k) D) i- \( J1 Q$ K& Q4 d
3.8 支付成功
java支付宝wap支付_SpringBoot 支付宝H5Wap沙盒环境手机网站支付相关推荐
- 苹果支付:如何解决沙盒环境下获取可恢复购买项为空
在传统手游开发中免不了和苹果支付打交道,而且苹果也会有各种奇奇怪怪的问题和BUG . 曾经有一次某一个游戏出现了调单问题,现象如下(我有点懒,不想画泳道图或者时序图): 客户端拉起支付付款成功,OC底 ...
- 支付宝手机网站支付,app支付,PC端支付流程以及服务端php支付下单,回调流程详解
一.支付宝支付相关文档地址: 支付宝支付相关的文档地址:https://open.alipay.com/api 电脑网站支付:https://opendocs.alipay.com/open/270/ ...
- php支付宝手机网站支付功能,手机网站支付如何接入支付宝简易版支付功能PHP版...
接入支付宝准备工作:(关于账号可以是个体商户也可以是企业账号但必须有营业执照) 1.登录蚂蚁金服开放平台 2.创建应用,应用分类网页应用和移动应用.应用提交审核审核通过后得到appid才能调用相应的 ...
- 【支付宝支付】Java实现支付宝手机网站支付流程
前言 微信登录网页授权与APP授权 微信JSAPI支付 微信APP支付 微信APP和JSAPI退款 支付宝手机网站支付 支付宝APP支付 支付宝退款 以上我都放到个人公众号,搜一搜:JAVA大贼船,文 ...
- java接入支付宝手机网站支付
适用范围:申请支付宝手机网站支付接口并完成认证,适用于手机wap网页,微信默认不支持可通过引导用户至浏览器支付,发送请求后调用支付宝客服端完成支付,如果没有安装APP则使用网页支付. 支付宝其他支付方 ...
- 使用支付宝开放平台沙盒环境调用支付宝支付接口
这一段时间一直想搞个支付的小demo,碰巧最近狂神的 kuangstudy 出了一期支付宝支付的教程,我立马就买了课程,但是当我看到一半的时候发现只有企业才能调用,心想完蛋了,搞不成了.就在我万念俱灰 ...
- 支付--支付宝手机网站支付(WAP)
介绍: 这是放在微信供公众号内的一个项目,支付模块设计到微信公众号支付和支付宝手机网站支付,这次把支付宝手机网站支付整理下来. 文档: 支付宝手机网站支付的开发文档: https://docs.ope ...
- Java 支付宝手机网站支付下单 支付回调 及订单查询实现
首先,参考官方api: alipay.trade.wap.pay(手机网站支付接口2.0) 官方提供DEMO下载,不过是jsp的 准备工作:平台入驻,签约功能,应用上线,配置秘钥等 使用Alipay ...
- [go]沙盒环境下调用支付宝扫码支付
参考于这篇博客,在此基础上进行了封装 配置支付宝开放平台 支付宝开放平台,使用支付宝扫码并成为开发者.然后进入沙盒进行测试 下载沙盒版支付宝并使用沙盒账号中的买家信息进行登陆,之后使用此账号登陆的支付 ...
最新文章
- SpringMVC异常处理之异常处理代码编写
- [SDOI2019] 热闹的聚会与尴尬的聚会
- 什么是倾斜45度的火山图?
- 作为一个死忠粉,我的 IntelliJ IDEA 一直都是这样来设置的,效果很棒!
- get和post方式传递参数
- [OpenS-CAD]屏幕坐标转换分析
- [已解决]Hibernate程序未终止
- zend studio php配置,Zend Studio的配置和使用
- java计算101~200之间的素数
- Gilbert Elliot丢包模型
- EKF扩展卡尔曼滤波算法做电池SOC估计,在Simulink环境下对电池进行建模
- MACBOOK 快捷键与系统设置
- Postgresql - 查询表引用或被引用的外键
- 2018年7月21日日报
- 常见的12个深度学习面试问题(提高篇)
- BUCK降压电路空载问题
- CSS中的cursor用法
- C++实现寻找所有马鞍点
- css实现提示信息,纯CSS 实现tooltip 内容提示信息效果
- 产品需求文档的写作(一) – 写前准备(信息结构图)
热门文章
- 2021高考广州广雅中学成绩怎样查询,广州传统五大高中成绩怎样?华附、广雅、广二等两年成绩对比...
- jvm虚拟机栈的作用
- 怎么用计算机属性打开文件,电脑桌面上的文件打开的时候都是显示属性没法打开 了解原因所在...
- mysql oracle html5 后台框架
- 钱诚10.8今天非农黄金操作建议!纸白银美原油行情走势及在线解套
- 我的成长之路:常态化考试备份CTHBF
- 基于Python实现的手机基站信息经济分析系统 课程报告+源码及数据
- mysql自动补充缺失日期
- 【单片机毕业设计】【mcuclub-jj-020】基于单片机的洗碗机的设计
- 毫无保留分享给大家,新手做自媒体挣钱,这10大坑千万不要踩