android 第三方支付流程图,android集成第三方支付

技术在于积累,特此来记录一下。

好吧,我承认,在没集成过之前,觉着集成第三方支付挺不知所措的,因为不知道要在客户端做什么,是否需要配置一些参数,如商户id等等,也许你会说看官方文档啊,但是官方文档毕竟只是理论,而且是便于开发者理解的文档,比如说有些数据本来是不应该放在客户端处理的,但是文档中还是放在了客户端处理。

那么,做过之后才知道,像那些配置参数的动作都是服务端做的,至少我这里是服务端处理的,然后客户端只需要将订单信息以及支付信息发送给后台,在获得服务端返回的信息之后,调用支付接口即可。当然了,有些过程还是需要按照官方文档来的,没毛病。

当前项目中有用到两种支付:支付宝 和 微信。

两种方式对应的状态值是1 和 2。即1代表支付宝支付,2代表微信支付。

一、支付宝

选择了这种支付方式后,会向后台发送一个请求:例如http://xxx.xxx.com/pay/order?number=xxx201704141505079695&payType=1&userToken=xxxd178a14c-ceaf-4c5e-b1ae-a619d4ba67d4&os=1&deviceId=860128035137866&pushToken=daddbd24bf40ec452aec9ed68baa7acd&versionCode=12&versionName=1.0&sign=146e742fcb1f88457a9b9fbc27aa8b82

主要是订单id,和 支付方式 这两个参数,也就是number 和 payType。

然后,后台会返回数据信息,如下:

{

"code": 1,

"data": "cGFydG5lcj0iMjA4ODQxMTk3NDgzMDY3NiImc2VsbGVyX2lkPSJjaHF6aHVveWlAam9heWUuY29tIiZvdXRfdHJhZGVfbm89IkhYRzIwMTcwNDE0MTUwNTA3OTY5NSImc3ViamVjdD0i6I6O6Zyy5pavL1NhbHVzIOmTgeWFg+aenOiUrOa1k+e8qemlruWTgSDooaXpk4HooaXooYAgNS4uLiImYm9keT0i6I6O6Zyy5pavL1NhbHVzIOmTgeWFg+aenOiUrOa1k+e8qemlruWTgSDooaXpk4HooaXooYAgNS4uLiImdG90YWxfZmVlPSI0MzcuMCImbm90aWZ5X3VybD0iaHR0cDovL29wZW4uaGl4Z28uY29tLy9wYXkvYWxpTm90aWZ5LzEuMC4wIiZzZXJ2aWNlPSJtb2JpbGUuc2VjdXJpdHlwYXkucGF5IiZwYXltZW50X3R5cGU9IjEiJl9pbnB1dF9jaGFyc2V0PSJ1dGYtOCImaXRfYl9wYXk9IjFkIiZyZXR1cm5fdXJsPSJtLmFsaWFweS5jb20iJnNpZ249ImJRTjZvdFNsVTE4VFpFRiUyQk9pQ3pnUm1oWXhMUEJ1Z3h6NyUyQnhNMUtrZ1UwakpwOEE2Vk9Xd0N0VWdEajJ0UUlLTEhZTnd2MzlwQVlySlk2YzY3aTNteVkyRSUyQkluMnBnbDF4SWt4TVRIOVpNZWRoQ1hqWXdYQ1dUSEFBWVJwY0FPOWlldGdtRTYlMkJaZGd3bzBrRndPN2pSWVVHajBrT1J1NTclMkZYRlR3dmdMbjglM0QiJnNpZ25fdHlwZT0iUlNBIg==",

"msg": "",

"field": null}

接下来,客户端会对返回的data对应的字符串进行Base64Decode,结果如下:

partner="2088411974830676"&seller_id="gblzhuoyi@xxx.com"&out_trade_no="xxx201704141505079695"&subject="莎露斯/Salus 铁元果蔬浓缩饮品 补铁补血 5..."&body="莎露斯/Salus 铁元果蔬浓缩饮品 补铁补血 5..."&total_fee="437.0"&notify_url="http://xxx.xxx.com//pay/aliNotify/1.0.0"&service="xxx.securitypay.pay"&payment_type="1"&_input_charset="utf-8"&it_b_pay="1d"&return_url="m.aliapy.com"&sign="xxxbQN6otSlU18TZEF%2BOiCzgRmhYxLPBugxz7%2BxM1KkgU0jJp8A6VOWwCtUgDj2tQIKLHYNwv39pAYrJY6c67i3myY2E%2BIn2pgl1xIkxMTH9ZMedhCXjYwXCWTHAAYRpcAO9ietgmE6%2BZdgwo0kFwO7jRYUGj0kORu57%2FXFTwvgLn8%3D"&sign_type="RSA"

这个字符串包含了订单信息以及支付信息,客户端调用支付宝支付接口将其提交给后台即可———-alipay.pay(info);

最后就是处理一下支付结果的回调。

二、微信

同样的,选择微信支付后,会向后台发送请求:

http://xxx.xxx.com/pay/order?number=xxx201704141505079695&payType=2&userToken=xxxd178a14c-ceaf-4c5e-b1ae-a619d4ba67d4&os=1&deviceId=860128035137866&pushToken=daddbd24bf40ec452aec9ed68baa7acd&versionCode=12&versionName=1.0&sign=8b2968c1c6bbc11d45e8a57b439f079a

主要是订单id,和 支付方式 这两个参数,也就是number 和 payType。

然后,后台会返回数据信息,如下:

{

"code":1,

"data":"eyJzaWduIjoiNzdFODE4NzhFOUZFQ0IxRTYxMDRBQjhBRUQ0MUY0OTkiLCJ0aW1lc3RhbXAiOjE0OTM5Njg0MjcsInBhcnRuZXJpZCI6IjEyODY3MDk0MDEiLCJub25jZXN0ciI6ImRmNGZlOGE4YmNkNWM5NWNkYjY0MGFhOTc5M2JiMzJiIiwicmV0Y29kZSI6MCwicHJlcGF5aWQiOiJ3eDIwMTcwNTA1MTUxMzQ4NWRlYTFlMGRjMDAzMDMxNTQ5MjkiLCJwYWNrYWdlIjoiU2lnbj1XWFBheSIsImFwcGlkIjoid3hhYTU4MzU1ZGRjODNiYzNjIiwicmV0bXNnIjoib2sifQ==",

"msg":"",

"field":null}

接下来,客户端会对返回的data对应的字符串进行Base64Decode,结果如下:

{"sign":"xxx47411A5AB1B3A45497617E57511D6D1C","timestamp":1493964464,"partnerid":"xxx6709401","noncestr":"8383f931b0cefcc631f070480ef340e1","retcode":0,"prepayid":"wx2017050514074469f0c52e990990507641","package":"Sign=WXPay","appid":"wxaa58355ddc83bxxx","retmsg":"ok"}

然后客户端解析这个json数据,这样就可以拿到七个参数了:

PayReq payReq = new PayReq();

payReq.appId = wxPayJSON.getString("appid");

payReq.partnerId = wxPayJSON.getString("partnerid");

payReq.prepayId = wxPayJSON.getString("prepayid");

payReq.nonceStr = wxPayJSON.getString("noncestr");

payReq.timeStamp = wxPayJSON.getString("timestamp");

payReq.packageValue = wxPayJSON.getString("package");

payReq.sign = wxPayJSON.getString("sign");

payReq.extData = "app data"; // optional

api.sendReq(payReq);

这是调用微信支付时上传给后台的数据信息。

最后,就是处理支付结果的回调了。

好了,到这里就完事儿了,客户端真心没做太多的工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值