Android app 第三方微信支付接入详解
来源:互联网 发布:java接口的定义 编辑:程序博客网 时间:2024/05/16 16:15
微信支付做了好几遍了,都没有出现什么棘手的问题,下面一一为大家分享一下,欢迎吐槽。
还是老样子,接入微信的支付要第一步添加微信支付官方的包libammsdk.jar
首先就处理略坑的一个问题,app应用签名和包名的问题。
商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID。由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。设置界面在【开放平台】中的栏目【管理中心 / 修改应用 / 修改开发信息】里面。
如图:
应用包名:是在APP项目配置文件AndroidManifest.xml中声明的package值。
应用签名:根据项目的应用包名和编译使用的keystore,可由签名工具生成一个32位的md5串,在调试的手机上安装签名工具后,运行可生成应用签名串,如图所示,绿色串即应用签名。签名工具下载地址https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk,下载到手机上运行(该手机上必须要有你正式打包签名的那个apk),如下图;
然后把该值填写到微信开放平台里的应用签名那里。
还有一种获取签名的方法;
在Studio工具里面开发的话,在Terminal 窗口里面输入命令 keytool -v -list -keystore keystore.jks(keystore.jks是你签名的时候生成的文件,写上你自己文件的名字),运行即可看到。MD5;…一大串数……这样的一串,这就是签名。;
在eclipse工具里面开发的话。打包的时候会看到的。MD5;…一大串数……(去掉里面的冒号,大写改成小写的填到微信开放平台里的应用签名那里)
一。配置文件Androidmanifest
<activity android:name=".teacher.ui.PayActivity" android:label="@string/app_name" android:exported="true" android:launchMode="singleTop"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="wx690b9cf56a4ec056"/> //写入你的appid </intent-filter> </activity>
二。调起微信支付
PayActivity里面
在onCreate里面初始化IWXAPI
public static final String APP_ID = "wx690b9cf56a4ec056"; private IWXAPI api; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_affirm_order); api = WXAPIFactory.createWXAPI(AffirmOrderActivity.this, APP_ID, true); api.registerApp(APP_ID); }
发起支付代码
你没有看错,就只有这么点代码,里面需要的值你们自己的后台会返回的,拿过来塞到里面就好
PayReq req = new PayReq(); req.appId = APP_ID; req.partnerId = ""; req.prepayId = ""; req.packageValue = ""; req.nonceStr = ""; req.timeStamp = ""; req.sign = ""; api.sendReq(req); //以上代码就是发起微信支付的方法
三。支付结果的处理
这里面分为两步1,微信提供的支付结果的类叫WXPayEntryActivity, 微信开放平台有个 不成文的规定(文档里没有说明),就是回调的Activity必须是:你的包名+.wxapi.WXPayEntryActivity.java
如下;
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{ private IWXAPI api; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText("支付结果"); setContentView(tv); api = WXAPIFactory.createWXAPI(this, AffirmOrderActivity.APP_ID); api.handleIntent(getIntent(), this); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); api.handleIntent(intent, this); } @Override public void onReq(BaseReq req) { } @Override public void onResp(BaseResp resp) { if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("提示"); builder.setMessage(getString(R.string.pay_result_callback_msg, String.valueOf(resp.errCode))); builder.show(); } }}//回调中errCode值// 0 成功 展示成功页面//-1 错误 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。//-2 用户取消 无需处理。发生场景:用户不支付了,点击取消,返回APP。
2,在配置文件Androidmanifest注册WXPayEntryActivity
<activity android:name="(你的包名).wxapi.WXPayEntryActivity" android:exported="true"//这一句一定不能少 android:launchMode="singleTop" />
至此app端的微信就搞定了,当然还有后台去回调,但是和app没关系。
欢迎入群一起学习 QQ群 548629089
- Android app 第三方微信支付接入详解
- Android app 第三方支付宝支付接入
- android app 接入支付宝
- app 微信支付接入详解
- Android应用接入Bmob第三方支付
- Android支付接入:Google In-app-Billing
- Android接入第三方微信
- Android:微信和支付宝的APP支付接入
- Android 支付宝支付、微信支付、银联支付 整合第三方支付接入方法
- App接入支付宝
- 支付宝-APP支付接入
- app 支付宝支付接入
- android 支付宝sdk接入详解
- Android第三方支付——支付宝APP支付
- android app 快速接入支付宝流程(android studio)
- Android支付接入(七):Google In-app-Billing
- Android支付接入(七):Google In-app-Billing
- Android支付接入(七):Google In-app-Billing
- 剑指Offer----面试题一:为类添加赋值运算符函数
- Android基础之drawable标签的使用下
- Mesos Framework开发指南 一
- opencv获取图像的指针
- html中的框架集
- Android app 第三方微信支付接入详解
- 第10.11周项目5--摩托车继承自行车和机动车
- 73. Minimum Height Trees
- UNICODE环境下将宽字符CString转换为char*
- 《C++精英内参之程序员高效指南》-11常用的读代码方法除了写注释的,还有其他方法
- 修改默认浏览器滚动条
- 使用TextInputLayout创建一个登陆界面
- Python 进阶 —— 魔法函数
- Python中list,tuple,dict用法