微信支付集锦

来源:互联网 发布:电脑小白编程软件 编辑:程序博客网 时间:2024/06/04 14:11

之前接入微信支付功能时的笔记,将自己查过的资料和遇到的坑做了下总结,好多也是CCCV的别人的
一、实际碰到的一些坑:
微信支付SDK接入时的注意点
1. manifest中的包名要与所申请的包名一致,用下载的签名apk签名时,包名最好不要手写(手写易出现空格等特殊符号)
2. 回调Activity必须是:包名+.wxapi.WXEntryActivity.java
3. 如果使用demo里提供的支付activity,需要将manifest里对应的intent-filter里的appId改为应用申请的appId;
除此之外,还需要加上android:exported=”true”这句话
4. 实际调用时,SDK给的Demo中获取prepayId、生成Req、发起Req均是分开且顺序进行的。实际开发中,需要在获取prepayId的异步任务中传入一个回调作为构造参数,然后回调的结果供生成Req时使用
5. 微信中的1代表1分钱,故需要先*100才能与实际价格相匹配,且要注意要求精确到小数点后几位
String price = “”;
DecimalFormat df=new DecimalFormat(“0”);
price = df.format(Double.parseDouble(Config.MONEY_VALUE)*100);
packageParams.add(new BasicNameValuePair(“total_fee”, price));
6. 传入body时,汉字需先经过加密处理才能避免乱码
在demo的genProductArgs()方法末加上
// 将xml转码,加上这句话后body传入中文时便不会显示签名错误
return new String(xmlstring.toString().getBytes(),”ISO8859-1”);
二、基础&原理
1. 交互时序图
这里写图片描述
2. 步骤
①. 根据APP_ID和APP_SECRET获取access_token
②. 利用access_token,以及partnerId和APP_KEY生成预支付订单
③. 调起微信支付
④. 支付完成,回调WXPayEntryActivity显示支付结果

各重要参数说明:
appId:在开放平台查看,标识申请的应用
partnerId:财付通商户身份的标识
appKey:也叫paySignKey支付请求中用于加密的密钥key,可验证商户的唯一身份
appSecret:获取API权限时所需要的密钥key,在使用所有公众平台API时,都需要先用它去换取access_token
partnerKey:财付通商户权限密钥key
appKey与appSecret的区别:
appSecret是API使用时的登录密码,会在网络中传播;
而appKey是在所有支付相关数据传输时用于加密并进行身份验证的密钥,仅保留在第三方后台和微信后台,不会再网络中传播,而且appKey仅用于支付请求
3. 接口介绍
①. 获取access_token
正常情况下access_token的有效期为7200秒即两小时
Method:GET
Params:需要传入的参数有appId和appSecret
URL:String url = String.format(“https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s“,APP_ID, APP_SECRET);
正确返回格式:
{“access_token”:”xxxx”,”expires_in”:7200}
错误返回格式:
{“errorCode”:40013,”errmsg”:”invalid appid”}
②. 生成预支付订单
在生成预支付订单之前,需要对一些订单信息进行MD5加密
Method:POST
Params:第1步得到的access_token
URL:String url = String.format(“https://api.weixin.qq.com/pay/genprepay?access_token=%s“,accessToken);
PostData:json格式的数据
正确返回格式:
{“prepayid”:”xxxx”,”errorcode”:0,”errmsg”:”Success”}
错误返回格式:
{“errorcode”:48001,”errmsg”:”api unauthorized”}
③. 发起微信支付
④. 接收支付结果

或者集成官方的sdk demo,先获取预支付订单得到prepayId,再生成签名参数,然后发起微信支付

0 0
原创粉丝点击