微信支付集锦
来源:互联网 发布:电脑小白编程软件 编辑:程序博客网 时间: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,再生成签名参数,然后发起微信支付
- 微信支付集锦
- 微信、支付宝支付
- 支付宝,微信支付
- 微信支付【支付模式】
- 微信支付Jsapi支付
- 微信支付-刷卡支付
- 微信支付JSAPI支付
- 微信支付 h5 支付
- 支付--微信APP支付
- 微信支付:手机支付
- 支付宝 微信支付
- 支付宝-微信支付
- 微信支付返回-1的问题集锦与各种爬坑过程
- 微信支付与支付宝支付
- 支付宝支付与微信支付
- 微信支付和支付宝支付
- 微信支付与支付宝支付
- 支付宝支付和微信支付
- 【CF 675D】 Tree Construction(离线二分+左右指针)
- Scala 课堂!
- [转]Innodb index
- Ibatis自我关联
- 形、音、义的纠葛——《语文常谈》读书笔记(3)
- 微信支付集锦
- 深入JVM内核
- scanf 用法及陷阱(转)
- Codeforces 675D Tree Construction【构造,BST】
- xcodebuild命令打包失败解决方法
- fiddler进行断点调试
- android Event Bus解耦android模块
- iOS到Android到底有多远
- 欢迎使用CSDN-markdown编辑器