从开始学习android开始到现在还没搞过三方支付,感觉挺遗憾的。看到最近有几篇关于微信支付和支付宝支付的文章,稍微进行一下整合,供大家参考。

---------------------------------------------微信支付----------------------------------------------

1.申请开发者资质

地址:

https://open.weixin.qq.com

使用公司管理者/高层帐号登录微信开放平台,进入“账号中心”,进行开发者资质认证,需要填写公司资料,包括但不限于,公司注册号,公司营业执照,公司对外办公电话,公司对公银行卡信息(卡号,发卡行)。审核时间为一周左右。

  • 因为从2015年10月1日起,国家实行三证(组织机构代码证,企业营业执照,税务登记证)合一,所以组织机构代码处填写-工商执照注册号,同样,组织机构代码证,上传-企业工商营业执照。

  • 进行开发者资质认证需要支付300元人名币/年,只有具备开发者资质认证的开发者才能够使用app支付,授权登录等接口。

2.申请APP_ID/APP_KEY

每个应用/游戏要调用微信的接口都需要有一个微信标志,这个唯一标志通常成为 APP_ID或者 APP_KEY,各开放平台差异不大 。

进入管理中心,创建移动应用,每个开发者具有10个应用的创建机会,好在创建的应用可以随时删除。已上线的应用就不建议手贱删除!!

申请appid需要填写应用信息:应用名称,包名,签名(keystore的md5值去分号小写),icon(28*28 & 108*108),app下载地址等信息,即可分配到一个appid。

  • 测试支付时,务必使用申请时填写的 keystore文件签名包名也需要核对清楚,必然无法调起支付,返回-1错误码。

3.申请支付能力

管理中心,查看需要集成支付能力的app,找到“微信支付”一栏,点击右侧“申请开通”,填写一些企业信息后等待审核,审核时间为一周左右,审核通过后,会得到一个企业商户号及密码,对公银行卡中将收到几分钱,进入商户平台,输入收到的金钱金额以验证。验证通过后即可开始集成支付调用。在这之前,调用支付接口是无法完成支付的。


4.代码集成微信支付

支付流程图:

微信支付流程图白话版:

1.客户端代码得到用户购买的商品信息,将之传给自己公司app服务器,参数包含但不限于以下:

// 微信appid,选择性上传,服务器写死亦可params.put("appid", appID);// 支付金额,单位:分params.put("money", money);// 商品名称params.put("name", goodsName);// 支付币种,只能填CNY,代表人民币params.put("currencytype", "CNY");
  • 以上是参数字段是我们公司服务器定义,给服务器用以获取预支付订单号prePayId用。

  • 详细字段请参考:

    https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1

2.app服务器调用微信“统一下单”接口,得到prePayId订单号并返回 prePayId 给手机客户端;

3.手机客户端使用prePayId及商品信息调起微信客户端进行支付;

  • 用户操作:输入密码进行支付;返回键取消支付;网络无连接支付失败等

4.微信客户端回调支付结果给咱们的APP客户端;

5.微信服务器异步通知咱们公司app服务器支付结果(服务器的工作,与客户端无关)

微信支付代码:

在app包下新建 wxapi包,比如app包名为 com.wxdemo.app,那个新建的包路径为 com.wxdemo.app.wxapi,该包下新建WXPayEntryActivity,继承自任意Activity。该Activity用以接收支付结果回调,清单声明此Activity的格式为:

<activityandroid:name=".wxapi.WXPayEntryActivity"android:exported="true"android:launchMode="singleTop"/>

WXPayEntryActivity代码示例:

回调中errCode值列表:

  • 0 :支付成功 。

  • -1 :发生错误 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。

  • -2:用户取消 发生场景:用户不支付了,点击取消,返回APP。

manifest声明所需权限:

<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  • 支付结果最终以app服务器的得到的异步通知为准。

OK 到这我们微信支付就算是搞定了。

最后:

附上微信官方支付demo下载:

https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1

吐槽语:官方demo下载藏的有点深。。。开放平台居然没有提供下载,放在微信支付商户平台。

-----------------------------------------------支付宝支付--------------------------------------------------

第一步:签约成为支付宝商户

签约地址:

https://b.alipay.com

