学习笔记-支付宝支付接入
来源:互联网 发布:.php打开乱码怎么解决 编辑:程序博客网 时间:2024/06/05 07:49
移动支付成为大众生活的一种方式,以支付宝支付和微信这两大主流支付为主,各种移动应用也基本要支持这两类支付,本文就分享博主在接入这两类支付的过程,在作为自己经验的积累之余,也希望能帮到这方面遇到困难的朋友,希望大家都能不断进步.
一. 支付宝支付功能接入
其实,支付宝支付集成真的很简单; 对这个一脸懵逼的朋友,还是先建议去蚂蚁金服开放平台看一遍说明文档,至少得看一遍,然后下个demo ,按照demo 上来做基本上都没问题,蚂蚁金服APP支付Android接入指南;
这里,我还是简单写一下我的集成过程,申请APPID 和生成秘钥这里就不介绍了;
先去下载最新版的SDK,放在libs 目录下, 目前基本上都是采用新版的SDK 了,官网的态度是希望老版本SDK用户更换成新版; 在manifest里面配置好权限,在获取到秘钥之后,上传你的应用公钥(私钥加密,公钥解密), 主要支付流程代码如下:
/** 支付宝支付业务:入参app_id */ public static final String APPID = PayKeys.APPID; /** 支付宝账户登录授权业务:入参pid值 */ public static final String PID = ""; /** 支付宝账户登录授权业务:入参target_id值 */ public static final String TARGET_ID = ""; /** 商户私钥,pkcs8格式 */ /** 如下私钥,RSA2_PRIVATE 或者 RSA_PRIVATE 只需要填入一个 */ /** 如果商户两个都设置了,优先使用 RSA2_PRIVATE */ /** RSA2_PRIVATE 可以保证商户交易在更加安全的环境下进行,建议使用 RSA2_PRIVATE */ /** 获取 RSA2_PRIVATE,建议使用支付宝提供的公私钥生成工具生成, */ /** 工具地址:https://doc.open.alipay.com/docs/doc.htm?treeId=291&articleId=106097&docType=1 */ public static final String RSA2_PRIVATE = PayKeys.PRIVATE; public static final String RSA_PRIVATE = ""; private static final int SDK_PAY_FLAG = 1; @SuppressLint("HandlerLeak") private Handler mHandler = new Handler() { @SuppressWarnings("unused") public void handleMessage(Message msg) { switch (msg.what) { case SDK_PAY_FLAG: { @SuppressWarnings("unchecked") PayResult payResult = new PayResult((Map<String, String>) msg.obj); /** 对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。 */ String resultInfo = payResult.getResult();// 同步返回需要验证的信息 Log.d("wr***", "resultInfo="+resultInfo); String resultStatus = payResult.getResultStatus(); // 判断resultStatus 为9000则代表支付成功 if (TextUtils.equals(resultStatus, "9000")) { // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。 Toast.makeText(ChoosePayWayActivity.this, "支付成功", Toast.LENGTH_SHORT).show(); } else { // 该笔订单真实的支付结果,需要依赖服务端的异步通知。 Toast.makeText(ChoosePayWayActivity.this, "支付失败", Toast.LENGTH_SHORT).show(); } break; } default: break; } }; }; /** * 支付宝支付业务 */ public void pay(final String order) { if (TextUtils.isEmpty(APPID) || (TextUtils.isEmpty(RSA2_PRIVATE) && TextUtils.isEmpty(RSA_PRIVATE))) { new AlertDialog.Builder(this).setTitle("警告").setMessage("需要配置APPID | RSA_PRIVATE") .setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialoginterface, int i) { // finish(); } }).show(); return; } /** * 这里只是为了方便直接向商户展示支付宝的整个支付流程;所以Demo中加签过程直接放在客户端完成; * 真实App里,privateKey等数据严禁放在客户端,加签过程务必要放在服务端完成; * 防止商户私密数据泄露,造成不必要的资金损失,及面临各种安全风险; * * orderInfo的获取必须来自服务端; */ boolean rsa2 = (RSA2_PRIVATE.length() > 0); Map<String, String> params = OrderInfoUtil2_0.buildOrderParamMap(APPID, rsa2); String orderParam = OrderInfoUtil2_0.buildOrderParam(params); String privateKey = rsa2 ? RSA2_PRIVATE : RSA_PRIVATE; String sign = OrderInfoUtil2_0.getSign(params, privateKey, rsa2); final String orderInfo = orderParam + "&" + sign; Runnable payRunnable = new Runnable() { @Override public void run() { PayTask alipay = new PayTask(ChoosePayWayActivity.this); Map<String, String> result = alipay.payV2(order, true); Log.i("msp", result.toString()); Message msg = new Message(); msg.what = SDK_PAY_FLAG; msg.obj = result; mHandler.sendMessage(msg); } }; Thread payThread = new Thread(payRunnable); payThread.start(); }
其实代码根本不需要那么多,因为隐私部分信息都放在后台,咱们前端只是拿数据放到对应的地方就行了,从代码里面可以看到,咱们要做的就是把orderinfo替换一下, 这个是后台直接给你, 因为订单数据的加签过程不允许放在客户端,所以你只需要把你从服务器拿到的 订单信息替换掉 demo 里面的 orderInfo 就行了, 然后在上面的handler 支付成功消息收到后 作你自己的操作就行了 ,在支付的过程中有时候会遇到一些状态提示码,这个可以去官网上查,都有对应的提示. 如果支付不成功,下面这几个往往就是最容易出问题的地方.
public static final String APPID//合作身份者id,以2088开头的16位纯数字 此id用来支付时快速登录public static final String DEFAULT_PARTNER//收款支付宝账号public static final String DEFAULT_SELLER//商户私钥,自助生成,在压缩包中有openssl,用此软件生成商户的公钥和私钥,写到此处要不然服务器返回错误。公钥要传到淘宝合作账户里详情请看淘宝的sdk文档public static final String PRIVATE//公钥public static final String PUBLIC
阅读全文
0 0
- 学习笔记-支付宝支付接入
- 支付宝sdk接入笔记
- 接入安卓微信支付笔记
- Android支付接入:支付宝
- ReactNative接入支付宝支付
- iOS接入支付宝支付
- 支付宝-APP支付接入
- ReactNative接入支付宝支付
- ReactNative接入支付宝支付
- 支付宝支付接入指南
- app 支付宝支付接入
- ReactNative接入支付宝支付
- PHP接入支付宝支付
- ReactNative接入支付宝支付
- 支付宝支付接入+微信支付
- Android支付宝接入
- 支付宝接入
- 支付宝接入记录
- mac os 安装homebrew
- python练习--休息一下小程序
- Spring Security学习记录(二) -- Spring Security的Filter
- 51nod 1433 0和5
- Android Rxjava2
- 学习笔记-支付宝支付接入
- sockaddr数据结构
- Spring Security学习记录(三) -- JSON Web Token实践(上)
- 8-8随笔---修改,避免重复--比较简单的实现
- Eclipse运行报错:HTTP Status 500
- Spring Security学习记录(四) -- JSON Web Token实践(下)
- 十、基础教程-数据提示框(Tooltip)
- 你必须知道的261个Java语言问题笔记- Java流和文件操作1
- 跟我一起学python第三讲 python集成开发环境pycharm安装