android 支付宝sdk接入详解
第一步
在接入支付宝sdk之前首先要进入支付宝开发者平台申请应用所需要的应用唯一标识(APPID)、应用私钥(APP_PRIVATE_KEY)、支付宝公钥(ALIPAY_PUBLIC_KEY)、在开发中需要用到的关键参数如下图

支付宝审核周期较长,这里为了帮助开发者尽快熟悉支付宝接入,提供开发时需要的必须参数如下:
合作身份者id 2088011085074233
收款支付宝账号 917356107@qq.com
商户私钥 MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAL51jaxQhxW9PnWpW
公钥
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC
第二步
下载接入所需要的jar

在官方demo中寻找到所需要的工具类

AndroidManifest.xml配置

 <!-- alipay sdk begin --><activity
            android:name="com.alipay.sdk.app.H5PayActivity"android:configChanges="orientation|keyboardHidden|navigation"android:exported="false"android:screenOrientation="behind"android:windowSoftInputMode="adjustResize|stateHidden" ></activity><!-- alipay sdk end --><activity
            android:name="com.alipay.sdk.auth.AuthActivity"android:configChanges="orientation|keyboardHidden|navigation"android:exported="false"android:screenOrientation="behind" ></activity>

第三步
在上面准备工作完成后 开始接入程序的代码工作

