欢迎访问 夜阑小雨 我的学习碎片档案,这里记录了我的学习内容和工作中经验,希望给您带去帮助。

phonegap-微信支付-Android插件

分享 夜阑小雨 10334℃

phonegap-微信支付-Android插件

由于微信官方支付接口更新到v3,目前微信支付插件也已升级到支持V3接口。

经过一天的研究和开发,终于可以再phonegap的框架上使用微信支付了,不得不说腾讯的文档简直是坑爹,各种坑,

文档又不说明,只能自己不断的调试和研究,才磕磕碰碰的弄完。

这里的坑很多,会在后面说明。

先爆照,看看效果。

1

2 3 4
5 6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

看看如何集成:

一、首先你的去微信开放平台申请注册一个 app,然后针对这个app 申请微信支付的权限。如何申请,请百度,

时间比较长,如果顺利2周时间应该就好了。具体查看:https://open.weixin.qq.com/

申请的时候需要你填写应用签名和包名,这个是很关键的针对Android的。签名必须正确,包名将是你此次集成项目的包名。

有一个不对,将调不起微信支付。

二、申请到微信支付后,微信会给你发信,你会收到 AppID, AppSecret,PaySignKey,PartnerID,PartnerKey。

这些信息会在之后的插件集成中用到。【v2和v3 略有不同但是大致都一样的都可以使用, 具体设置看文章最后】

三、开始集成插件:

1.将libs里面的jar包放到你的项目的libs里面,引入到项目里面。

2.src文件里面的文件加入到你的项目里面。

这些都是插件文件。根据你项目的具体路径调整,劲量保持我原来的路径。

WXPayEntryActivity.java为回调文件,必须以wxapi为子目录放到你的项目主目录里面。

类似这样的结构:com\breadth\breadthapp\wxapi。

3.修改插件文件。Keyswx.java为微信支付的配置文件。需要修改其他不用修改。

4.添加权限及声明。

修改AndroidManifest.xml,根据压缩包里面的文件修改。

<uses-permission android:name=”android.permission.INTERNET” />
<uses-permission android:name=”android.permission.MODIFY_AUDIO_SETTINGS”/>
<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE”/>

//支付回调
<activity
android:name=”.wxapi.WXPayEntryActivity”
android:exported=”true”
android:launchMode=”singleTop” />

 

5.在你的插件文件里面引入插件:

————-3.x———————————

<feature name=”Pgwxpay”>
<param name=”android-package” value=”com.phonegap.weixin.Pgwxpay” />
</feature>

————-2.x———————————

<plugin name=”Pgwxpay” value=”com.phonegap.weixin.Pgwxpay”/>

6.引入js文件到你的项目index.htm里面。

添加一下js代码:

// 微信支付
function wxzhifu(){
navigator.notification.confirm(
‘正在支付请稍后’,
wxresults,
‘小贴士’,
[‘未完成支付’,’已完成支付’]
);
var out_trade_no= “147896589629862”;//15位订单号
var url = “http://weixin.qq.com”; //异步同步接口
var bodtxt = “支付测试产品2”; //产品说明
var total_fee = “0.01”; //订单金额
window.plugins.Pgwxpay.wxpay(
out_trade_no,url,bodtxt,total_fee*100,
function(success) {
alert(success);
}, function(fail) {
alert(“encoding failed: ” + fail);
}
);
}

//支付结果回调接收
function wxresults(button){
//data = -2 支付失败
//data = -1 支付参数错误
//data = 0 支付成功

if (button === 2){
window.plugins.Pgwxpay.getcode(
function(success) {
var element = document.getElementById(‘wxlog’);
element.innerHTML = “支付结果:”+success;
alert(success);
}, function(fail) {
alert(“encoding failed: ” + fail);
});

}else{
window.plugins.Pgwxpay.getcode(
function(success) {
var element = document.getElementById(‘wxlog’);
element.innerHTML = “支付结果:”+success;
alert(success);
}, function(fail) {
alert(“encoding failed: ” + fail);
});
}

这里说明一下:

当点击wxzhifu()这个方法后,会先弹出一个确认提示框,同时等待调起微信支付的界面。

这个确认提示框不要关闭,这个完成支付后,需要手动关闭。完成支付后,就返回 到app,这时候需要根据情况点击确认框,

当点击确认框之后,会触发wxresults()方法,这个方法回去检查支付的结果。

微信的支付结果,只有3个代码 -2,-1,0,只有是0的时候才是支付成功,这里就需要根据代码来判断是否完成支付。

但是这里的订单处理一般需要通过 异步同步接口 来实现,即完成支付后,微信服务器会远程回调一组数据到你的 异步同步接口。

就是你在提交支付的时候填写的url地址。微信支付后会将结果通知到这个地址上。

当app端完成支付后,在wxresults()方法中去检查数据库里的订单状态,同时再跟新app端的订单状态。

7.添加完成之后,基本就完成了集成工作。但是你直接连接手机,是不能掉起你的微信支付的。

因为你的签名和你申请微信支付的填写的签名不一样,所以一般需要先导出打包app,然后再安装到你的手机上才可以。

【一般要获取签名,是先打包你的一个app,然后安装到你的手机上,然后用微信的签名工具获取一个签名】

基本流程就这样。看着复杂,但是只要理解清楚他的原理,集成起来也是很快的。

【特别说明】:

1.申请微信支付的时候,填写的签名最好是你的最终打包出来的app获取的,你的签名秘钥最好保存后,整个项目都会用到。

这样你测试微信支付的时候,就打包处理在测试,同时你发布处理的版本也是可以用的。

2.微信支付的class包名是关键不能更换,申请的时候是什么,那你添加微信支付的项目的包名必须是这个。而且前面也保持一致。

3.微信支付后的订单处理,这里基本上都是要到服务器端来完成的,集成的代码可以看微信支付的官方文档,他里面已经写了一些基础代码。

可以根据项目调整后使用。

4.app端的微信回调只给了支付状态的回调提示,订单处理必须到服务器端处理,然后在app端通过ajax去取值,来更新app端的订单信息。

具体参数可以看【微信APP支付】接口文档。

5.在测试的时候,一个订单号一旦被支付,就不能再使用,请更新后再测试。

 

关于微信支付v2版和v3版:

由于微信官方支付接口更新到v3,目前微信支付插件也已升级到支持V3接口。

v2接口需要 5个支付参数。但是v3接口只需要3个支付参数。

具体细节查看微信支付插件的代码。

设置商户支付密钥key:登录商户平台》账户设置》密码安全》api安全 ,安装证书后,填入一个32位的密钥;(商户平台请访问 http://pay.weixin.qq.com)

转载请注明:夜阑小雨 » phonegap-微信支付-Android插件

喜欢 (1)or分享 (0)