当前时间:Friday 2016年12月09日 欢迎访问 夜阑小雨 我的学习碎片档案,这里记录了我的学习内容和工作中经验,希望给您带去帮助。

当前位置: 首页 >> Android开发,phonegap开发 >> 正文

phonegap 集成支付宝快捷支付–Android(二)

【由于支付宝快捷支付接口升级,插件也随之升级,具体查看:】

phonegap集成支付宝2.0快捷支付–Android

不得不说,phonegap的开发虽然加快了app的开发,

但需要一些第三方的服务必须通过插件来完成,比如支付。

需要完成Phonegap 的支付宝快捷支付 需要先配置好支付宝相应的信息具体看

phonegap -Android客户端集成支付宝快捷支付(一)

完成第一步的配置下来我们完成快捷支付的集成

[目前插件已经支持到Phonegap 3.5]

下面我们先看看我的集成效果:

 1234

5789

下来我们来集成插件:

1.下载插件包:【商业插件】

2.插件包中alipay_lib是一个第三方库项目,这个需要先导入进Eclipse,并设置为library。

【如果在运行的过程中出现错误,请删除libs下面的android-support-v4.jar文件】

3.在我们的项目中 引入改library。具体如何引入可以查 支付宝快捷支付andriod文档(官方)

4.拷贝alipay.jar 到你的libs文件夹里,并且引入项目。【通过配置路径来实现】

5.拷贝 assets下的alipay_msp.apk到你的项目assets,该文件是用来安装支付宝快捷支付安装包,再支付时如果找不到支付宝就会安装改文件

6.拷贝src 下面的alipay到你的项目中。文件夹结构自己调整。

修改所有文件的头部引用包名

修改Keys.java文件里面的配置信息,可以参考 上一篇文章 phonegap -Android客户端集成支付宝快捷支付(一)

7.添加权限和声明

在应用工程的AndroidManifest.xml文件里面添加Activity声明

<activity
android:name=”com.alipay.android.app.sdk.WapPayActivity”
android:screenOrientation=”portrait”>
</activity>

添加权限:

<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” />

8.添加插件引入:

phonegap2.x

<plugin name=”Pgalipay” value=”com.****.*****.alipay.Pgalipay”/>

phonegap3.x

<feature name=”Pgalipay”>
<param name=”android-package” value=”com.*****.alipay.Pgalipay” />
</feature>

9.拷贝www中的js文件引入到你的html文件里面,同时引入方法。

function zhifu(){
var out_trade_no= “147896589625865”;//15位订单号
var subject = “支付测试产品”;
var bodtxt = “支付测试产品”;
var total_fee = “0.01”;
window.plugins.Pgalipay.alipay(
out_trade_no,subject,bodtxt,total_fee,
function(success) {
ch = new Array;
ch = success.split(“;”);
for(i=0;i<ch.length ;i++ )
{
ch[i]=ch[i].replace(“{“,””);
ch[i]=ch[i].replace(“}”,””);

}
res1=ch[0].substring(13);
res2=ch[1].substring(5);
if(res1 == 9000){
res3=ch[2].substring(7);
str = new Array;
str = res3.split(“&”);
for(i=0;i<str.length ;i++ )
{
str[i]=str[i].replace(‘”‘,”);
str[i]=str[i].replace(‘”‘,”);
}

var out_trade_no = str[1].substring(13);
var total_fee=str[4].substring(10);
var success = str[12].substring(8);

alert(“订单号:”+out_trade_no);
alert(“支付金额:”+total_fee);
alert(“支付状态:”+success);
if(success){
alert(“完成支付!”); // 做业务订单处理
}

}else{

alert(res1); //根据代码编码来处理未支付完成的结果 【4000 订单支付失败】【8000 正在处理中】
//【6001 用户中途取消 】【6002 网络连接出错】
alert(res2);

}
}, function(fail) {
alert(“encoding failed: ” + fail);
}
);

}

js代码是我根据自己的业务来写的只供参考,但基本上可以满足业务处理。

具体判断和取值自己根据返回值来开发。

 

注意:

如果再支付环节,害怕接口伪造支付结果,那么我们可以另一种方法来实现双重验证。

再pgalipay.java里面有一个这样的值:这里的网址就是做服务器异步验证的。

当完成支付后支付宝会将结果传给这个网址,我们再服务器端来做进一步验证。

sb.append(URLEncoder.encode(“http://dev.baidu.com.cn/zhifu/alipay/notify_url.php”));

//服务器异步通知页面路径  参数 notify_url,如果商户没设定,则不会进行该操作

(1) 必须保证服务器异步通知页面(notify_url)上无任何字符,如空格、HTML标签、开发系统自带抛出的异常提示信息等;
(2) 支付宝是用POST 方式发送通知信息,因此该页面中获取参数的方式,如:request.Form(“out_trade_no”)、$_POST[‘out_trade_no’] ;
(3) 支付宝主动发起通知,该方式才会被启用;
(4) 服务器间的交互,不像页面跳转同步通知可以在页面上显示出来,这种交互方式是不可见的;
(5) 程序执行完后必须打印输出“success ”(不包含引号)。如果商户反馈给支付宝的字符不是success 这7 个字符,支付宝服务器会不断重发通知,直到
超过24小时22分钟。一般情况下,25小时以内完成8 次通知(通知的间隔频率一般是:2m,10m,10m,1h,2h,6h,15h );
(6) 程序执行完成后,该页面不能执行页面跳转。如果执行页面跳转,支付宝会收不到success 字符,会被支付宝服务器判定为该页面程序运行出现异常,
而重发处理结果通知;
(7) cookies、session 等在此页面会失效,即无法获取这些数据;
(8) 该方式的调试与运行必须在服务器上,即互联网上能访问;
(9) 该方式的作用主要防止订单丢失,即页面跳转同步通知没有处理订单更新,它则去处理;
(10 ) 当商户收到服务器异步通知并打印出success 时,服务器异步通知参数notify_id 才会失效。也就是说在支付宝发送同一条异步通知时(包含商户并未成功打印出success 导致支付宝重发数次通知),服务器异步通知参数notify_id 是不变的。

具体可以下载支付快捷支付demo,里面有demo直接可以使用。

不过具体集成还需要根据你的业务流程来实现!

作者:夜阑小雨
原文链接:phonegap 集成支付宝快捷支付–Android(二)
夜阑小雨版权所有,转载本网站文章时请保留此信息。

收藏和分享: 转贴到开心网 转贴到校内网 分享到 Twitter Delicious 分享到 Google Reader 分享到 百度收藏 分享到 QQ收藏

评论信息

0 条评论 发表评论

发布评论

您必须登录才能发表评论。

网站客户端下载