只有成为签约商户的开发者才能具备集成支付宝app支付的资格。

签约资料:

  1. 营业执照

  2. APP说明文档

  3. 商户经营信息、商户联系人等信息

必要时还需 提供APP 以备审核。审核通过后即可进行代码集成。

审核通过后,可得到支付宝分配的 商户号等信息

第二步:客户端代码集成准备

导入jar包资源

目前最新版支付宝开发jar包下载地址:

http://download.csdn.net/detail/xiong_it/9566771

下载后将之拷贝 libs目录Eclipse会自动添加依赖,Android Studio 需在app的gradle中添加一行:

compile files('libs/alipaySdk-20160223.jar')

点击右上角:Sync Now,稍等片刻。。。

修改AndroidManifest.xml清单

声明必要Activity:

添加必要权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

添加支付宝混淆规则


第三步:客户端代码集成

支付宝交互流程示意图 

流程图白话版解释:

  1. app携带支付信息调用支付接口请求支付宝客户端调起支付界面;

  2. 用户操作,输入密码支付,支付成功;直接返回取消支付;出现错误,支付失败;进入支付界面,但输入密码支付,支付待确认;

  3. 支付宝客户端将支付结果告诉app客户端,商户服务器通知app服务器支付结果;

  4. app客户端处理支付结果;

  5. app服务器处理支付结果。

支付宝的支付流程较之 微信的支付流程图 少了一步app服务器端订单的生成,但是在其demo代码中是推荐使用app服务器进行sign签名过程的,于是笔者索性是按照的微信支付的流程去集成的。

  • 客户端代码得到用户购买的商品信息,将之传给自己公司app服务器,参数包含但不限于以下

    // 商品金额,单位:元params.put("money", payMoney);// 商品名称params.put("goodsname", goodsName);

    注意:支付宝支付的人民币单位和微信支付,银联支付稍有不同,需以:元 作为支付单位。其他两者支付单位为:分 。其他参数均交给咱们app服务器处理即可,详细参数请点击:

    https://doc.open.alipay.com/doc2/detail?treeId=59&articleId=103663&docType=1

  • app服务器参考上述详细参数链接,得到sign(支付签名信息)字段并返回sign字段给手机客户端;

  • 手机客户端使用sign签名信息在非UI线程调起支付客户端进行支付;

    用户操作:输入密码进行支付;返回键取消支付;进入支付界面,用户未进行支付,用户返回,待支付;网络无连接支付失败等;

  • 客户端得到支付结果;

  • 支付宝服务器异步通知咱们公司app服务器支付结果(服务器的工作,与客户端无关)

这样做的好处:签名逻辑在服务器完成,app无需暴露公钥和私钥,更安全。同时也是demo中的推荐做法。


更详细的支付宝接入交互流程解释请点击:

https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.7WO30X&treeId=59&articleId=103658&docType=1

客户端代码示例:

支付调起代码(须在子线程):

支付处理代码(UI线程):

注:AliPayResult.java来自支付宝demo中的PayResult.java 

至此,集成支付宝SDK结束。祝各位集成支付宝支付成功!

结束语:

按照惯例,附上支付宝SDK接入的官方demo下载链接:

https://doc.open.alipay.com/doc2/detail.htm?treeId=54&articleId=104509&docType=1

