Android支付宝和微信支付集成

场景
随着移动支付的兴起,在我们的app'中,会经常有集成支付的需求.这时候一般都会采用微信和支付宝的sdk 来集成

(一)支付宝支付
在使用支付宝支付的过程中,我们是在服务器端生成订单,客户端访问接口,并得到订单信息,调用接口支付,支付成功后支付宝会分别 异步调用服务器端,并向客户端返回支付结果.

开发步骤:

①注册支付宝账号——进行实名认证——提交审核资料——审核通过

支付宝无线快捷支付接口:
b.alipay.com/order/productDetail.htm?productId=2014110308141993&tabId=4#ps-tabinfo-hash

ps: 申请要上传你的apk和产品说明文档,产品截图、接口使用场景、资费说明等,审核通过后会得到PID和秘钥。

开发者可以通过支付宝公钥验证消息来源,同时可使用自己的私钥对信息进行加密。

② 下载官方Sdk Demo里面包含文档.该Demo中需要将审核通过后获取的PID替换,并且输入支付宝收款账户和用户私钥. 运行demo,查看sdk调用方式,

PID对应的密钥一共有三种加密方式,分别是MD5、RSA、DSA。Java开发者需要将密钥转换成PKCS8格式,并将公钥上传到支付宝.生成方式见文档.[支付宝开放平台]

③ 导入项目,客户端调用,.首先将支付宝demo中的jar包导入到项目中,可以参照,demo中拼接参数

支付宝demo类导入

//方法名称:payTask.pay

//方法原型:
PayTask payTask = new PayTask(activity); String result = payTask.pay(orderInfo);

//方法功能:提供给商户订单支付功能。

请求参数以键值对的形式拼装到一个String中,参数具体说明详见官方文档.

④ 修改Manifest,添加com.alipay.sdk.app.H5PayActivity和uses-permission,并在proguard-project.txt中添加相关的混淆规则即可.

ps: 签名注意事项:

在请求参数列表中,除去sign、sign_type两个参数外,其他需要使用到的参数皆是要签名的参数
sign值要做utf-8 URLencode。
⑤回调处理,详见 支付宝同步通知参数说明.out_trade_no可以作为唯一标志和服务器端进行交互,
当支付宝同步 通知后,客户端通过out_trade_no询问服务器端是否支付成功,因为真正的成功标志是需要服务器端来验证的.

 public AliPayResultS(String result) {
  if (TextUtils.isEmpty(result))
   return;

  String[] resultParams = result.split("&");
  for (String resultParam : resultParams) {
   if (resultParam.startsWith("out_trade_no")) {
    out_trade_no = gatValue(resultParam, "out_trade_no");
   }
  }

 }

(二)微信支付
同样,有了支付宝支付,呢么微信支付也不可缺少,微信支付和支付宝支付流程,大体相同,通过服务器端获取订单信息返回给客户端,客户端调用sdk进行支付,支付完成后进行同步和异步回调.

微信开放平台Android接入指南:
open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417751808&token=&lang=zh_CN

①获取appId
同样需要获取appid,登记并选择移动应用进行设置后,将该应用提交审核,只有审核通过并获取appId的应用才能进行开发。

②下载Android 微信支付demo.

我们所需要关注的依旧是PayActivity.使用微信的登陆和支付,大家都知道,需要在项目下新建一个wxapi文件夹来实现回调.

③项目集成,首先我们需要将libammsdk.jar导入到lib目录下,这个是核心jar包.同时修改Manifest

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

④接口调用.

首先我们需要初始化一个IWXAPI api,并注册到应用,

api.registerApp(Constants.APP_ID);
PayReq req = new PayReq();
//....拼接req参数
api.sendReq(req);// 调用支付

⑤支付回调.

