IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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 做URL编码

*/

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);

/**

  • 同步返回的结果必须放置到服务端进行验证(验证的规则请看https://doc.open.alipay.com/doc2/

  • detail.htm?spm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&

  • docType=1) 建议商户依赖异步通知

*/

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;

}

};

};

/**

  • create the order info. 创建订单信息

*/

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
上一篇文章      下一篇文章      查看所有文章
加:2021-11-29 16:26:00  更:2021-11-29 16:26:15 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码