支付宝快速集成
来源:互联网 发布:ps cdr ae是什么软件 编辑:程序博客网 时间:2024/04/29 03:26
参考资料:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.ckDeXr&treeId=204&articleId=105296&docType=1
资料下载:https://doc.open.alipay.com/doc2/detail.htm?treeId=54&articleId=104509&docType=1
1.导入SDK jar包(Android Studio)
1.下载后需要的jar包,拷贝到libs目录下,之后点击图中圈出按钮,等待项目刷新好;
2.在商户应用工程的AndroidManifest.xml文件里面添加声明:
//权限有了就不用重复加了<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><activity android:name="com.alipay.sdk.app.H5PayActivity" android:configChanges="orientation|keyboardHidden|navigation" android:exported="false" android:screenOrientation="behind" ></activity><activity android:name="com.alipay.sdk.auth.AuthActivity" android:configChanges="orientation|keyboardHidden|navigation" android:exported="false" android:screenOrientation="behind" > </activity>
3.调起支付宝,注意 支付行为需要在独立的非ui线程中执行
3.1.先去app服务器获取订单信息orderInfo(String)
private void getOrderInfo(){ //todo...}
3.2.拿到orderInfo开始调起支付
private void payByAli(final String orderInfo) { Runnable payRunnable = new Runnable() { @Override public void run() { PayTask alipay = new PayTask(PayOrderByQrActivity.this); Map<String, String> result = alipay.payV2(orderInfo, true); Message msg = new Message(); msg.what = PAY_TYPE_ALI; msg.obj = result; mHandler.sendMessage(msg); } }; // 必须异步调用 Thread payThread = new Thread(payRunnable); payThread.start(); }
3.3.处理支付结果
下面是支付宝返回的一部分数据示例:
String result = payResult.get(“result”);
{ "alipay_trade_app_pay_response": { "code": "10000", "msg": "Success", "app_id": "201605xxxxxxx", "auth_app_id": "201605xxxxxx", "charset": "UTF-8", "timestamp": "2017-01-04 11:29:15", "total_amount": "0.01", "trade_no": "2017010421001004880xxxxxx", "seller_id": "20882218763xxx", "out_trade_no": "142017010411xxxxxxx" }, "sign": "cYLe5dknAMCOR3vw67kiChzG7igJg2+wWXto0KqHW3K3QfCalbxIzEpKVQNVj4t8K/lvQW0SlwS+4c8XfxZeQqRRoLnkhNaXyaRi6FM6Upfqb09wDxtczrs6WZYt3bYFH3Q9MYnxxxxxxx", "sign_type": "RSA" }
同步处理返回的结果
private Handler mHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case PAY_TYPE_ALI://PAY_TYPE_ALI是自己定义的 Log.d(TAG, "handleMessage: alipay=" + msg.obj); Map<String, String> payResult = (Map<String, String>) msg.obj; String resultStatus = payResult.get("resultStatus"); Log.d(TAG, "handleMessage: alipay=" + resultStatus); String result = payResult.get("result"); if (!TextUtils.isEmpty(result)) { JSONObject jsonObject = JSON.parseObject(result); JSONObject response = jsonObject.getJSONObject("alipay_trade_app_pay_response"); String orderNo = response.getString("out_trade_no"); if (!TextUtils.isEmpty(orderNo)) { //todo... 拿到订单号去访问自己的服务器异步获取本次支付结果 } } //String memo = payResult.get("memo"); // 判断resultStatus 为9000则代表支付成功 /*if (TextUtils.equals(resultStatus, "9000")) { // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。 //tips("提示:", "支付成功"); } else { // 该笔订单真实的支付结果,需要依赖服务端的异步通知。 //tips("提示:", "需要服务器返回支付信息"); }*/ break; } } };
4.从自己的服务器获取支付结果:
异步通知
商户需要提供一个http协议的接口,包含在请求支付的入参中,其key对应notify_url。支付宝服务器在支付完成后,会以POST方式调用notify_url传输数据。
//todo...请求自己服务器获取支付结果后,进行相应的处理
2 0
- 支付宝快速集成
- 快速集成支付宝
- 支付宝快速集成
- 支付宝快速集成
- iOS 快速集成支付宝
- 支付宝SDK快速集成
- 快速集成微信支付和支付宝支付
- 【Java】快速集成微信支付和支付宝支付
- 【Java】快速集成微信支付和支付宝支付
- iOS支付宝快速集成开发
- Swift 快速集成支付宝2.0接口
- iOS快速集成支付宝(完善版)
- 2分钟快速集成支付宝快捷支付
- iOS开发:快速集成支付宝快捷支付
- iOS开发:2分钟快速集成支付宝快捷支付
- 2分钟快速集成支付宝快捷支付
- 2分钟快速集成支付宝快捷支付
- 2分钟快速集成支付宝快捷支付
- Monkey实例测试
- 认真分析mmap:是什么 为什么 怎么用
- 【Leetcode】442. Find All Duplicates in an Array
- windows下遍历某文件夹下所有文件,返回字符串数组
- 4. Median of Two Sorted Arrays (Hard)
- 支付宝快速集成
- 提升树算法
- 关于try-catch-finally中的return语句解析
- java数组
- 从内核文件系统看文件读写过程
- 导出数据的命令
- 正则表达式笔记
- installshield12 如何改变默认安装目录
- SEO唯有勤奋优化,新手必读!