android集成支付宝红包功能.你想要的就在这里

废话不说直接上干货!

先带你跑通支付宝demo
1.支付宝demo下载地址点击打开链接
2.有两个参数需要填写如下图(如果没有那么找申请支付业务的人要);其中RSA2_PRIVATERSA_PRIVATE只需一个即可,我这里用的是RSA2_PRIVATE

3.填好这两个参数后接下来就是支付宝的坑了....
4.下图这两行数据支付宝的demo提供的参数根本就不对需要改掉.

5.这两行正确的我这里给出其中out_request_noout_order_no用一次就不行了再次测试时候随便写就行.是真的随便加一位数字就好了
keyValues.put("biz_content", "{\"amount\":\"0.01\",\"order_title\":\"恭喜发财\",\"out_request_no\":\"8077735255631407891\",\"out_order_no\":\"8077735255938023191\"}");
keyValues.put("method", "alipay.fund.coupon.order.app.pay");

6.接下来运行起来就可以支付了.amount是金额写的0.01就一分钱别害怕..而且订单号是乱写的.48小时会退回来





收钱
1.红包发出去了接下来流程就是收钱.这个在支付宝demo中是没有的.不用找了.而且这个也不是android做的.而是后台;android需要做的是将out_order_code和收款的uid传送给后台即可.(uid怎么拿这里马上就说)
接下来说下正常项目流程
1.发红包时.需要有个验签动作,这些都是后台需要做的,android需要传给后台的参数正常就2个.一个是祝福语"恭喜发财,大吉大利";另一个是金额"100"(支付宝红包限制最大支持200),后台应该给你返回一个签好的字符串.你把这个字符串放在alipay.payV2("这里", true);就好了,这里的true作用是唤起支付宝或者是H5支付时候的loading.正常都要true.(唤起H5又有坑稍后说这里,先说安装了支付宝情况)
2.做完上面的步骤,你会在handler(用支付宝demo做法是这样,要是你用其他方式异步处理则就不同)中收到9000的状态码,则为支付成功,在这里也要去做你自己该做的事情了比如发红包消息先上两张图看看这两个步骤吧




支付完成--------------------------------------------

收红包

1.收的时候需要发送给后台两个参数上面已经说了一个是out_order_no一个是uid(填上上面留的坑),其中out_order_no是在你支付时候后台需要返回给你的.将这个参数当做消息体发送给你想发送红包的那个人.当接收方点击收取红包时候就是拿着这个out_order_no去后台请求的,uid来自授权.也就是说接收方需要授权给支付宝通过支付宝返回uid.把这两个参数传给后台就可以收红包了
2.授权代码个发送红包类似.不同的是不需要传任何参数给后台,只需要向后台申请授权时候拿到后台返回的一大串字符串放在alipay.payV2("这里", true);同样成功后会走到handler的支付宝回调中.拿到9000后从中取出uid即可.这里还有个坑...支付宝授权demo中并没有拿这个uid字段...需要自己写.我在下图给出写法.还有就是不知道为什么这里拿到的result和memo都是空的....反正暂时还没影响功能,待项目遇到问题了再更新这里 
续2:现在回来踩上面红色字的坑:之前说没影响功能,且支付宝的result也没有返回值,所以这步没办法验证,现在出现问题了,问题是:昨天发的红包没有领取,今天再去领取会有部分红包出现领取错误情况,这就是因为没有进行验证,现在不知道为什么支付宝的result又可以拿到结果了.那就把这个result传给后台,后台验证后返回成功之后再发送消息就ok了.
3.这两个参数传给后台就领取成功了
4.看图


至此支付宝红包流程大概结束了.接下来说几个问题
1.因为领红包时是需要授权的.那么每次都要去授权吗?这肯定是很麻烦的操作.但是如果授权后将uid保存起来就是有问题的.如果我用一个支付宝授权了.之后想换一个支付宝收钱,这时候因为uid是存起来的,所以即使登陆另一个支付宝了.钱还是被领取到之前的账号中.这就需要提供解绑支付宝重新绑定操作
2.上文留了个坑,现在填上.如果没有支付宝客户端.那么需要调起H5支付.这个非常简单.只需要在你的AndroidMainfest中复制进去两个activity就实现了.支付宝集成文档中复制点击打开链接懒得找文档就去支付宝demo中复制.然后卸载支付宝你会发现H5被调起来了,但是但是...当嘀的一声支付宝中的钱被扣了,然后点击返回.你会发现支付失败..支付宝返回6000含义是操作取消.但是钱却是支付成功了.这是因为调起来的是H5支付结果没办法把9000返回到你的应用中.这时候支付宝就会给你6000.所以调H5功能我们公司的项目暂时搁置了,第一版先不支持.这里其实不应该依赖支付宝返回9000.支付结果都应该放在后台去做.支付成功后台给异步返回这样无论是H5还是支付宝客户端都没问题了.而且支付宝也建议不要依赖同步的9000这种返回.(回踩此坑,现在可以实现H5支付了,依赖后台返回的支付成功结果就是上文提到的调用支付宝支付接口之后,会返回result这时不要依赖支付宝返回的状态码9000,因为H5返回的是6000,这时将result发送给后台去验证支付结果,后台返回支付成功后,然后成功的回调中将成功的消息发送出去就可以了如下图这样)


第一部分完~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~接下来贴下项目中主要实现图.不爱看文字看图吧.

1.发送接口


2.发送,领取,授权三个接口



3.发送请求



好了暂时先到这里.后续这个项目支付功能不断完善情况下会持续更新
各位看官有什么意见,或者哪里写错了欢迎评论指正...

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值