微信支付及支付宝支付开发指南相关推荐

  1. 使用uniapp开发字节跳动小程序的微信支付和支付宝支付(后端PHP,tp5)

    使用uniapp开发字节跳动小程序的微信支付和支付宝支付(后端PHP,tp5) 准备工作 微信支付配置 支付宝支付配置 字节跳动配置 1,微信支付配置: 开通微信支付的h5支付,关联APPID,保存k ...

  2. 腾腾流氓,云云更流氓(问微信怎样接入支付宝支付),手贱的赶紧点,你会感谢我的...

    草原上的两匹马! 打从当年微信开始布局公众号之初时,估计就已经想到了与支付宝正面冲突的场面,所以微信先来个瞒天过海,在春晚搞了个微信红包,那叫一个火呀,此时的云云隐隐感觉到些许不安. 早期的微信开发者 ...

  3. 个人开发者只要一行代码接入微信支付和支付宝支付

    接入支付功能   对于个人开发者来说,我们很希望我们开发的App被广泛使用,同时可以获得一些额外收入,那就更好了.但是在微信开放平台或者支付宝开放平台申请支付功能,需要是企业才可以接入,对于我们个人开 ...

  4. 微信支付和支付宝支付整合(含设计模式1)

    微信支付和支付宝支付整合(含设计模式1) 1.说明: 设计模式:单例+策略模式+抽象 在开发中经常对接微信支付和支付宝支付,相对来说,阿里的文档比微信的接口文档清晰一点,这里用的第三方库(com.gi ...

  5. Magento支付宝手机网站支付插件V6.0旗舰版发布,支持在微信中使用支付宝支付,订单重新支付功能!...

    2019独角兽企业重金招聘Python工程师标准>>> 功能 严格按照支付宝接口文档编写代码. 支付宝异步通知机制,确保订单状态及时更新,无丢失遗漏. 订单完美对接:支付后即使关掉支 ...

  6. IOS集成微信支付或者支付宝支付功能小结

    2019独角兽企业重金招聘Python工程师标准>>> 第一,你需要有微信开发平台的开发者账号,(网址https://open.weixin.qq.com/,或者自行百度" ...

  7. 小猪o2o源码v14.17双系统版(生活通+营销系统)怎么配置微信支付和支付宝支付

    简单来说,微信支付和支付宝支付在微信平台配置方法是一致的,大同小异唯一不同的是应用平台上的配置方法,这里我们重要说明下小猪o2o系统上对接微信支付和支付宝支付的方法,篇幅有限这里先说下微信支付的配置方 ...

  8. android个人支付功能,个人app支付接入(三分钟搞定个人微信支付,支付宝支付问题)---贝贝支付...

    前言 想必很多人个人开发者和我有同样的感触,想要在自己开发的app中接入微信支付和支付宝支付,仅仅是去申请支付接口就把我们挡在了门外,微信和支付宝都只对接企业的,那不是想逼死我们个人开发者吗?一开始使 ...

  9. uniapp实现微信支付、支付宝支付

    前言: 本文只介绍了代码片段,如果需要支付前准备的流程可以继续浏览查找(狗头) 该方法是开发uniapp时使用的,未涉及5+APP 前端部分并不复杂,只是有些流程步骤有些杂乱,正常都是后端去和微信交互 ...

最新文章

  1. 硅谷产学研的创新循环
  2. zuul路由前缀配置
  3. C++打印STAIRS 图案算法(附完整源码)
  4. 数据仓库、商业智能的体系结构
  5. php 根据输入值读取MySQL_MySQL输入PHP给出的另一个值
  6. C51 printf修改如何能打印到不同的设备呢?
  7. Ubuntu更换apt镜像源
  8. Resnet-18-训练实验-warm up操作
  9. Java爬虫需要的包_java爬虫需要的jar包
  10. 测试用例入门(二) - 使用等价类划分法编写测试用例
  11. 基于MATLAB的模糊聚类
  12. 辽宁大学计算机专科专业,2020辽宁大学计算机考研专业课调整
  13. MongoDB 之滴滴、摩拜都在用的索引-educoder上面的题目以及笔记
  14. vim 常用功能大全
  15. Java我的高效编程之常用函数
  16. 故障-未识别的网络的几种情况
  17. 计组-CISC与RISC
  18. php微信开发 (获取用户地理位置)
  19. 解决 WARNING: Published ports are discarded when using host network mode 问题
  20. Ubuntu20.04下没有亮度调节且找不到/sys/class/backlight文件夹(backlight里为空)的解决办法

热门文章

  1. 使用Hypothesis生成测试数据
  2. 微信小程序 获取用户昵称 头像 性别...『并解决获取的头像模糊问题』
  3. CAD“左手键”快捷命令表,大大提高绘图效率
  4. yahoo.cn邮箱foxmail收发攻略
  5. PyCharm 和 VScode 我更适合用哪个?
  6. 回文串问题(leetcode 125. 验证回文串 c#)
  7. 6Attentive Convolutional Neural Network based Speech Emotion Recognition: A Study on the Impact of
  8. [AV1] interpolation
  9. C#控制键盘按键的常用方法
  10. 技术管理条线度量报告