| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android 集成支付宝支付 -> 正文阅读 |
|
[移动开发]Android 集成支付宝支付 |
作者:recommend-item-box type_blog clearfix |
要继承微信支付和支付宝功能,必须要有以下配置信息,微信支付和支付宝支付申请的秘钥等提供给开发者(当然也可以自己去申请),将配置信息放在静态类中,已被统一使用(安全考虑,微信支付宝推荐这些数据放在服务其中) 1.支付宝集成前提条件 (1)商户应该在b.alipay.com上产品签约 (2)BSA生成私钥及公钥的生成 生成方式一:生成的方式可以选择支付宝提供的一键只生成工具 生成方式二:也可以使用OpenSSL工具命令生成(首先进入openSSL工具,再输入生成命令,即可生成公钥和私钥) (3)上传BSA公钥,在支付宝上进行签名验证(公钥是 一行格式,其中不能有注释,空格,换行等) (4)接口调用 支付宝上下载的alipaySDK的jar包,放在libs文件夹下,然后进行Build Path(构建) (5)然后进行代码配置商家订单信息等 2.配置Manifest文件配置信息 activity配置这里必须要这么配置 android:name=“com.alipay.sdk.app.H5PayActivity” android:configChanges=“orientation|keyboardHidden|navigation” android:exported=“false” android:screenOrientation=“behind” > android:name=“com.alipay.sdk.auth.AuthActivity” android:configChanges=“orientation|keyboardHidden|navigation” android:exported=“false” android:screenOrientation=“behind” > 2.根据支付的方式调用支付宝的类 AlipayUtil.java public class AlipayUtil { private Activity context; private OrderInfo order; private Handler mhandler; private static final int SDK_PAY_FLAG = 1; public AlipayUtil(Activity context, OrderInfo order,Handler mhandler) { this.context=context; this.order=order; this.mhandler=mhandler; pay(); } private void pay() { //判断是否注册商户到支付宝 if (TextUtils.isEmpty(ParameterConfig.PARTNER) || TextUtils.isEmpty(ParameterConfig.RSA_PRIVATE) || TextUtils.isEmpty(ParameterConfig.SELLER)) { new AlertDialog.Builder(context).setTitle(“警告”).setMessage(“需要配置PARTNER | RSA_PRIVATE| SELLER\n请到ParameterConfig.java里配置”) .setPositiveButton(“确定”, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialoginterface, int i) { // ((Activity)context).finish(); } }).show(); return; } String orderInfo = getOrderInfo(order); /**
*/ String sign = sign(orderInfo); try { /**
*/ sign = URLEncoder.encode(sign, “UTF-8”); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } /**
*/ final String payInfo = orderInfo + “&sign=”" + sign + “”&" + getSignType(); Runnable payRunnable = new Runnable() { @Override public void run() { // 构造PayTask 对象 PayTask alipay = new PayTask(context); // 调用支付接口,获取支付结果 String result = alipay.pay(payInfo, true); Message msg = new Message(); msg.what = SDK_PAY_FLAG; msg.obj = result; mHandler.sendMessage(msg); } }; // 必须异步调用 Thread payThread = new Thread(payRunnable); payThread.start(); } @SuppressLint(“HandlerLeak”) private Handler mHandler = new Handler() { @SuppressWarnings(“unused”) public void handleMessage(Message msg) { switch (msg.what) { case SDK_PAY_FLAG: { PayResult payResult = new PayResult((String) msg.obj); /**
*/ String resultInfo = payResult.getResult();// 同步返回需要验证的信息 String resultStatus = payResult.getResultStatus(); // 判断resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档 if (TextUtils.equals(resultStatus, “9000”)) { mhandler.sendEmptyMessage(9000); //Toast.makeText(context, “支付成功”, Toast.LENGTH_SHORT).show(); } else { // 判断resultStatus 为非"9000"则代表可能支付失败 // "8000"代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态) if (TextUtils.equals(resultStatus, “8000”)) { Toast.makeText(context, “支付结果确认中”, Toast.LENGTH_SHORT).show(); } else { // 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误 Toast.makeText(context, “支付宝支付失败”, Toast.LENGTH_SHORT).show(); } mhandler.sendEmptyMessage(8000); } break; } default: break; } }; }; /**
*/ private String getOrderInfo(OrderInfo order) { // 签约合作者身份ID String orderInfo = “partner=” + “”" + ParameterConfig.PARTNER + “”"; // 签约卖家支付宝账号 orderInfo += “&seller_id=” + “”" +ParameterConfig.SELLER + “”"; // 商户网站唯一订单号 orderInfo += “&out_trade_no=” + “”" + order.outtradeno + “”"; // 商品名称 orderInfo += “&subject=” + “”" + order.productname + “”"; // 商品详情 orderInfo += “&body=” + “”" + order.desccontext + “”"; // 商品金额 orderInfo += “&total_fee=” + “”" + order.totalamount + “”"; |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 5:55:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |