文档章节

android集成微信支付(全是坑)

新年
 新年
发布于 2016/01/04 16:13
字数 565
阅读 787
收藏 5

android集成微信支付(全是坑)


一.   微信开发步骤:
1.注册registerApp
2.获取token 
3.获取prepayid
4.调用sendReq

二.   服务端签名,安卓客户端具体操作如下:
1.Constants.java,MD5.java,PayActivity.jav,util.java拷贝到项目下,复制wxapi/WXPayEntryActivity.java到项目下;
2.修改微信开放平台中后台的包名和签名,可以用腾讯开放平台的签名工具获取签名Gen_Signature_Android.apk
1AndroidManifest.xmlpackage名字和项目包名一样;
2AndroidManifest.xml中添加.wxapi.WXPayEntryActivity(不添加,支付成功后无法跳转到相应的通知Activity界面);
3.具体调用如下:
        else if(url.endsWith(ProtocolConst.WECHAT_PAY))
        {
            JSONObject json = jo.getJSONObject("data");
            String appid = json.getString("appid");
 
            IWXAPI wxApi = WXAPIFactory.createWXAPI(C1_CheckOutActivity.this, appid, true);
            wxApi.registerApp(appid);
            
            if(!wxApi.isWXAppInstalled())
            {
                ToastView toast = new ToastView(C1_CheckOutActivity.this, "没有安装微信");
                toast.setGravity(Gravity.CENTER, 0, 0);
                toast.show();
                return;
            }            
            if(!wxApi.isWXAppSupportAPI())
            {
                ToastView toast = new ToastView(C1_CheckOutActivity.this, "当前版本不支持支付功能");
                toast.setGravity(Gravity.CENTER, 0, 0);
                toast.show();
                return;
            }            
            PayReq req = new PayReq();           
            req.appId            = json.getString("appid");
            req.partnerId        = json.getString("partnerid");
            req.prepayId        = json.getString("prepayid");
            req.nonceStr        = json.getString("noncestr");
            req.timeStamp        = json.getString("timestamp");
            req.packageValue    = json.getString("package");
            req.sign            = json.getString("sign");
            req.extData            = "app data"; // optional
            wxApi.sendReq(req);
        }
4.接收支付结果的WXPayEntryActivity中的onResp函数里处理支付结果:
    public void onResp(BaseResp resp) {
        Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);

        String msg = "";
        
        if(resp.errCode == 0)
        {
            msg = "支付成功";
        }
        else if(resp.errCode == -1)
        {
            msg = "已取消支付";
        }
        else if(resp.errCode == -2)
        {
            msg = "支付失败";
        }
    
        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
             mDialog = new MyDialog(this, "支付结果", msg);
             mDialog.show();

             mDialog.positive.setOnClickListener(new OnClickListener() {
                 @Override
                 public void onClick(View v) {                        
                     mDialog.dismiss();
                     finish();
                 }
             });
             
             mDialog.negative.setOnClickListener(new OnClickListener() {
                 @Override
                 public void onClick(View v) {                        
                     mDialog.dismiss();
                     finish();
                 }
             });
        }
    }
.微信遇到的具体问题:
1.demo中找不到APP_KEY,邮箱发过来的没有此参数,对应文档找到是PaySignKey
2.测试返回的支付结果是-1,可能产生此问题的地方:包名不一致;应用签名和后台不一致。
3.如果是客户端demo测试,记得注意价格单位是分(调用失败),body是中文的时候需要字符转换(返回错误ERR_JSON)。
客户端demo测试返回支付结果-1,记得删除微信缓冲数据(设置-》应用程序管理器->选中微信->清除数据)
可以用demo里的debug.keystore来测试,功能修改目录:preferences->android->build->custom debug keystore->browse。


本文转载自:http://wzheng411411.blog.163.com/blog/static/847898402015218104816291/

新年
粉丝 7
博文 85
码字总数 48791
作品 0
海淀
程序员
私信 提问
Android项目实战(五十):微信支付 坑总结

大部分APP必备需求,使用总结  Android接入文章在此:官方文档   文档很简单,Android分为四步: 1、后台配置 2、Android 内 注册appId 3、Android 内 调起支付 4、Android 内 支付结果回...

听着music睡
2018/08/30
0
0
Android开发:使用EasyPay打造全能移动支付框架

前言 在这之前,笔者发布了两篇移动app支付相关博文,得到一些关注,但是由于博文中代码零碎,有些读者私信博主,以及加笔者qq咨询相关问题。考虑到这些,笔者把之前项目中的支付相关代码从业...

MichaelX
2018/10/30
0
0
Android 微信支付开发流程

首先奉上调起支付页面截图 一:介绍 项目中要用到支付功能,需要支付宝支付、微信支付、银联支付,所以打算总结一下,方便以后的查阅,也方便大家, 用到的地方避免再次被坑。 今天我们就主要...

展菲
2017/11/10
0
0
android产品二次开发

在已有的app产品基础上做二次开发: 1、对接13个接口(接口已经设计好,只需要对接,都是http请求,就是一般的发请求拿数据) 2、福利界面:只需要一个webview加载url就好 3、充值界面(集成...

电饭锅烧豆腐干
2017/08/23
80
1
Android接入微信支付之-1错误码踩坑之旅

一、引言 微信支付文档写的真的棒啊!少林功夫真的好啊! 永远猜不到-1错误码是啥问题。 二、注意事项 1.在开放平台绑定商户的应用签名不像别家SDK使用签名文件的sha1值,而是使用MD5值。并且...

梦半觉
2017/11/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

采坑指南——k8s域名解析coredns问题排查过程

正文 前几天,在ucloud上搭建的k8s集群(搭建教程后续会发出)。今天发现域名解析不了。 组件版本:k8s 1.15.0,coredns:1.3.1 过程是这样的: 首先用以下yaml文件创建了一个nginx服务 apiV...

码农实战
10分钟前
1
0
【2019年8月版本】OCP 071认证考试最新版本的考试原题-第6题

choose three Which three statements are true about indexes and their administration in an Orade database? A) An INVISIBLE index is not maintained when Data Manipulation Language......

oschina_5359
12分钟前
1
0
阿里巴巴开源 Dragonwell JDK 最新版本 8.1.1-GA 发布

导读:新版本主要有三大变化:同步了 OpenJDK 上游社区 jdk8u222-ga 的最新更新;带来了正式的 feature:G1ElasticHeap;发布了用户期待的 Windows 实验版本 Experimental Windows version。...

阿里巴巴云原生
18分钟前
1
0
教你玩转Linux—磁盘管理

Linux磁盘管理好坏直接关系到整个系统的性能问题,Linux磁盘管理常用三个命令为df、du和fdisk。 df df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少...

xiangyunyan
20分钟前
3
0
js 让textarea的高度自适应父元素的高度

textarea按照普通元素设置height是没有作用的,可以这么来设置, 下面给上一段项目代码 JS代码: $.fn.extend({ txtaAutoHeight: function () { return this.each(function () {...

文文1
21分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部