在支付回调类WXPayEntryActivity的onResp(BaseResp resp)方法中我们可以得到 客户端 和服务器 唯一标志prepayid参数,来实现支付成功的后续处理.

 // 支付成功
    if (resp instanceof com.tencent.mm.sdk.modelpay.PayResp) {
     com.tencent.mm.sdk.modelpay.PayResp payResp = (PayResp) resp;
     String prepayId = payResp.prepayId;

ps: 微信支付中需要注意的是支付回调方法.支付回调必须在项目中创建一个wxapi目录,并命名为WXPayEntryActivity(包名或类名不一致会造成无法回调),回调方法中获取prepayId.

// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
 @Override
 public void onResp(BaseResp baseResp) {
//  String result = "";
  switch (baseResp.errCode) {
   case BaseResp.ErrCode.ERR_OK:
//    result = "发送成功";
   {
    Intent intent = new Intent(Constants.payAction);
    intent.putExtra(Constants.prepayId, ((PayResp) baseResp).prepayId);
    mLocalBroadcastManager.sendBroadcast(intent);
   }
   break;
   case BaseResp.ErrCode.ERR_USER_CANCEL:
//    result = "发送取消";
    break;
   case BaseResp.ErrCode.ERR_AUTH_DENIED:
//    result = "发送被拒绝";
    break;
   default:
//    result = "发送返回";
    break;
  }
  finish();
 }

总之,三方支付官方文档写的都非常详细,就是需要细心处理细节和注意参数,微信支付不能使用debug的,因为要验证签名等.否则支付不成功.

完整demo:https://github.com/BoBoMEe/ThirdPay

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android支付宝支付的示例代码

    上一篇,我们已经详细讲解了Android微信支付,今天接着为大家带来支付宝支付,支付宝支付相对微信支付要简单一些,吐槽一下,而且支付宝文档确实比微信的文档好了不少,下面开始讲解支付流程. 1.首先给出官方文档的地址 Android集成支付宝流程 2.在开始集成和开发前,首先了解一下常用的接入方式和架构建议: 支付流程.png 在开始下一步之前,给大家看看网上的很多操作. 网上的代码.png 这一大堆代码,后面还有,百来行吧,而且支付宝Demo貌似也是这么干的,估计一些新司机就有点懵逼了,至于吗?

  • Android支付宝支付设计开发

    在移动支付领域,支付宝支付占用巨大份额,根据艾瑞咨询公布的报告数据:2014Q3,支付宝斩获了82.6%的市场份额,在移动支付的霸主地位越来越稳固.财付通支付的发力点在微信支付和手Q支付,在移动支付格局中取得了10.0%的市场份额,排名第二. 支付宝在移动支付领域的统治地位,使得我们有必要梳理支付宝移动开发流程.本文写作的目的就是梳理支付流程,从架构层面讲述如何在移动应用中嵌入支付宝支付功能,以及指出哪些地方存在开发陷阱. 准备       按照说明,首先需要申请支付宝支付账号.这方面根据网站说

  • Android仿支付宝支付从底部弹窗效果

    我们再用支付宝支付的时候,会从底部弹上来一个对话框,让我们选择支付方式等等,今天我们就来慢慢实现这个功能 效果图 实现 主界面很简单,就是一个按钮,点击后跳到支付详情的Fragment中 package com.example.hfs.alipayuidemo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.wi

  • Android接入支付宝实现支付功能实例

    我本来是想直接讲Android支付这一块的,包括支付宝,微信,其他第三方整合支付等,但是微信开放平台他对我的账号做了限制,所有我今天就先把重心放在支付宝的支付上,也算是写得尽可能详细些吧,毕竟是第三方的SDK,只要我们耐心的阅读文档和开发引导,这个其实不是很难的,我也是没有用过支付宝的支付,但是我相信,你看完这篇博客,也会对他了如指掌的,好的,我们正文开始 一.准备步骤 1.登录官网 他的官网就是蚂蚁金服的开放平台了,我们可以访问 蚂蚁金服开放平台 ,并且注册账号进行登录 创建应用 如果你是现有

  • Android仿支付宝支付密码输入框

    本文实例为大家分享了Android实现一个仿支付宝支付密码的输入框,主要实现如下: PasswordView.java package com.jackie.alipay.password; import android.annotation.TargetApi; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphic

  • Android app第三方支付宝支付接入教程

    支付宝的接入相对比较简单,看看支付宝官网的文档基本都能搞定,但是切记一点让你们的后台也要搞清楚支付宝的流程,重中之重. 1.注意事项 开发前一定要阅读支付宝官方文档 强烈建议签名等处理在后台处理,我这个是测试是在自己本地写的,不要吐槽 想获取支付宝合作商户ID,及支付宝公钥请点击支付宝链接,生成密钥及PKCS8转码工具在文档中 添加Android.permission.INTERNET权限和android.permission.ACCESS_NETWORK_STATE权限 要导入支付宝的包 2.

  • Android支付宝支付封装代码

    在做Android支付的时候肯定会用到支付宝支付, 根据官方给出的demo做起来非常费劲,所以我们需要一次简单的封装. 封装的代码也很简单,就是将官网给的demo提取出一个类来方便使用. public class Alipay { // 商户PID public static final String PARTNER = "123456789"; // 商户收款账号 public static final String SELLER = "qibin0506@gmail.co

  • Android支付宝和微信支付集成

    场景 随着移动支付的兴起,在我们的app'中,会经常有集成支付的需求.这时候一般都会采用微信和支付宝的sdk 来集成 (一)支付宝支付 在使用支付宝支付的过程中,我们是在服务器端生成订单,客户端访问接口,并得到订单信息,调用接口支付,支付成功后支付宝会分别 异步调用服务器端,并向客户端返回支付结果. 开发步骤: ①注册支付宝账号--进行实名认证--提交审核资料--审核通过 支付宝无线快捷支付接口: b.alipay.com/order/productDetail.htm?productId=20

  • 如何在Android App中集成支付宝和微信支付功能

    前言 本文主要介绍如何在 Android App 里集成支付宝和微信支付的功能,文中将实现的步骤一步步介绍的非常详细,对同样遇到这个问题的朋友相信会是一个很好的参考,下面话不多说了,来一起看看详细的介绍吧. 集成支付宝支付 没想到现在 App 里集成支付宝是这么的简单,我还折腾了好久- 好了,开始,假设你已经完成了支付宝那些繁杂的申请啥的工作,进入开发了. 首先,去下载官方的 DEMO : App支付客户端DEMO&SDK. 导入开发资源 解压后把里面的 jar 包拿出来放到你工程的 lib 目

  • Android 高仿微信支付数字键盘功能

    现在很多app的支付.输入密码功能,都已经开始使用自定义数字键盘,不仅更加方便.其效果着实精致. 下面带着大家学习下,如何高仿微信的数字键盘,可以拿来直接用在自身的项目中. 先看下效果图: 1. 自定义布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

  • Python提取支付宝和微信支付二维码的示例代码

    支付宝或者微信支付导出的收款二维码,除了二维码部分,还有很大一块背景图案,例如下面就是微信支付的收款二维码: 有时候我们仅仅只想要图片中间的方形二维码部分,为了提取出中间部分,我们可以使用图片处理软件,但图片处理软件不利于批处理,且学习也需要一定成本.本文将教你使用 Python 的图像处理库 pillow,轻松批量提取图片中间的方形二维码部分. 提取思路 以微信支付收款码图片为例: 分析图片我们可以看到,二维码位于白色背景中,而白色背景又位于绿色背景上.我们以图片左上角为坐标原点,横向为 x

  • PHP实现一个二维码同时支持支付宝和微信支付的示例

    实现思路 生成一个二维码,加入要处理的url连接 在用户扫完码后,在对应的脚本中,判断扫码终端,调用相应的支付 若能够扫码之后能唤起相应app,支付宝要用手机网站支付方式,微信要使用jsapi支付方式 效果展示 提示: 因为项目即将上线,所以上面的支付二维码连接被我替换了(注意在生成二维码时加入的连接,要带上http协议) 实现 步骤生成二维码 //我的url指向了checkTerrace方法 $url = self::ADMIN_URL . 'params=' . $params; //ADM

  • Android接入支付宝和微信支付的方法

    前言 很多APP都需要支付功能,国内一般就是支付宝和微信了.目前这2种接入方式对于APP端来说都已经比较方便了,因为大部分的安全校验之类的逻辑都在服务端. APP端总结起来就是三步走: 接入支付的库 接受服务端的订单信息,发起调用支付宝和微信 接收支付宝和微信的回调 支付宝接入 首先是接入支付宝的aar文件 比较坑的是支付宝还需要下载aar文件导入,而不是gradle里面一行依赖就能搞定的. 我们需要去官网下载最新的DEMO和SDK,官网地址在这里 然后把下载下来的aar包,放到项目目录下面的

  • 新版Android studio导入微信支付和支付宝官方Demo问题解决大全

    最近项目要用到支付宝支付和微信支付,本想使用第三方支付框架ping++或者BeeCloud的,但是由于他们的收费问题,让我望而却步,而且公司给了相应的公钥.私钥和APPID等,所以就用下开放平台的呗. 进去倒腾了半天才发现一堆问题,Oh,我的天.完全不知所云,百度谷歌了一堆,都没找到足够的解决方案.好吧,自己来,这里也就把相关的东西分享给大家,如果有类似问题的可以考虑使用一下,不足的地方大牛就别喷了. 微信开放平台有文档和SDK,大家可以去自己查看下载,火箭:https://open.weixi

  • Android高仿微信支付密码输入控件

    像微信支付密码控件,在app中是一个多么司空见惯的功能.最近,项目需要这个功能,于是乎就实现这个功能. 老样子,投篮需要找准角度,变成需要理清思路.对于这个"小而美"的控件,我们思路应该这样子. Ⅰ.将要输入密码数量动态通过代码加载出来. Ⅱ.利用Gridview模拟产生一个输入数字键盘,并且按照习惯从屏幕底部弹出来. Ⅲ.对输入数字键盘进行事件监听,将这个输入数字填入到这个密码框中,并且当您输入密码长度一致的时候,进行事件回调. 这个思维导图应该是这样的: 首先,我们要根据需求动态加

  • Android实现微信支付功能详解

    1.集成微信支付SDK: 在build.gradle中,添加如下依赖 compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+' 2.设置微信支付回调页面: 路径:项目包名.wxapi 名称:WXPayEntryActivity public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler { private IWXAPI api; @

  • iOS支付宝、微信、银联支付集成封装调用(上)

    一.集成支付宝支付 支付宝集成官方教程 https://docs.open.alipay.com/204/105295/ 支付宝集成官方demo https://docs.open.alipay.com/54/104509/ 1.导入SDK并添加依赖库 启动IDE(如Xcode),把iOS包中的压缩文件中以下文件拷贝到项目文件夹下,并导入到项目工程中. AlipaySDK.bundle AlipaySDK.framework 在Build Phases选项卡的Link Binary With L

随机推荐