android 微信 支付 接入流程总结

[TOC]

客户端微信支付

android 接入微信指南
android 资源下载页
微信支付 开发文档

  1. 登录微信官方开放平台微信,注册账号,在微信开放平台申请应用,输入已上线app的正式的应用包名和签名,微信提供了一个签名工具,一般使用它提供的签名工具生成签名,然后填写到对应的位置。。android微信接入指南,对于微信支付,还需要用户单独申请微信支付的功能,填写信息,签约等等。。
  2. 准备完成之后,会获取到相应的appId appSecret 商户秘钥,商户Id等。。APP支付接入指南
    需要注意的一点是,微信支付分为好几种扫描支付 公众号支付 app支付等,但是他们并不一样,公众号支付和扫码支付是在公众号注册用户,申请支付,而APP支付是在微信开放平台进行申请的。。请不要搞混乱,我因此乱了两周了。。。
  3. 一切准备完毕,接下来就进入正式的开发,我们的流程是,客户端预定商品,服务器生成订单号OrderId,然后根据此订单号,由服务器去统一下单,生成预支付订单,然后由服务器把需要调起支付页面的7个参数通过json格式传给客户端。。
{
                                                     "package": "Sign=WXPay",  包名
                                                    "timestamp": 1476092570,  随机时间
                                                    "sign": "6960633xxxxxxxx7F6FA1EFxxxxx2D72",  签名
                                                    "partnerid": "13xxxxxx1",  商户id
                                                    "appid": "wxxxxxxxxxx4e7d",  appid
                                                    "prepayid": "wx201610xxxxxxxx0663390994",  预支付订单号
                                                    "noncestr": "36a0de4b95314703881d051668a8"  随机字段值
                                                }
  1. 接下来就是客户端对微信端的工作了。。下载微信SDK ,然后添加到项目中。。或者使用build导入的形式
  2. 跟微信登录和分享是一样的,同样在包名下新建一个package - 包名.wxapi,在这个新包下创建两个类,WXPayEntryActivity,WXEntryActivity,这两个类主要是用来获取微信支付,微信登录分享之后的回调。。还需要在配置文件下对此类进行声明,主要是说明能够让外部引用。。 android:exported="true"
   <activity
            android:name=".wxapi.WXPayEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:launchMode="singleTop"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
        </activity>
  1. 下面是配置微信登录分享的信息
            android:name=".wxapi.WXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
  1. 配置也配置好了,接下来就是在对应的类中的onResp()方法中,对返回的errorCode进行解读,不同的code代表不同的意思。。
switch (resp.errCode) {
            case 0:
                result = "支付成功!!!";
                break; //支付成功
            case -1:
                result = "支付失败!!!";
                break; //支付失败
            case -2:
                result = "取消支付!!!";
                break; //取消支付
        }
        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
            AlertDialog.Builder builder = new AlertDialog.Builder(WXPayEntryActivity.this);
            builder.setMessage(getString(R.string.pay_result_callback_msg, result));
            builder.setTitle("支付结果");
            builder.setPositiveButton(WXPayEntryActivity.this.getString(R.string.ok), new DialogInterface.OnClickListener() {
                @Override
                public void onClick(final DialogInterface dialog, int which) {
                    dialog.dismiss();
                    WXPayEntryActivity.this.finish();
                }
            });

            builder.create().show();
        }
  1. 一切准备完成,下面就是发送支付请求,调起支付界面了。。
    由于是服务器把所有的参数都准备好,所以只需要解析服务器数据即可。。
    但是在发送微信请求之前需要根据appid创建IWxapi,然后注册。。。一般使用全局的wxapi实例,所以可以在Application中对微信进行注册。。
IWapi wxapi = WXAPIFactory.createWXAPI(this, Constants.SOCIAL_WECHAT_APP_ID, true);
 wxapi.registerApp(Constants.SOCIAL_WECHAT_APP_ID);

//根据服务器返回的数据,调起支付

  PayReq req = new PayReq();
                req.appId = JsonUtil.getStringValue("appid", jsonObject);
                req.partnerId = JsonUtil.getStringValue("partnerid", jsonObject);
                req.packageValue = "Sign=WXPay";
                req.nonceStr = JsonUtil.getStringValue("noncestr", jsonObject);
                req.timeStamp = JsonUtil.getStringValue("timestamp", jsonObject);
                req.prepayId = JsonUtil.getStringValue("prepayid", jsonObject);
                req.sign =JsonUtil.getStringValue("json", jsonObject);
                Boolean sendResult = App.getContext().wxapi.sendReq(req);
  1. 请求发送结束之后,我们就可以在WxpayEntryActivity中对支付结果做出处理。。
    errotCode有三种选择 0:正常支付 -1:支付失败 -2:取消支付
  2. 下面是一些判断之类的:
if (App.getContext().wxPayApi.isWXAppInstalled()) {
                        if (App.getContext().wxPayApi.isWXAppSupportAPI()) {
                            payByWechat(orderId);
                        } else {
                            App.getContext().showMessage("您当前的微信版本不支持支付");
                        }
                    } else {
                        App.getContext().showMessage("您还未安装微信客户端");
                    }
  1. 微信的签名很大的坑,需要要按照他的签名规则才可以。。微信签名规则
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,049评论 25 707
  • 一、背景介绍 作为一名Android开发,从最初的跌跌撞撞到现在小有所悟,这其中经历过的辛酸苦辣也是一种痛并快乐着...
    freecats08阅读 4,797评论 7 54
  • 今日推荐 经常阅读博客是个好习惯推荐鸿洋CSDN的博客 微信支付相关文章 详细介绍Android开发集成微信支付(...
    MrQ_Android阅读 6,151评论 9 52
  • 平时总是说一束阳光一束阳光,这种抽象的描述今天终于被我用镜头捕捉到了。果然是一束一束的阳光透过葱茏的树木照过来,是...
    王了一一阅读 1,503评论 53 45
  • 下午放学后,我筋疲力尽的,慢慢的在回家的路上走着。走了一会儿,我说实在是走不下去了。发出坚定的决心,今天要去...
    萌萌哒王亚男阅读 204评论 0 0