public class MainActivity extends ActionBarActivity implements OnClickListener {private Button alipay;// 合作身份者id,以2088开头的16位纯数字 此id用来支付时快速登录public static final String DEFAULT_PARTNER = "2088011085074233";// 收款支付宝账号public static final String DEFAULT_SELLER = "917356107@qq.com";// 商户私钥,自助生成,在压缩包中有openssl,用此软件生成商户的公钥和私钥,写到此处要不然服务器返回错误。公钥要传到淘宝合作账户里详情请看淘宝的sdk文档public static final String PRIVATE = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAL51jaxQhxW9PnWpW+nz6yJ76tp9eGFXmfGnuxMK+Pmx/qavdsewXOLBfI2OSCR39TzxwMYvCmUrnrt0fVSa7mblbNos2FnMM9ijnx8bsAAhm+i7BKhuaHMunJKH69L+D753zH3P1YIh0ly5DnAr3WPqHydp384qBvb8NS9Tay0HAgMBAAECgYB82PIVknP6fCMFXg8yPQJViIVa1ASlSpdPIXQv93FdvKABA+QI4kMBIXRUFoCT506KtK55OzzFNOLIXoQJgcXj69z0l6pmjJJgXMaBW/9rOzelot13CiGatrIrGngEZO+bCBTud/jQA598zjZ1g182tT+FLDL7GIftW2hC8GqtAQJBAN+XrYsyfL+uSmLdAVEz1vzziU1naGr10Msm1jMnnO/JYdB+84j7FSHxsQ4YOgsmeN5YVsJcVfc/CReOxknns38CQQDaEHnVPDt+Z7sqT7bN0UKh0/CrqkDTiIjhz1lJyIIoqVRoeJjJn1wlEKBV5R9gkTJutQTVU19XFtblMEnOy6p5AkEAw170rEmMSa0QoHw+d2bVtydR1QnDapqqO6kOx5oYfkm4J4eWYx4J5CQdMpSmuzF9scL85E3sa+NvnV8LEm7cHwJALtXzFPWG4bNt47yTSslzQka/Hl/G5Kginj1mtA44xnr4AihEyKlNpThY95nqj1cgOd7vVtI9W/sv1LH2aFAeIQJBAIqXbMc6xGVfuiFAJKtg+AFNMBP0UOEgMEoKo4RPFp21nBhFgL9/WYM4ZjyHUdr45rCySAqQovw4DCHLfQZC23I=";// 公钥public static final String PUBLIC = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+dY2sUIcVvT51qVvp8+sie+rafXhhV5nxp7sTCvj5sf6mr3bHsFziwXyNjkgkd/U88cDGLwplK567dH1Umu5m5WzaLNhZzDPYo58fG7AAIZvouwSobmhzLpySh+vS/g++d8x9z9WCIdJcuQ5wK91j6h8nad/OKgb2/DUvU2stBwIDAQAB";private Handler mHandler = new Handler() {public void handleMessage(Message msg) {PayResult payResult = new PayResult((String) msg.obj);// 支付宝返回此次支付结果及加签,建议对支付宝签名信息拿签约时支付宝提供的公钥做验签String resultInfo = payResult.getResult();String resultStatus = payResult.getResultStatus();// 判断resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档if (TextUtils.equals(resultStatus, "9000")) {Toast.makeText(MainActivity.this, "支付成功", Toast.LENGTH_SHORT).show();} else {// 判断resultStatus 为非“9000”则代表可能支付失败// “8000”代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)if (TextUtils.equals(resultStatus, "8000")) {Toast.makeText(MainActivity.this, "支付结果确认中",Toast.LENGTH_SHORT).show();} else {// 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误Toast.makeText(MainActivity.this, "支付失败",Toast.LENGTH_SHORT).show();}}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();System.out.println(alipay + "");initEvent();}private void initEvent() {alipay.setOnClickListener(this);}private void init() {alipay = (Button) findViewById(R.id.ali);}@Overridepublic void onClick(View v) {pay();}/*** call alipay sdk pay. 调用SDK支付* */public void pay() {// 订单String orderInfo = getOrderInfo("杨亚松demo测试的商品", "杨亚松demo测试商品的详细描述","0.01");// 对订单做RSA 签名String sign = sign(orderInfo);try {// 仅需对sign 做URL编码sign = URLEncoder.encode(sign, "UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}// 完整的符合支付宝参数规范的订单信息final String payInfo = orderInfo + "&sign=\"" + sign + "\"&"+ getSignType();Runnable payRunnable = new Runnable() {@Overridepublic void run() {// 构造PayTask 对象PayTask alipay = new PayTask(MainActivity.this);// 调用支付接口,获取支付结果String result = alipay.pay(payInfo);Message msg = new Message();msg.obj = result;mHandler.sendMessage(msg);}};// 必须异步调用Thread payThread = new Thread(payRunnable);payThread.start();}/*** create the order info. 创建订单信息* */public String getOrderInfo(String subject, String body, String price) {// 签约合作者身份IDString orderInfo = "partner=" + "\"" + DEFAULT_PARTNER + "\"";// 签约卖家支付宝账号orderInfo += "&seller_id=" + "\"" + DEFAULT_SELLER + "\"";// 商户网站唯一订单号orderInfo += "&out_trade_no=" + "\"" + getOutTradeNo() + "\"";// 商品名称orderInfo += "&subject=" + "\"" + subject + "\"";// 商品详情orderInfo += "&body=" + "\"" + body + "\"";// 商品金额orderInfo += "&total_fee=" + "\"" + price + "\"";// 服务器异步通知页面路径orderInfo += "&notify_url=" + "\"" + "http://notify.msp.hk/notify.htm"+ "\"";// 服务接口名称, 固定值orderInfo += "&service=\"mobile.securitypay.pay\"";// 支付类型, 固定值orderInfo += "&payment_type=\"1\"";// 参数编码, 固定值orderInfo += "&_input_charset=\"utf-8\"";// 设置未付款交易的超时时间// 默认30分钟,一旦超时,该笔交易就会自动被关闭。// 取值范围:1m~15d。// m-分钟,h-小时,d-天,1c-当天(无论交易何时创建,都在0点关闭)。// 该参数数值不接受小数点,如1.5h,可转换为90m。orderInfo += "&it_b_pay=\"30m\"";// extern_token为经过快登授权获取到的alipay_open_id,带上此参数用户将使用授权的账户进行支付// orderInfo += "&extern_token=" + "\"" + extern_token + "\"";// 支付宝处理完请求后,当前页面跳转到商户指定页面的路径,可空orderInfo += "&return_url=\"m.alipay.com\"";// 调用银行卡支付,需配置此参数,参与签名, 固定值 (需要签约《无线银行卡快捷支付》才能使用)// orderInfo += "&paymethod=\"expressGateway\"";return orderInfo;}/*** get the out_trade_no for an order. 生成商户订单号,该值在商户端应保持唯一(可自定义格式规范)* */public String getOutTradeNo() {SimpleDateFormat format = new SimpleDateFormat("MMddHHmmss",Locale.getDefault());Date date = new Date();String key = format.format(date);Random r = new Random();key = key + r.nextInt();key = key.substring(0, 15);return key;}public String sign(String content) {return SignUtils.sign(content, PRIVATE);}public String getSignType() {return "sign_type=\"RSA\"";}}

android 支付宝sdk接入详解相关推荐

  1. iOS 支付宝SDK接入详解

