Android 微信支付

Android 微信支付Android调用微信支付   由于官方资料太乱而且有些bug解释很不完善,又没有人工客服技术支持,网上的资料也是零零碎碎转来转去,没有博客就写篇日志记录一下,顺便喷一句,腾讯的东西真的太坑了,以下是整体流程和个人认为比较容易出错的地方的个人总结:1.后台设置  申请开发应用完成后,使用商户账号登录,可以创建APP,其中以下两项是必填的,而且不是随便填的

大家好,欢迎来到IT知识分享网。

Android调用微信支付
   由于官方资料太乱而且有些bug解释很不完善,又没有人工客服技术支持,网上的资料也是零零碎碎转来转去,没有博客就写篇日志记录一下,顺便喷一句,腾讯的东西真的太坑了,以下是整体流程和个人认为比较容易出错的地方的个人总结:

1.后台设置

    申请开发应用完成后,使用商户账号登录,可以创建APP,其中以下两项是必填的,而且不是随便填的

    
图片


    (1)应用包名:填写Manifest中的package; 
    (2)应用签名:首先从官网下载GenSignature(一个android程序),运行改程序,在输入框中输入

Manifest中的package名,点击”Get Sginature”生成的绿色字符串就是应用签名;
(下载

GenSignature的地址:    
https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=11_1
)


2. 下载微信官网的demo(也在下载
GenSignature的地方
),导入到eclipse,之后的操作直接改官方demo就行了


(1)修改Manifest:    更改<data>标签中的android:scheme属性,值为APP申请成功后返回的AppId值,如(wx89dadj29839asdj4
)
(2)修改Constants(Java类):    该类工需要三个属性 (都是String,都是常量)
                                                ① 
APP_ID:与上一步陈述相同    (
申请创建APP后微信官方派发)


                                                ② MCH_ID:商户号    10位数字(商户创建成功后微信官方派发)


                                                ③ API_KEY:API密钥    这个值是在商户平台设置的 相同即可(自定义)
3.在PayActivity做相应修改
    packageParams.add(new BasicNameValuePair(“appid”, Constants.APP_ID)); 
    packageParams.add(new BasicNameValuePair(“mch_id”, Constants.MCH_ID)); 

大致为以上三步,如果还有bug,可能是以下原因:
1.点击APP支付生成预支付订单返回”prepay_id=null”,这个应该比较好解决 就是上述步骤没有设置对
2.如果只有第一次能够成功支付,之后均返回-1很可能是keystore问题,网上有种方式是清空微信缓存,确实清空一次能用一次,但是这种用户体验显然不合适,支付一次微信完全清空一次不太合适吧…
点击调起微信支付时,直接跳转到回调界面(WXPayEntryActivity)并返回-1,这里就是腾讯没有任何说明的地方了,可以尝试以下步骤:
    (1).Window->Preferences-> Android->Build->Custom debug keystore点击浏览,选择到下载demo的文件加下找到demo文件夹下的debug.keystore(默认是android文件夹下的debug.keystore需要更换),点击完成
    (2) 如果还是不行,右键项目名->Android Tools->Export Signed Application Package,选择项目,下一步->Use existing keystore,选择成demo文件夹下的debug.keystore,导出生成apk,之后再运行一边GenSignature程序输入Manifest中的包名,看生成的应用签名是不是变了?如果是可能就是keystore的问题,将生成的新的应用签名同步到微信官网上的“微信开放平台-管理中心-移动应用”-“开发信息”-“应用签名”即可图片
4.若在更改微信官方demo中参数后,出现签名错误的情况,可以尝试把提交的xml数据转换成

ISO8859-1格式:
    

return new String(xmlstring.getBytes(),”ISO8859-1“); 
    参考:

http://blog.csdn.net/qiwenmingshiwo/article/details/41902551 ;
5. 如果更改notiy_url出现签名错误的话,可能是因为url中携带的键值对参数使用了”&”符号连接两个kv对,换成其它符号即可(“=”符号不影响,其它的没试过)
6.支付如果可以成功,那么根据腾讯安全性要求,应该把
统一下单API、支付结果通知API和查询订单API这些设计到签名的过程放到服务器做,防止客户端被反编译
第一次写技术性文章 请各位大神多多包涵 


免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/12440.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信