Android 集成支付宝支付,21年Android面经分享

}

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 + “”";

// 服务器异步通知页面路径

orderInfo += “¬ify_url=” + “”" + ParameterConfig.aliPay_notifyURL + “”";

// 服务接口名称, 固定值

orderInfo += “&service=“mobile.securitypay.pay””;

// 支付类型, 固定值

orderInfo += "&payment_type=“1"”;

// 参数编码, 固定值

orderInfo += "&_input_charset=“utf-8"”;

// 设置未付款交易的超时时间

// 默认30分钟,一旦超时,该笔交易就会自动被关闭。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

更多学习和讨论,欢迎加入我们的知识星球!

点击这里加入我们吧!

群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。

-fMy6XWd9-1711300666230)]

[外链图片转存中…(img-wfus3NUg-1711300666230)]

更多学习和讨论,欢迎加入我们的知识星球!

点击这里加入我们吧!

群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。

这里有2000+小伙伴,让你的学习不寂寞~·

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值