    一,在支付宝开放平台下载支付宝SDK(https://openhome.alipay.com/platform/document.htm#down) https://doc.open.alipay.c ...

  2. android 最新sdk版本,详解如何在Android studio中更新sdk版本和build-tools版本

    一.首先看下Android开发用到的sdk目录: build-tools 保存着一些Android平台相关通用工具,比如adb.和aapt.aidl.dx等文件. aapt即Android Asset ...

  3. android广告SDK原理详解(附源码)

    广大的开发者吃糠咽菜开发了一两款APP,获取了一些流量后自然就会想到流量变现,一般情况下大家会选择到百度联盟或者Google Admob这些广告服务提供商注册开发者账号,在自己的APP里面加上几行广告 ...

  4. Android移动支付(支付宝支付2017最新接入详解)

    接入流程 一:公司开通支付宝商户号  二:注册登录蚂蚁金服开放平台创建应用  三:项目集成支付宝SDK 一:公司开通支付宝商户号 1 注册商户号:https://mobiless.alipay.com ...

  5. android动态贴纸实现原理,人脸动态贴纸sdk算法详解,人脸动态贴纸功能如何实现...

    原标题:人脸动态贴纸sdk算法详解,人脸动态贴纸功能如何实现 泛娱乐行业在互联网领域中发展趋势逐渐增强,而直播.短视频.视频社交等作为头部产品受到了众多用户的关注和喜爱.为了能够更好的满足用户体验,众 ...

  6. Android App支付系列(二):支付宝SDK接入详细指南(附官方支付demo)

    前言 一家移动互联网公司,说到底,要盈利总是需要付费用户的,自己开发支付系统对于资源有限的公司来说显然不太明智,国内已经有多家成熟的移动支付提供商,阿里就是其中之一. 继< Android Ap ...

  7. Android基础知识——Android SDK Manager详解

    做Android开发时,免不了使用Android SDK Manager,安装需要的sdk版本.buildTools版本等等.下图展示了2016.11.16号Android SDK Manager所有 ...

  8. 全志 android 编译,全志Android SDK编译详解(二)

    注意要确定安装了jdk) 第一步: cd  lichee; ./build.sh  -p sun5i_elite -k 3.0  (apt-get install uboot-mkimage需要安装m ...

  9. Android SDK Manager详解

    转载自:https://blog.csdn.net/u011026779/article/details/53178602 做Android开发时,免不了使用Android SDK Manager,安 ...

最新文章

  1. python3 自动化交互模块 pexpect 简介
  2. python程序设计报告-20183215 实验三《Python程序设计》实验报告
  3. 元素,布局方式,BFC和清除浮动
  4. Java学习 第四章 java面向对象(二)
  5. fluent python 第二版_Fluent Python 笔记(二):序列基础
  6. php 添加音乐,PHP网站插入音乐
  7. 将数字转换为中文表示
  8. 垃圾分类逼疯上海人 微信官方终于出手!
  9. 【最详细】Tcpdump使用实验
  10. MySQL/MariaDB数据库备份与恢复
  11. 2021-06-27 方法的调用
  12. 天学网 语音算法工程师面经
  13. JVM MAT使用分析详解
  14. 微信小程序开发-view视图组件
  15. C++基础学习-33模板全特化、偏特化(局部特化)
  16. Linux | Shell 学习笔记(二)Shell 流程控制 if、case、for、while| read读取输入 | 函数的使用 | cut、sed、awk、sort命令 +Demo
  17. 老照片变模糊 10种方法将照片处理清晰
  18. OpenCV—Python 图像加减乘除-逻辑运算
  19. android+仿ios画廊,安卓仿ios14主题app
  20. 一些android论坛

热门文章

  1. 苹果自带相册打马赛克_剪映app怎么给视频局部打马赛克
  2. 调查计算机对运算能力的影响,计算器对运算能力的影响的报告.docx
  3. EasyRecovery15Mac全面好用的苹果电脑数据恢复app
  4. 用js将HTML文本导出生成word文档
  5. Factory Track 7 链接 Infor CloudSuite Industrial 10 操作设置
  6. python怎样遍历列表中数字_Python基础-列表操作(2):列表的遍历和数字列表
  7. 年末IPO热潮掀起,国际永胜二度冲击港交所
  8. Agv、Rgv 车辆控制调度系统开发知识点篇
  9. 【R语言】5种探索数据分布的可视化技术
  10. Hive-JDBC操作,springcloud高级面试题