在这里介绍的是使用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沙盒环境手机网站支付相关推荐

  1. 苹果支付:如何解决沙盒环境下获取可恢复购买项为空

    在传统手游开发中免不了和苹果支付打交道,而且苹果也会有各种奇奇怪怪的问题和BUG . 曾经有一次某一个游戏出现了调单问题,现象如下(我有点懒,不想画泳道图或者时序图): 客户端拉起支付付款成功,OC底 ...

  2. 支付宝手机网站支付,app支付,PC端支付流程以及服务端php支付下单,回调流程详解

    一.支付宝支付相关文档地址: 支付宝支付相关的文档地址:https://open.alipay.com/api 电脑网站支付:https://opendocs.alipay.com/open/270/ ...

  3. php支付宝手机网站支付功能,手机网站支付如何接入支付宝简易版支付功能PHP版...

    接入支付宝准备工作:(关于账号可以是个体商户也可以是企业账号但必须有营业执照) 1.登录蚂蚁金服开放平台  2.创建应用,应用分类网页应用和移动应用.应用提交审核审核通过后得到appid才能调用相应的 ...

  4. 【支付宝支付】Java实现支付宝手机网站支付流程

    前言 微信登录网页授权与APP授权 微信JSAPI支付 微信APP支付 微信APP和JSAPI退款 支付宝手机网站支付 支付宝APP支付 支付宝退款 以上我都放到个人公众号,搜一搜:JAVA大贼船,文 ...

  5. java接入支付宝手机网站支付

    适用范围:申请支付宝手机网站支付接口并完成认证,适用于手机wap网页,微信默认不支持可通过引导用户至浏览器支付,发送请求后调用支付宝客服端完成支付,如果没有安装APP则使用网页支付. 支付宝其他支付方 ...

  6. 使用支付宝开放平台沙盒环境调用支付宝支付接口

    这一段时间一直想搞个支付的小demo,碰巧最近狂神的 kuangstudy 出了一期支付宝支付的教程,我立马就买了课程,但是当我看到一半的时候发现只有企业才能调用,心想完蛋了,搞不成了.就在我万念俱灰 ...

  7. 支付--支付宝手机网站支付(WAP)

    介绍: 这是放在微信供公众号内的一个项目,支付模块设计到微信公众号支付和支付宝手机网站支付,这次把支付宝手机网站支付整理下来. 文档: 支付宝手机网站支付的开发文档: https://docs.ope ...

  8. Java 支付宝手机网站支付下单 支付回调 及订单查询实现

    首先,参考官方api: alipay.trade.wap.pay(手机网站支付接口2.0) 官方提供DEMO下载,不过是jsp的 准备工作:平台入驻,签约功能,应用上线,配置秘钥等 使用Alipay ...

  9. [go]沙盒环境下调用支付宝扫码支付

    参考于这篇博客,在此基础上进行了封装 配置支付宝开放平台 支付宝开放平台,使用支付宝扫码并成为开发者.然后进入沙盒进行测试 下载沙盒版支付宝并使用沙盒账号中的买家信息进行登陆,之后使用此账号登陆的支付 ...

最新文章

  1. SpringMVC异常处理之异常处理代码编写
  2. [SDOI2019] 热闹的聚会与尴尬的聚会
  3. 什么是倾斜45度的火山图?
  4. 作为一个死忠粉,我的 IntelliJ IDEA 一直都是这样来设置的,效果很棒!
  5. get和post方式传递参数
  6. [OpenS-CAD]屏幕坐标转换分析
  7. [已解决]Hibernate程序未终止
  8. zend studio php配置,Zend Studio的配置和使用
  9. java计算101~200之间的素数
  10. Gilbert Elliot丢包模型
  11. EKF扩展卡尔曼滤波算法做电池SOC估计,在Simulink环境下对电池进行建模
  12. MACBOOK 快捷键与系统设置
  13. Postgresql - 查询表引用或被引用的外键
  14. 2018年7月21日日报
  15. 常见的12个深度学习面试问题(提高篇)
  16. BUCK降压电路空载问题
  17. CSS中的cursor用法
  18. C++实现寻找所有马鞍点
  19. css实现提示信息,纯CSS 实现tooltip 内容提示信息效果
  20. 产品需求文档的写作(一) – 写前准备(信息结构图)

热门文章

  1. 2021高考广州广雅中学成绩怎样查询,广州传统五大高中成绩怎样?华附、广雅、广二等两年成绩对比...
  2. jvm虚拟机栈的作用
  3. 怎么用计算机属性打开文件,电脑桌面上的文件打开的时候都是显示属性没法打开 了解原因所在...
  4. mysql oracle html5 后台框架
  5. 钱诚10.8今天非农黄金操作建议!纸白银美原油行情走势及在线解套
  6. 我的成长之路:常态化考试备份CTHBF
  7. 基于Python实现的手机基站信息经济分析系统 课程报告+源码及数据
  8. mysql自动补充缺失日期
  9. 【单片机毕业设计】【mcuclub-jj-020】基于单片机的洗碗机的设计
  10. 毫无保留分享给大家,新手做自媒体挣钱,这10大坑千万不要踩