android 调用微信聊天为什么调用不起微信支付界面

输入关键字或相关内容进行搜索
1. 写在前面:我现在在做微信支付,由于某种原因没有使用plus.payment.request,而用的是微信官方提供的H5支付。
2. 现在遇到的问题是,同样的代码,ios就可以调起微信支付页面,但是安卓就不行。
3. 附件中的“调起支付页面.png”是我调起微信支付的代码,红色椭圆中的就是微信返回给我的支付跳转URL,就是&微信官方H5支付流程.png&中画圈的第3步。
4. 然后就在第4步的时候出了问题,ios检查就OK,andorid就不行,提示“商家参数格式错误”,如图“错误.png”。
5. 对于这个错误,微信官方给出的原因是需要在请求头里手动设置Referer,如图“错误原因.png”。可以看到我在&调起支付页面.png&中是配了Referer的,而且ios也确实调起支付页面并且支付成功了。
6. 那么根据我的分析,就是安卓端的webView并没有成功配置Referer。
Q:我现在要提的问题就是,我要怎么写才能在android端的webView上成功配置Referer呢?
实在无奈,最后还是换了app支付。
H5支付在调起支付页面这一步的时候无论是openwindow还是获取原生webView打开亦或者使用android原生intent调用外部浏览器打开全都不行,我在网上查了有其他网友用原生调用H5支付的时候也出现了同样的问题,但是因为人家是原生,所以最后人家用外部浏览器打开了,并且还提示说不是所有的外部浏览器都能调起支付页面。我就这个问题问了微信客服也没有得到答复,现在也不知道这块究竟是MUI的问题还是微信的问题亦或是国内手机厂商自己封装的系统的问题。
如果有朋友还想研究这块的话可以试试看使用HttpClient能不能调起支付。
再做app支付的时候,踩到了两个坑,而且论坛上也有很多朋友出现的错误和我一样,在此分享下,希望能够对大家有所帮助。
第一个坑是微信的,访问统一下单接口后返回的参数里,随机字符串的key是**nonce_str**,而app发送给微信调起支付界面的参数里,随机字符串的key是**noncestr**,这点大家要注意。
第二个坑是自己的,因为我的后台服务器是java的,请求参数和回调参数都定义在静态常量里了,而调试的时候是将工程打包放在服务器上调试的,感觉是有没编译出来的class文件。我的感觉是我虽然把常量类的class文件放到服务器上了,但是引用常量的类文件class我并没有放到服务器上,导致引用的还是原来的常量(这块我不是太懂,好像是这样,但是感觉又说不通),所以为了保险起见,改完代码重新打包往服务器上放一般是最好的。
要回复问题请先或
关注: 1 人2012年 总版技术专家分年内排行榜第一
2013年 总版技术专家分年内排行榜第七2011年 总版技术专家分年内排行榜第五2009年 总版技术专家分年内排行榜第九
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。Android微信支付 遇到的问题 - 简书
Android微信支付 遇到的问题
当你的应用已经到这个界面的时候 ok 你就要成功了.png
搜索到这篇文章的想必都是在调试微信支付,身为一个做过两次app 微信支付的人员,我遇到的问题有服务的,客户端的,ok
接下来慢慢介绍问题,当然了文章最底部也有开发前准备
L{D42G]TUR~UTPZ}56XX`_C.gif
问题 -1(微信支付竟然所有的错误都是-1)
后台的问题:调用微信统一下单API、以及返回数据给前端时候的sign问题 参数二次签名的时候 必须是小写,小写,小写
(1).调用统一下单时候的商户key 微信商户平台(pay.)--&账户设置--&API安全--&密钥设置(2).调用统一下单API后,按照微信文档中的业务流程,下一步该是:
统一下单接口返回正常的prepay_id,
再按签名规范重新生成签名后,将数据传输给APP。
参与签名的字段名为appId,partnerId
,prepayId,nonceStr,timeStamp,package。
从这开始就是app的注意事项检查appid 是否注册(1).配置文件xml注册
&!-- wxpay--&
android:name=".wxapi.WXPayEntryActivity"
android:exported="true"
android:launchMode="singleTop"
&/activity&
&receiver android:name=".wxapi.AppRegister"
android:permission="com.tencent.mm.plugin.permission.SEND"&
&intent-filter&
&action android:name="com.tencent.mm.plugin.openapi.Intent.ACTION_REFRESH_WXAPP" /&
&/intent-filter&
&/receiver&
(2).AppRegister
public class AppRegister extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
final IWXAPI api = WXAPIFactory.createWXAPI(context, null);
api.registerApp(Constants.APP_ID);
(3).调起微信支付时候也需要注册 应该是双重保障吧
msgApi = WXAPIFactory.createWXAPI(getActivity(),null);
msgApi.registerApp(Constants.APP_ID);
getActivity().runOnUiThread(new Runnable() {
public void run() {
/** 检测是否有微信软件 */
if (isWXAppInstalledAndSupported(msgApi)) {
PayReq request = new PayReq();
request.appId = vo.getAppid();
request.partnerId = vo.getPartnerid();
request.prepayId = vo.getPrepayid();
request.nonceStr =vo.getNoncestr();
request.timeStamp = vo.getTimestamp();
request.packageValue = "Sign=WXPay";
request.sign =vo.getSign();
msgApi.sendReq(request);
MessageBox.toast(getActivity(),"亲,您还没有安装微信");
检查你的应用签名是否正确 具体的做法就是下载官方的工具 将你的app 正常打包运行到手机上 检测一下下边两张照片里标注的 值是否正确
输入应用的包名,会获取到签名.png
开放平台应用的配置签名.png
其实你会清楚的发现这个值和正常打包之后的md5类似 只不过就是改成小写去掉冒号
MD5: 92:5A:6E:58:CF:45:B5:2C:7B:23:BB:75:96:E3:9D:C0
检查你微信回调的WXPayEntryActivity 是不是在你根目录+wxapi的包下
根目录-》就是你配置文件里的package 一定要匹配 否则不走你的回调
还有就是回调的activity必需命名为WXPayEntryActivity
根目录+wxapi.png
mainifest.xml文件.png
开发前的准备安卓sdk下载微信开放平台微信android开发手册微信app开发步骤
这里记录着一个程序媛的成长历程Android 调用微信登陆、支付、分享,出现的白屏、黑屏、闪屏问题。 - WL-鬼 - CSDN博客
Android 调用微信登陆、支付、分享,出现的白屏、黑屏、闪屏问题。
当我在去调用微信的登录界面,或者其他支付界面,WXEntryActivity又一个界面,这样看起来很不协调(WXEntryActivity类finish的时候会有闪屏的效果)。为了让用户感觉只是拉起了一个授权界面,需要加上android:theme=&@android:style/Theme.Translucent&
&&使WXEntryActivity变成透明,这样在跳转的过程中就感觉不到WXEntryActivity的存在了
&!-- wx start --&
android:name=&.wxapi.WXPayEntryActivity&
android:theme=&@android:style/Theme.Translucent&
android:screenOrientation=&portrait&
android:exported=&true&
android:launchMode=&singleTop& /&
android:name=&.wxapi.WXEntryActivity&
android:theme=&@android:style/Theme.Translucent&
android:screenOrientation=&portrait&
android:exported=&true&
android:launchMode=&singleTop& /&
&!-- wx end --&
WXEntryAcitivity变成透明后,在跳转过程中感觉不到它的存在了,但是在调试过程中WXEntryActivity,会自动finish还有如果里面做耗时操作的话(比如根据code请求access_token等),该activity在部分手机不会被finish,并且code has been used....根据调试最好不要在这个activity做耗时操作。
总结:遇到问题分析要认真分析.拿微信的第三方登录闪屏白屏等问题为例:点击微信登录(第一个界面)-----跳转到授权页面(第二个界面),然后在该界面点击确认登录按钮-----回调到WXEntryActivity界面(这个界面会让用户感受到白屏或则闪屏等问题,最好不要做耗时操作)这个界面耗时后调用finish不管用,貌似它自己会自动finish(第三个界面)-----回到了最初的登录界面(第一个界面)。所以只需要解决WXEntryActivituy这个activity成透明,用户就感觉不到它的存在了,也就不会感觉到闪屏以及白屏等问题了。
&另外就是登陆后,或者分享后。
点击返回自己的APP。黑屏的情况下,只能再次点击再能返回到自己的app.
这里的原因就是点击返回的时候,我们在WXEntryActivity 中去判断返回值。根据返回值,去判断,去做页面的处理
当然也是我最近遇到的一个做的时候遇到的一个问题,可能大家遇到的情况都不一样。我这里就分享遇到的问题和处理的方式。
在回调中onResp,这里的话我就去拿到BaseResp.getType().去判断去做处理 & 当然我这里判断拿出来的 分享的返回值是&BaseResp.getType()
== 1;则为微信登陆,
& &BaseResp.getType() == 0;则为微信分享。(当然这里根据自己去判断的为准。其实我不知道这值会不会变)
我的热门文章}

我要回帖

更多关于 第三方h5调用微信支付 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信