1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > java支付宝wap支付_SpringBoot 支付宝H5Wap沙盒环境手机网站支付

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

时间:2024-01-27 11:20:02

相关推荐

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

在这里介绍的是使用SpringBoot 来完成对H5Wap移动端网页沙盒环境的手机网站支付

* {+ I) s9 |- c* E先贴上支付宝沙盒环境应用网站

( p0 b8 ^1 \0 A8 i% N/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./291/106097/6 TA; 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(下面对应是沙盒环境刚刚的配置)) px$ 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 SL. F/ s" C' Q5 Creturn_url: 同步通知地址,也是可以用localhost来3 X9 P9 g# r# _& e

其它都照抄不变3 Z( I) k# F+ l! TK0 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. Di# nL: g# i

+ Dn& {$ 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# Ln: 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./api_1/alipay.trade.page.pay](https://docs./api_1/alipay.trade.page.pay)

' bD# O" T" cM1 D* e String orderId = keyUtil.genUniqueKey();//自己随便的订单号, x% _/ @8 Y1 wr% 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# iX: o, z+ t# i// TODO Auto-generated catch block

2 _' g% ls7 I1 g9 \ e.printStackTrace();

: \) E, [; f: N. Preturn null;1 ~7 s8 A; [) B% T$ n% W

}* ~0 x; l$ S* A4 go3 @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 Ob/ a; |0 ], h

String[] out_trade_nos = parameterMap.get("out_trade_no");

; R) q. M2 I" bG4 |+ 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();, @- hE) 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( ulTiK+ 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: HD( 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! TB测试的时候填手机号码没用,需要点击右下角的支付宝账号登录8 n$ B+ h" h! g6 nL

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 支付成功

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。