【安卓】微信支付相关文档整理

【2015年11月6日 星期五】


1、开发过程中遇到的一些问题:

现在微信支付已经是V3,但是网上有些Demo还是V2的,升级之后,一些参数已经发生改变,具体看微信支付FAQ,要注意。

http://kf.qq.com/faq/140225MveaUz150413VNj6nm.html


微信APP支付,是通过打开微信,来支付,并不提供网页版支付界面。

所以使用微信支付,需要用户手机安装有微信。


几个主要参数:

APP_ID,微信开放平台提交的APP,会有一个APPID;

MCH_ID,申请成功之后,微信给你的邮件中有商户号ID;

API_KEY,这个是微信商户平台上的API秘钥;


关于Demo的使用。


1)

https://github.com/joefei/WeiXinPay(运行APP需要自己APP的签名、APP_ID、API_KEY、MCH_ID,所以只是做了一些注释,并不能运行)

流程:

需要先获得预支付订单的ID;

然后生成支付签名;

最后才能调起支付,进入微信的支付界面。


2)

还有,demo这里的APP_ID的参数是null,如下(可以去API文档查参数的说明):

final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);
请将官方提供的上面这段代码改为如下代码:
final IWXAPI msgApi = WXAPIFactory.createWXAPI(this,"wxd930ea5d5a258f4f", false);


另外,WXPayEntryActity、AppRegister中的该参数也都为null,APP_ID都已经用常量了,为什么还要留null呢?


3)

在做支付回调步骤的时候,接口回调的WXEntryActivity必须是:

你的包名(在开放平台提交的APP的设置的包名)+.wxapi.WXEntryActivity.java


4)Demo,预支付步骤中,在生成sign的时候,少了商户号的参数。所以调试之前,先把API文档看清楚,那些参数是必填的;


在获取预支付ID的时候,返回了“签名错误”,原因是我的参数没有按ASCII编码排序;

由于微信支付提供的demo少了商户号的key,我就自己加上了,但文档没看仔细,结果没有按照ASCII编码顺序排序。

导致生成的sign和在线校验工具生成的不一致。

将参数名重新排序后,生成的sign就正确了。




----------------------------



关于微信支付的签名部分的文档:


1、签名算法

https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=4_3

2、微信支付接口调试工具(线签名验证工具)

https://pay.weixin.qq.com/wiki/tools/signverify/


3、APP微信支付返回“签名错误”的问题

网上提供了几种问题原因:

1)参数名ASCII码未按升序排列。

2)或者是生成MD5字符串没有toUpperCase转换为大写。

这种问题解决方法很简单,到微信官网上用校验工具校验即可。

3)key错误。

这里特别注意,公众平台的密钥和商户号的密钥是不一样的!!!

微信支付审核成功之后会收到一封邮件,邮件中有appid 商户号,商户后台登录上号和密码。

登录到商户后台:账户设置-安全设置-切换到API安全,下载证书,下面有一个api密匙,进去填写一个字符串 ,保存,后续两次签名都是用的这个手动设置的key!!!

4)还有就是中文编码问题;

微信native方式支付中body为中文时签名错误解决方法
http://blog.csdn.net/qiwenmingshiwo/article/details/41902551



----------------------------


微信支付相关文档整理.


官方文档(将文档看仔细是很重要的,比如签名的算法、必填的参数、注意事项等)

【微信开放平台】(用于管理APP,ID和签名,微信支付属于微信开放平台的一部分)

mch_id=微信支付商户号

【Android接入指南】
1、申请AppID(开发者登记、应用审核);
2、下载SDK(libammsdk.jar、API、界面小工具源码);
3、IDE配置;
1) AndroidManifest:网络访问权限、磁盘读写权限、手机读取权限;
2)注册到微信:
public static final String APP_ID = "wx1234123412341234";//申请到的官方AppID;
private IWXAPI api;//APP与微信通信的OpenAPI接口;
private void regToWx(){
api=WXAPIFactory.createWXAPI(this,APP_ID,true);//实例化
api.registerApp(APP_ID);//注册到微信
}
3)通信
IWXAPI的
boolean sendReq(BaseReq req) ;//请求
boolean sendResp(BaseResp resp);//响应



【接入微信支付的步骤】(非开发步骤,需公司完成接入):
首先去开放平台注册账号,
然后公司的资质认证,
然后提交需要微信功能的APP,获得对应的AppID;
最后提交申请资料,才能开通此APP的微信支付功能;

得到商户/公司申请的微信支付的API证书:


【微信支付开发文档】:

微信支付之APP支付(场景介绍、案例及规范、业务流程、API文档、APP端开发步骤)
1、后台申请APPID
2、应用包名,AndroidManifest.xml中的package值;
3、应用签名;
2、

SDK下载(微信支付APP支付示例、Android头文件和库下载)

Android头文件和库文件下载地址:



微信支付开发常见问题:



-----------------------------


〇参考文档:


方倍工作室(微信公众平台开发)

Android微信支付高速集成案例及有效解决返回值-1

注意:
final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);
请将官方提供的上面这段代码改为如下代码:
final IWXAPI msgApi = WXAPIFactory.createWXAPI(this,"wxd930ea5d5a258f4f", false);

//API说明,
static IWXAPI createWXAPI(Context context, String appId, boolean checkSignature) 

android应用集成微信支付

坑爹的微信支付v3,其实没有那么坑

到处都是坑的微信支付V3


Android微信支付V3版
 // 最关键的一步,我们要把最终发送的数据字符转为字节后,再使用“ISO8859-1”进行编码,得到“ISO8859-1”的字符串,否则有可能有“签名错误”的问题
byte[] buf = Util.httpPost(url, new String(toXml(nvps).getBytes(),"ISO8859-1"));


微信native方式支付中body为中文时签名错误解决方法

微信开放平台有个 不成文的规定(文档里没有说明),就是回调的Activity必须是:你的包名(微信demo里是:net.sourceforge.simcpux)+.wxapi.WXPayEntryActivity.java
其他的接口回调的Activity必须是:你的包名(微信demo里是:net.sourceforge.simcpux)+.wxapi.WXEntryActivity.java

Android微信支付
http://fangjie.info/android微信支付


微信支付 for android 集成笔记( 集成遇到问题记录)
安全性设计,
把一些重要的东西放到服务器生生成,这样是为防止客户端被反编译。
反编译之后,带来的就是别人拿到key 模拟支付过程,把某个订单号支付完成。
那么,腾讯那边收到钱就会同时给客户端 和我们自己的服务器发送请求。
那么,我们自己的服务器收到腾讯的通知之后,就会把这个订单的状态置为已经支付。
就是因为订单信息在我们的服务器上,腾讯不知道订单的价格,他只管收钱就行了。
也就是支付的时候100元的订单,修改价格为1元之后,也可以支付成功。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值