MUI移动开发框架——微信支付(android部分)

MUI移动开发中的微信支付分两部分,一部分在服务端,一部分在客户端
--------------------------- ------------------------------- ----服务端部分 ---------- ------------------------------- --------------------- :
    我们客户端向服务器请求参数,服务器直接生成预支付单号并返回给我们,返回给客户端的参数应该有appid、partnerid、prepayid、package、noncestr、timestamp、sign共七个参数,可以到微信支付官网上验证sign值是否正确:  https://pay.weixin.qq.com/wiki/tools/signverify/        ;   MUI移动开发框架——微信支付(android部分)_第1张图片
注意,这里的商户key是在 https://pay.weixin.qq.com/index.php/account/api_cert(这tm居然是商户平台里设置的!)里面设置密钥设置的值,这个值是自定义的,最好是随机数,负责这块的同事说如果不是随机数可能验证不通过,将商户key也填入,然后点击"生成签名",查看生成的sign值和服务器返回的sign值是否相同,如果相同则说明参数没有问题.参考微信官方文档,以上6个参数(另外还有sign)是必选参数,少了不行
--------------------------- ------------------------------- ----客户端部分 ---------- ------------------------------- --------------------- :  
***生成带应用签名(主要是keystore问题)
1.用eclipse生成keystore
做android不知道keystore实在惭愧,今天遇到了,生成keystore的方式是:(不用eclipse的话 也可以用dos 网上可以找到) 
 MUI移动开发框架——微信支付(android部分)_第2张图片


如果要生成一个新的keystore,随意选择一个项目,来到下一步,创建一个新的keystore文件,指定生成到的路径和文件名,并设置密码
 MUI移动开发框架——微信支付(android部分)_第3张图片


填写信息,这里一定要记下Alias(别名)和密码
MUI移动开发框架——微信支付(android部分)_第4张图片


最后成功生成keystore文件
 MUI移动开发框架——微信支付(android部分)_第5张图片



2.用这个keystore文件导出android项目的apk,步骤与生成新的keystore基本相同

MUI移动开发框架——微信支付(android部分)_第6张图片

3.生成应用签名
(1)下载Gen_Signature_Android221cbf.apk
 
https://res.wx.qq.com/open/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android221cbf.apk
 (2)将用keytore签名过的apk装到安卓手机上,把 Gen_Signature_Android221cbf也装上
(3)打开 
Gen_Signature_Android221cbf,输入项目的包名,这个程序会根据你输入的包名找到当前手机上安装的对应程序,然后根据程序的keystore签名和包名,生成一个字符串,这个字符串就是 应用签名 ,所以 应用签名与包名和keystore文件有关
这段文字不能复制,蛋疼的敲到电脑上吧,登录开放平台(操蛋的腾讯做个支付搞两个平台),到管理中心下面创建创建移动应用,
这里要用到包名和应用签名,加上就好了,keystore的作用有一半就在这里,在微信服务器上作为应用签名

4.MUI代码部分
mui.init();
mui.plusReady(function() {
//定义支付通道
var channel = null;
//获取支付通道
getChannels();
//获取支付通道的方法
function getChannels() {
plus.payment.getChannels(function(channels) {
for (var i = 0; i < channels.length; i++) {
if (channels[i].id == "wxpay") {
channel = channels[i];
}
}
plus.ui.toast("使用支付方式:" + channel.id);
}, function(e) {
plus.ui.toast("获取支付通道失败!");
console.log("获取支付通道失败!");
})
}
//发起微信支付请求的方法
function pay(){
//获取微信支付参数的url
var basic_url=" http://microtivo.chinacloudapp.cn:9202/";
mui.ajax(basic_url,{
data:"",
dataType:"json",
type:"get",
success:ajax_success_callback,
error:ajax_error_callback
})
}
//获取微信支付参数成功的回调函数
function ajax_success_callback(resObj){ 
console.log("请求微信支付参数成功,返回的json:");
var res_str=JSON.stringify(resObj);
console.log(res_str);
//用返回参数 发起微信支付请求
plus.payment.request(channel,res_str,wxpay_success,wxpay_error);
}
//获取微信支付参数失败的回调函数
function ajax_error_callback(e){
console.log("ajax获取参数失败");
}
//微信支付成功回调
function wxpay_success(result){
plus.ui.alert("支付成功!",function(){
back();
})
}
//微信支付失败回调
function wxpay_error(error){
plus.ui.alert("支付失败!");
plus.ui.alert(JSON.stringify(error));
console.log(JSON.stringify(error));
}
//微信支付按钮 发起微信支付
document.getElementById("btn_pay").addEventListener("tap",function(){
pay();
})
})  



关键代码也就这一句,拿到公司服务器返回带有七个参数的json后, 
plus.payment.request(channel,res_str,wxpay_success,wxpay_error);
这里有问题的,可以参考mui官方文档,一般没什么问题
http://www.html5plus.org/doc/zh_cn/payment.html


6.manifest配置
我用的是云打包,配置很方便,都不用开manifest的代码模式,开个面板模式就行,只要加上appid就可以了,其它的在打包的时候加上
MUI移动开发框架——微信支付(android部分)_第7张图片


7.打包
注意,要调起微信支付,必须要打包成apk并安装才能使用,不要死命的试了(MUI官方demo可以不打包)

证书别名:keystore中的Alias
私钥密码:keystore中的密码
证书文件:keystore的所在路径


MUI移动开发框架——微信支付(android部分)_第8张图片

打包完成 测试成功
MUI移动开发框架——微信支付(android部分)_第9张图片

你可能感兴趣的:(MUI移动开发,Android)