- 微信
PayReq request = new PayReq();
request.appId = appid;
request.partnerId = partnerid;
request.prepayId = prepayid;
request.nonceStr = noncestr;
request.timeStamp = timestamp;
request.packageValue = "Sign=WXPay";
request.sign = sign;
IWXAPI msgApi = WXAPIFactory.createWXAPI(mContext,
Constants.APP_ID);
boolean can = msgApi.sendReq(request);
if(can){
Toast.makeText(mContext, "正在调起微信", 1000).show();
}else{
Toast.makeText(mContext, "调起微信失败", 1000).show();
}
微信例子:
链接:http://pan.baidu.com/s/1nuvbwmd 密码:ja63
官方例子版本比较低,找客服应该可以要到高版本的。
服务端生成预付单时候一定要
按申请的移动的appId进行生成,不能使用pc或者什么公众号的appid,遇到个sb,非要这么干耽误了很多时间,在参数没有配置好之前调用微信api,微信是没有反应的,闪退,只有所有的参数对了才能正常支付,ios据说参数不对,但是可以进入微信界面。
签名与包名一定要按照规则去弄,否则一直失败,签名貌似也分大小写。
WXPayEntryActivity一定要在你的包名+.wxapi这个包下面,否则微信支付成功后不会跳入此页面,也就不能获取支付后数据,这里有个bug感觉,我取消支付后关闭此activity,返回我的上一个activity,我的上一个可以有生命周期,然而支付成功后返回后,activity没有了生命周期了,也就无法刷新页面,不知道为什么!后来加了一个广播,刷新了页面数据!
2 .支付宝开放平台
支付宝的移动支付与微信也差不太多,包名与签名,还有一个私钥公钥的事,这个公私钥就是填写在合作伙伴密钥部分,而不是申请的应用上,与pc、wap(手机网站支付)使用同一个合作伙伴秘钥进行支付。应用的秘钥填写可以进行其他功能的开发,支付宝移动支付不需要,下载的例子签名时候有个签名bug,api版本不兼容,高版本手机报错,需要处理下,SignUtils类中,KeyFactory keyf = KeyFactory.getInstance(ALGORITHM,”BC”);加一个“BC”,这个签名在java程序是不会报错的,但是在android4.0以上必须加上“BC”,这里有个什么位数的差异。
在服务市场签约获得的大部分接口,签约主体是商户,接口权限属于具体的商户,这部分接口需要使用PID和密钥来调用,此类接口网关一般为mapi(https://mapi.alipay.com/gateway.do),PID对应的密钥一共有三种签名方式,分别是MD5、RSA、DSA。由于产品的特殊性,每个产品支持哪些签名方式不尽相同,具体需参考各个产品的接口技术文档。
使用合作伙伴密钥的典型功能包括:
快捷登录、移动支付、即时到账收款、手机网站支付等。