美文网首页Android安卓开发相关
安卓集成支付宝、微信支付(不依赖服务端)

安卓集成支付宝、微信支付(不依赖服务端)

作者: Thresh0ld | 来源:发表于2016-08-30 16:38 被阅读564次

最近在项目中集成支付宝和微信支付,真可谓搞的快吐了。
吐的原因有两方面:
一方面我这里的后端人员不愿意为手机端支付做些“额外工作”(支付签名啊等等);
另一方面则是由于这些BAT大公司的SDK看的让人云里雾里的,还要签一大堆条约等等。
本文则是从另一个角度来介绍使用支付宝和微信支付,服务端0行Code,签名,下单,处理全部在安卓这边完成。(在实际应用中,支付成功失败需要告诉服务端哦。或者配置下支付请求中的通知Url,这样服务端就能自动获得通知了)

一. 查看你的Keystore签名

keytool -list -v -keystore F:/Android/keystore/Threshold.jks -storepass yourkeystorepassword
KeyStore.png

二. 去支付宝微信平台申请应用

1. 支付宝

      //RSA密钥生成命令
      //生成RSA私钥
      openssl>genrsa -out rsa_private_key.pem 1024
      //生成RSA公钥
      openssl>rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
      //将RSA私钥转换成PKCS8格式
      openssl>pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt

//注意:“>”符号后面的才是需要输入的命令。

注意上面生成的RSA密钥只需要将公钥给支付就可以,私钥在App中需要用到。

PID_Key.png

到这里,支付宝的申请就结束了。

2. 微信支付

WX_App.png
  • 申请签约微信支付:
App_Detail.png

微信支付签约详情:


WeiXin_Pay.png

邮件中会有你的商户号和密码,带着账号密码我们来登录微信商户平台,邮件内容如下:

Email_Detail.png WeiXin_ShangHu.png

设置密钥(建议设成前面申请应用中的AppSecret):

ShangHu_Security.png

到这里,微信支付的申请应该是结束了,接下来记得下载SDK哦。

三. 下载对应平台的SDK

1. 支付宝SDK :

签约管理
下载技术集成文档:

ZhiFuBao_WenDang.png

SDK下载页面链接

2. 微信SDK

SDK页面链接

微信SDK.png

四. 使用方式(App开发)

我将支付宝和微信支付封装成一个库,通过上面的操作,想必你已经获取到了开发中需要用到的appId、key和secret等信息。下面来使用吧。

先看看库的结构:


image.png

整体使用流程如下:

  1. 库的使用者(也就是你)编写微信/支付宝的支付配置对象(WechatPayConfig / AliPayConfig
  2. 然后再编写要支付的订单对象(OrderInfo
  3. 再将 支付配置对象 和 订单对象 提交给 支付入口Activity (PayEntryActivity)来处理。

下面来具体分别说下使用细节:

1. 支付宝

  • 实现支付监听回调接口(PayStatusListener
    例如让你的Fragment实现这个接口
    image.png
  • 设置支付监听
     PayEntryActivity.payStatusListener = this
    
  • 编写支付配置对象 和 订单对象
val payConfig = AliPayConfig(alipayAppId, rsaPrivateKey,false)
val orderInfo = OrderInfo("admin",OrderUtils.createOutTradeNo(),123,"驾培宝订单缴费-admin-2017.10.11",
                "订单详情描述", Date())
  • 调起支付宝
PayEntryActivity.startAliPay(context,orderInfo,payConfig)

2. 微信

  • 首先需要在你的App模块中的Mainfest.xml中配置微信支付的activity-alias,
    因为微信限制微信支付的入口Activity必须为 你的应用包名.wxapi.WXPayEntryActivity
    就像下面这样。
    wechat.png
  • 接下来同上面类似,编写支付对象和配置对象然后调起微信支付
     val payConfig = WechatPayConfig("appid","appSecret","corpId","merchantId",
            "http://www.notifyUrl")
//注意金额单位为分。 1元 = 100分
        val orderInfo = OrderInfo("admin", OrderUtils.createOutTradeNo(),123,"订单缴费-admin-2017.10.11",
                "订单详情描述", Date())
        PayEntryActivity.payStatusListener = this
        debug { "开始调起微信支付" }
        PayEntryActivity.startWeChatPay(context,orderInfo,payConfig)

注意上面参数里的appid,appSecret等参数要换成你自己申请到的数据。

最后最后,附上久违的demo地址:https://github.com/wind0ws/wepay


关注我的公众号.jpg

相关文章

网友评论

  • 阿呆1号:想做类似iOS的自动续费的功能,请问支付宝和微信有提供相应的接口支持的吗?
  • Thresh0ld:我来回答下大家的疑问:支付宝直接传订单参数就可以付款这个大家都知道。其实微信也是同理的,只不过微信需要先调用统一下单接口获取预下单ID后才能提交订单,原理都差不多。

    抱歉这篇文章拖了这么久没补全。完整文章我将发布在我的微信公众号里。欢迎扫描上面的二维码关注。
  • 淡风林:不依赖服务端实现支付,这个恐怕不行吧。微信都是要服务端通过统一下单API去生成预付单的。支付宝倒是可以直接通过前端传订单参数。
  • 03e6c23660bb:后面楼主实现了不依靠服务器端实现微信支付么?有没有demo啊?

本文标题:安卓集成支付宝、微信支付(不依赖服务端)

本文链接:https://www.haomeiwen.com/subject/tdefettx.html