Android 微信支付步骤
以前自己写过微信支付,今天让我用h5调用微信支付,结果还浪费了点时间,虽然时间不长。
1.导入jar包 。微信提供的jar包
2.写你的微信支付的代码,其实如果参数都有了就一段代码:
public void requestWXPay(Context context,OrderModel orderModel) {
IWXAPI api= WXAPIFactory.createWXAPI(context,orderModel.getAppid());
// boolean isPaySupported =api.getWXAppSupportAPI() >= Bui;
// if (!isPaySupported) {
// Toast.makeText(context, "你的手机微信不支持支付,请更新微信后重试", Toast.LENGTH_SHORT).show();
// }
PayReq payReq=new PayReq();
payReq.appId=orderModel.getAppid();
payReq.partnerId=orderModel.getMchid();
payReq.prepayId=orderModel.getPrepayId();
payReq.nonceStr=orderModel.getNonceStr();
payReq.timeStamp=orderModel.getTimestamp();
payReq.packageValue="Sign=WXPay";
payReq.sign=orderModel.getSign();
api.registerApp(orderModel.getAppid());
api.sendReq(payReq);
}
这里面orderModel 是你的后台给你的json数据。
3.解析gson的时间的时候要对时间进行特殊的处理:
Gson gson = new GsonBuilder()
// 2013-09-14 16:45:29
.setDateFormat("yyyy-MM-dd HH:mm:ss")
// .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
.create();
4.写一个你的微信入口
你的应用程序包名.wxapi
里面的activity:
注意:你的清单文件里面的配置要explode 为true,不然你的程序微信不能给你回调
<activity android:name=".wxapi.WXPayEntryActivity"
android:exported="true"
></activity>
package com.chinaCEB.cebActivity.wxapi;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.chinaCEB.cebActivity.R;
import com.tencent.mm.sdk.modelbase.BaseReq;
import com.tencent.mm.sdk.modelbase.BaseResp;
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.sdk.openapi.WXAPIFactory;
public class WXPayEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {
public static IWXAPI api;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wxpay_entry);
if (api==null) {
api=WXAPIFactory.createWXAPI(this, "wx52f8500f7f6d98a7");
}
api.handleIntent(getIntent(), this);
}
@Override
protected void onNewIntent(Intent intent) {
// TODO Auto-generated method stub
super.onNewIntent(intent);
setIntent(intent);
api.handleIntent(intent, this);
}
@Override
public void onReq(BaseReq baseReq) {
}
@Override
public void onResp(BaseResp baseResp) {
int a=baseResp.errCode;
}
}
5.签名 ,包名等问题:
Android stadiO 调试的时候要设置自己的正规的签名,不然不行。
注意:
如果返回-1
可能是因为签名,可能是你的账单什么的不是最新的。所以人家给你返回-1. -1验证失败不只是因为你的签名。很多原因都可以-1
你在微信后台配置的那些参数,就是签名和包名,就是微信校验你可不可以吊起支付的关键。签名就是微信给你的一个工具,然后生成的。做微信支付这个第三方插件这个事情,我做了一件很挫的事情。就是没有在详细设计的时候,消除风险。
项目快做完了,又说什么做不了。好失败的一次。自己想想都不能原谅自己。能不能做不是想当然。还忽略了一个问题,就是你的appid,能不能吊起跟你不同的订单号。
好搓。好搓。当初想第三方支付怎么做的,开始的想法是,人家可以做,我肯定也可以做。后来发现,第三方只是封装了一下,实际上还是不能绕过微信。
注意;Android 最好也好注册微信。这样就可以避免微信的缓存问题。微信的缓存问题是指: 同样的包名,你这次调用微信用的是不对的keystore,如果你不清理缓存,下次调用微信的时候,它就不再去服务器查询你的keystore是不是对的,尽管你可能换的是对的。
微信注册也就是:
final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);
// 将该app注册到微信
msgApi.registerApp(Constants.APP_ID);
这样就可以避免每次用错了签名,每次都要清理缓存。
Android 微信支付步骤的更多相关文章
- 转-Android微信支付
http://blog.fangjie.info/android微信支付/ Android微信支付 2014-08-09 一.使用微信官方的提供的demo里的appid等 1.微信接口上手指南:(从“ ...
- 解决Android微信支付官方demo运行失败
Android微信支付官方demo运行失败,在此简单记录一下解决步骤 1.httpclient错误 官方给的demo是eclipse的,打开之后提示httpclient的错误,我知道在as下解决htt ...
- Android微信支付SDK开发笔记
一.准备工作 1.开发平台及SDK下载 微信开放平台 https://open.weixin.qq.com 下载SDK 微信支付Demo下载 http://pay.weixin.qq.com/wiki ...
- Android微信支付SDK开发
一.准备工作 1.开发平台及SDK下载 微信开放平台 https://open.weixin.qq.com 下载SDK 微信支付Demo下载 http://pay.weixin.qq.com/wiki ...
- Android 微信支付&支付宝支付
由于项目需求,加入这2个功能记录一些需要注意的地方 一.微信支付 微信支付在2016年4月份左右稍微调整了一下支付过程,但是文档却没怎么更新,这也是百度上为什么那么多开发者都说微信是个大坑. 身为一个 ...
- android微信支付总结+自己搭建服务器
1.前期注册操作 1-1:微信开发平台:https://open.weixin.qq.com/ 1-2:创建移动应用 签名获取: 1.将自己的apk签名打包,运行到手机上. 2.将微信支付的签名工具, ...
- Android 微信支付资料收集
老板要求支持微信支付,收集了些资料做后期参考 http://www.360doc.com/content/15/0214/10/7044580_448519997.shtml http://www.t ...
- Android微信支付流程及返回码-1之坑
http://www.51testing.com/html/36/n-3724336.html 之前做微信支付的时候,直接是以库形式引入项目的,虽然一直觉得微信支付的开发文档不太理想,但是印象中也没有 ...
- Android微信支付V3版
由于公司需求做微信APP支付,在集成过程中也遇到各种问题,比如说签名错误,body编码必须为UTF-8.APP端无法调用支付页面直接到支付结果页面.结果为null,code=-1等等: 1.签名错误问 ...
随机推荐
- Spring Cloud入门程序
本文手把手教你,做出第一个Spring Cloud程序,Eureka的简单入门使用 1.创建Spring Starter Project工程 点击next,添加项目名 2.引入Spring Cloud ...
- CentOS6下DHCP服务(一)工作原理及安装配置说明
1.DHCP服务用途 DHCP是Dynamic Host Configuration Protocol的简写,DHCP服务器最主要的工作就是自动地将网络参数分配给网络中的每台计算机,让客户端的计算机在 ...
- leetcode: 数组
1. longest-consecutive-sequence Given an unsorted array of integers, find the length of the longest ...
- 关于nutz跨服务器上传文件
关于nutz跨服务器上传文件 发布于 578天前 作者 yong9664 770 次浏览 复制 上一个帖子 下一个帖子 标签: 无 是这样的,项目在一台服务器,文件要存储到另外一台服务器 ...
- bzoj4943 [Noi2017]蚯蚓排队
题面:http://www.lydsy.com/JudgeOnline/upload/Noi2017D1.pdf 正解:字符串$hash$. 我在考场上写了个$map$的$hash$被卡成$40$分, ...
- ABI是编译器的开发指南
http://blog.csdn.net/soaringlee_fighting/article/details/70214785 1) ABI: 二进制应用程序接口(Application Bina ...
- Mathematica 讲座
Mathematica 讲座笔记本 [下载] 第一章 Mathematica 简介 [观看] [下载] 第二章 Mathematica 界面和编程语言 [观看] [下载] 第三章 符号运算 [观看] ...
- PHP中的生成XML文件的4种方法分享
生成如下XML串 Xml代码 <?xml version="1.0" encoding="utf-8"?> <article> < ...
- C# 命名空间与语句
C#采用命名空间(namespace)来组织程序.命名空间可以嵌套.using指示符可以用来简化命名空间类型的引用.using指示符有两种用法."using System;"语句可 ...
- 2.Mysql集群------Mycat读写分离
前言: Mycat: 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务.ACID.可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群 一 ...