支付宝集成
来源:互联网 发布:java base32编码方法 编辑:程序博客网 时间:2024/05/22 03:37
<pre name="code" class="java">为了方便以后自己的使用,也方便初学的小伙伴.尽量少走弯路.
<pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'Consolas';font-size:13.5pt;"><span style="color:#e8bf6a;"><activity</span><span style="color:#e8bf6a;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:name=</span><span style="color:#a5c261;">"com.alipay.sdk.app.H5PayActivity"</span><span style="color:#a5c261;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:configChanges=</span><span style="color:#a5c261;">"orientation|keyboardHidden|navigation"</span><span style="color:#a5c261;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:exported=</span><span style="color:#a5c261;">"false"</span><span style="color:#a5c261;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:screenOrientation=</span><span style="color:#a5c261;">"behind" </span><span style="color:#e8bf6a;">></span><span style="color:#e8bf6a;"></activity></span><span style="color:#e8bf6a;"><activity</span><span style="color:#e8bf6a;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:name=</span><span style="color:#a5c261;">"com.alipay.sdk.auth.AuthActivity"</span><span style="color:#a5c261;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:configChanges=</span><span style="color:#a5c261;">"orientation|keyboardHidden|navigation"</span><span style="color:#a5c261;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:exported=</span><span style="color:#a5c261;">"false"</span><span style="color:#a5c261;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:screenOrientation=</span><span style="color:#a5c261;">"behind" </span><span style="color:#e8bf6a;">></span><span style="color:#e8bf6a;"></activity></span>
以上个是写在AndroidMainfest中的 还有要将这个包导入到lib中 alipaySDK-20150602.jar(可以去官网下载)//权限的声明<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"
/>
</pre><pre name="code" class="java">//这段代码是在你获得到你所支付商品的所有信息,参数 之后调用.<pre name="code" class="java">payInfo 这个就是我所有的参数和信息. 是后台通过,公钥 和私钥 加密之后返回的.
其实这写数据,我们前端自己也可以做.但是防止别人反编译.所以最好是在后台经行处理.
"私钥"之所以称之为私钥,那就是不能被人看见的.<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="java"> Runnable payRunnable = new Runnable() { @Override public void run() { // 构造PayTask 对象 PayTask alipay = new PayTask(PayActivity.this); // 调用支付接口,获取支付结果 String result = alipay.pay(payInfo); Message msg = new Message(); msg.what = SDK_PAY_FLAG; msg.obj = result; mHandler.sendMessage(msg); } }; // 必须异步调用 Thread payThread = new Thread(payRunnable); payThread.start();
<a target=_blank href="https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.sGrKnJ&treeId=59&articleId=103662&docType=1">点击打开链接</a>(这是官网对参数的说明)
之后我们还需要些一个handler 来判断他返回的状态 是否是支付成功 或者失败
<pre name="code" class="java">private Handler mHandler = new Handler() { 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")) { Toast.makeText(PayActivity.this, "支付成功", Toast.LENGTH_SHORT) .show(); }break; case SDK_CHECK_FLAG: { if ((msg.obj).equals(true)) { Toast.makeText(PayActivity.this, "检查结果为:" + "有可用账户", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(PayActivity.this, "检查结果为:" + "无可用账户", Toast.LENGTH_SHORT).show(); } break; } default: break; } }};
调用这些就可以实现了.
在说一下我当初遇到的疑问.
1.当没有支付宝的时候它会自动调取网页的.有支付宝,他会自动调用支付宝的支付界面.
2.之前我是自己给数据加密.然后获得了 订单的参数.<span style="font-family: Arial, Helvetica, sans-serif;">payInfo .当时是自己拼接的.在它官方的demo里面有自己拼接的写法.</span>
<span style="font-family: Arial, Helvetica, sans-serif;">其实自己在本地存储公钥和私钥是不对的.容易让别人反编译.从而获得到你们自己公司支付宝的 私钥. </span>
<span style="font-family: Arial, Helvetica, sans-serif;">****所以建议最好这些参数都是后台用公钥和私钥做处理之后返回.****</span>
如果还有不懂得 .其实直接下载官方的DEMO 就可以.里面是很全面的.而且里面也有混淆.下面的是官方demo的链接
点击打开链接
0 0
- 集成 支付宝支付
- 集成支付宝支付
- 支付宝支付集成
- 集成支付宝支付
- 支付宝支付集成
- 支付宝支付集成
- 支付宝支付集成
- 支付宝支付功能集成
- 集成支付宝快捷支付
- 支付宝移动支付集成
- iOS 集成支付宝支付
- Cordova集成支付宝支付
- android 集成支付宝支付
- Android集成支付宝支付
- iOS集成支付宝支付
- 支付宝移动支付集成
- 支付服务集成-支付宝
- Android 集成支付宝支付
- linux下进程管理
- 51Nod-1174-区间中最大数
- 顺序表应用6:有序顺序表查询
- Maven入门
- Java自动内存管理机制(四) 垃圾收集算法
- 支付宝集成
- Jenkins工具(一)之 Jenkins环境搭建
- 深入理解JavaScript MVC 框架
- 数据库学习遇到的问题
- PyGobject(十三)布局容器之Button篇——图片按钮和圆形按钮
- Android中 Intent 与 Intent-filter
- Windows 下配置 Nginx PHP
- sort 函数和qsort的区别
- unittest实现HTTP接口功能测试