1.在APP中选购商品
2.生成支付宝支付订单
3.提交订单
4.输入支付密码进行支付

5.支付成功后通知商户后台

准备:

申请支付宝商家ID
公司
个体工商户

商户ID
商户收款的账号
商户私钥

与银联POS支付不同的是,支付宝快捷支付手机终端没有安装支付宝也能支付,这些jar包就相当于一个支付宝客户端的核心模块(如果安装的话也会启动app,没安装的话启动H5进行支付)。

我们使用时核心代码如下

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;import com.alipay.sdk.app.PayTask;
import com.aplipay.utils.Constants;
import com.aplipay.utils.PayResult;
import com.aplipay.utils.SignUtils;public class PayActivity extends Activity {//商户IDpublic static final String PARTNER = Constants.PARTNER;//商户收款账号public static final String SELLER = Constants.SELLER;//商户私钥//私钥用于对数据进行签名加密//公钥用于对签名进行验证public static final String RSA_PRIVATE = Constants.RSA_PRIVATE;private String name;private String price;private String desc;private final static int MESSAGE_PAY = 1;private Handler handler = new Handler(){public void handleMessage(android.os.Message msg) {switch (msg.what) {case MESSAGE_PAY:String result = (String) msg.obj;PayResult payResult = new PayResult(result);//支付状态码String resultStatus = payResult.getResultStatus();if (TextUtils.equals(resultStatus, "9000")) {Toast.makeText(PayActivity.this, "支付成功", Toast.LENGTH_SHORT).show();}else if (TextUtils.equals(resultStatus, "8000")) {Toast.makeText(PayActivity.this, "支付结果确认中", Toast.LENGTH_SHORT).show();}else{Toast.makeText(PayActivity.this, "支付失败", Toast.LENGTH_SHORT).show();}break;default:break;}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.pay);//获取商品的详细信息Intent intent = getIntent();name = intent.getStringExtra("name");price = intent.getStringExtra("price");desc = intent.getStringExtra("desc");TextView product_name = (TextView) findViewById(R.id.product_name);TextView product_price = (TextView) findViewById(R.id.product_price);TextView product_desc = (TextView) findViewById(R.id.product_desc);product_name.setText(name);product_price.setText(price);product_desc.setText(desc);}//支付public void pay(View btn){//1.构建订单数据String orderInfo = getOrderInfo(name, desc, price);//2.对订单进行签名String sign = sign(orderInfo);try {//转码sign = URLEncoder.encode(sign, "UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}//3.构建一个符合支付宝参数规范的订单数据final String payInfo = orderInfo + "&sign=\""+sign +"\"&sign_type=\"RSA\"" ;//4.调用支付接口new Thread(){public void run() {//支付任务PayTask task = new PayTask(PayActivity.this);String result = task.pay(payInfo);//按照支付宝的规则进行支付结果的解析Message msg = handler.obtainMessage(MESSAGE_PAY);msg.obj = result;handler.sendMessage(msg);}}.start();//5.处理支付结果}/*** 对订单进行签名* @param orderInfo* @return*/private String sign(String orderInfo) {return SignUtils.sign(orderInfo, RSA_PRIVATE);}/*** 构建订单信息* @param subject 商品名称* @param body 商品详情* @param price 商品金额* @return*/public String getOrderInfo(String subject, String body, String price) {// 签约合作者身份IDString orderInfo = "partner=" + "\"" + PARTNER + "\"";// 签约卖家支付宝账号orderInfo += "&seller_id=" + "\"" + SELLER + "\"";// 商户网站唯一订单号orderInfo += "&out_trade_no=" + "\"" + getOutTradeNo() + "\"";// 商品名称orderInfo += "&subject=" + "\"" + subject + "\"";// 商品详情orderInfo += "&body=" + "\"" + body + "\"";// 商品金额orderInfo += "&total_fee=" + "\"" + price + "\"";// 服务器异步通知页面路径orderInfo += "¬ify_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;}/*** 产生一个包含时间的随机的订单号* @return*/private String getOutTradeNo() {SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");Date date = new Date();String key = sdf.format(date);Random random = new Random();key = key + random.nextInt();key = key.substring(0, 15);return key;}}

浅谈Android支付宝快捷支付相关推荐

  1. android 支付宝集成错误,Android 支付宝快捷支付集成及ALI64错误的有效解决

    支付宝开放平台採用了RSA安全签名机制,开发人员能够通过支付宝公钥验证消息来源.同一时候可使用自己的私钥对信息进行加密. RSA算法及数字签名机制是支付宝开放平台与开发人员网关安全通信的基础.若开发人 ...

  2. Android 支付宝快捷支付集成及ALI64错误的有效解决

    支付宝开放平台采用了RSA安全签名机制,开发者可以通过支付宝公钥验证消息来源,同时可使用自己的私钥对信息进行加密.RSA算法及数字签名机制是支付宝开放平台与开发者网关安全通信的基础,若开发者不熟悉RS ...

  3. 支付宝快捷支付 快就不安全了吗?

    为什么80%的码农都做不了架构师?>>>    工行关闭四个快捷支付接口 之前四大行下调支付宝快捷支付额度,另外四大行均回应称,设置转账及交易支付限额的出发点和落脚点都是为了客户资金 ...

  4. 浅谈Android中的MVP与动态代理的结合

    浅谈Android中的MVP与动态代理的结合 本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 在Android开发平台上接触MVP足足算起来大概已经有一个年头左右.从最开始到现在经 ...

  5. 浅谈Android引用计数(2)

    在浅谈Android引用计数(1)中讲了LightRefBase实现对象计数管理的原理,这篇文章将要分析重量级的引用基类:RefBase的实现和它的作用. 下面是RefBase和相关类的类图: 图中可 ...

  6. 浅谈Android保护技术__代码混淆

    浅谈Android保护技术__代码混淆 浅谈Android保护技术__代码混淆 代码混淆 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读 ...

  7. android fps 垂直同步,浅谈Android流畅度

    原标题:浅谈Android流畅度 哈哈 讲个故事 白 1 流畅度 关于流畅度谷歌官方给出的解释为:running at a consistent 60 frames per second, witho ...

  8. 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路

    原文地址: http://blog.csdn.net/luoshengyang/article/details/6627260 在前面一篇文章浅谈Service Manager成为Android进程间 ...

  9. android分屏模式_浅谈 Android 7.0 多窗口分屏模式的实现

    从 Android 7.0 开始,Google 推出了一个名为"多窗口模式"的新功能,也就是我们常说的"分屏模式".那么,这个功能有什么用呢?作为开发者,我们又 ...

  10. 浅谈Android onTouchEvent 与 onInterceptTouchEvent的区别详解

    浅谈Android onTouchEvent 与 onInterceptTouchEvent的区别详解 本篇文章小编为大家介绍,Android onTouchEvent 与 onInterceptTo ...

最新文章

  1. “95后”曹原又双叒叕发Nature了!1个月2篇,已经第6篇了……
  2. 【转载】linux-查询rpm包相关安装、卸载脚本
  3. SSH远程连接:简单的连接
  4. Linux基础之bash脚本编程初级-变量与算术运算
  5. 【Python制作小游戏】一篇文章带你做出自己的“大鱼吃小鱼”
  6. 从0开始学习 GitHub 系列之「团队合作利器 Branch」 1
  7. Go基础-Mac中Go环境的安装以及实现第一个go程序hello world
  8. 普林斯顿微积分读本篇十三:积分
  9. Java入门学习笔记——郝斌(三)线程
  10. html 显示 16进制 颜色,16进制颜色(html颜色值)
  11. Spire.PDF帮你高效搞定PDF打印
  12. 1g等于多少mb计算机网络,1KB等于多少MB?1G等于多少MB?等于多少kb呢?
  13. 劳务派遣人员管理办法范文
  14. 那种语言不属于w3c标准,前端之W3C标准及规范
  15. 王宝强代言计算机学校,《破晓屠龙》王宝强代言传奇游戏电脑手机都能玩
  16. 普歌-飞灵团队-nuxt中jQuery报e.indexOf is not a function错误
  17. 面试必备之深入理解自旋锁
  18. hbase数据库_hbase数据库 修改数据
  19. 一号护工平台开发系统源码项目
  20. 提高计算机访问硬盘的速度慢,如何加快硬盘相应速度?6大方法提高-万兴恢复专家...

热门文章

  1. 荣耀手机如何批量删除日历日程?日历日程提醒便签
  2. word打开老是配置进度_电脑打开Word文档弹出配置进度窗口怎么解决
  3. ArcGIS Runtime for Android天地图底图及TPK数据包放大后数据不显示问题
  4. 什麼是雲端服務?阿正老師教你免費玩Amazon EC2雲端主機!(上篇)
  5. Promise then的嵌套
  6. python的反转_Python 反转
  7. c语言程序小时工资计算,C语言编程,计算工资并计算税后工资
  8. 好看的小武与hs文件的偶遇
  9. eve为什么服务器还在维护,EVE无法进入
  10. 黑CNN网站:解恨但不明智