zoukankan      html  css  js  c++  java
  • 转-Android微信支付

     http://blog.fangjie.info/android微信支付/

    Android微信支付

    2014-08-09

    一、使用微信官方的提供的demo里的appid等

    1.微信接口上手指南:(从“移动应用开发”->“Android接入指南”)建议,先把官方这篇文章看完
    wxpay1

    2.微信支付接口(从“移动应用开发”->“Android开发手册” )(下载官方demo https://res.wx.qq.com/paymchres/zh_CN/htmledition/download/wxpay/app_wx_pay_tool_android1d902c.zip)

    • Android端接口文档
    • SDK for Android
    • Sample for Android
    • 服务端demo
    • 退款及对账开发指南、退款及对账demo

    结合官方给的demo和《微信支付接口 For Android 上手指南》文档,可以看出,微信支付总共分为4个步骤:
    (1)利用获取APP_ID 和 APP_SECRET 请求获取 access_token

    (2)利用access_token,以及partneridAPP_KEY生成预支付订单

    (3)利用之前的参数以及PARTNER_ID调起微信支付

    (4)支付完成后
    微信会回调 WXPayEntryActivity 的public void onResp(BaseResp resp)方法,所以后续操作,放在这个回调函数中操作就可以了。
    resp.errCode== 0 :表示支付成功
    resp.errCode== -1 :表示支付失败
    resp.errCode== -2 :表示取消支付

    特别注意:

    1.第一次很多同学调试微信的官方demo会遇到这样的问题
    wxpay2
    解决办法https://open.weixin.qq.com/cgi-bin/frame?t=resource/res_main_tmpl&lang=zh_CN&token=bc77c2a9db0380aca7d29b1418fa0bccc23070d7

    (1)、解压sdk demo工程压缩包,并导入到workspace,如下图:
    wxpay3

    (2)、选择Eclipse顶部菜单Window->Preferences,在弹出的对话框中,选择Android目录下的Build,如下图:
    wxpay4
    指定Custom debug keystore选项的路径为sdk demo工程目录中的debug.keystore文件,如下图:
    wxpay5
    并应用该配置。

    (3)、运行该sdk_sample工程。

    wxpay8 wxpay7

    二、当你使用自己申请的appid等参数。

    当你在微信开发平台(open.weixin.qq.com)申请一个普通应用时,你会得到:
    public static final String APP_ID = “wxd930ea5d5a258f4f”;
    private static final String APP_SECRET = “db426a9829e4b49a0dcac7b4162da6b6″;

    当你的应用涉及到微信支付功能是,你需要申请微信支付,申请会有些合同啊什么的,审核通过你会收到邮件,邮件中会有
    private static final String APP_KEY(PaySignKey) = “L8LrMqqeGRxST5reouB0K66CaYAWpqhAVsq7ggKkxHCOastWksvuX1uvmvQclxaHoYd3ElNBrNO2DHnnzgfVG9Qs473M3DTOZug5er46FhuGofumV8H2FVR9qkjSlC5K”; // wxd930ea5d5a258f4f 对应的支付密钥

    除此之外,还有个微信支付商户申请,申请通过后邮件中会回复:
    public static final String PARTNER_ID = “1900000109”;
    private static final String PARTNER_KEY = “8934e7d15453e97507ef794cf7b0519d”;

    然后为了支付的安全起见,最好把支付的前两个步骤放在服务器端完成,客户端请求服务器拿到前两个步骤生成的一些参数,然后在客户端做第三步,调起微信支付。

    特别注意:

    1.可以弹出微信支付的界面,但是支付之后没有进入回调的Activity:WXPayEntryActivity ?

    微信开放平台有个 不成文的规定(文档里没有说明),就是回调的Activity必须是:你的包名(微信demo里是:net.sourceforge.simcpux)+.wxapi.WXPayEntryActivity.java
    其他的接口回调的Activity必须是:你的包名(微信demo里是:net.sourceforge.simcpux)+.wxapi.WXEntryActivity.java

    而且这两个回调的Activity必须要实现IWXAPIEventHandler的接口 。

    2.签名问题,总是弹不出微信支付界面,然后就回调-1 ?
    这个问题多半是签名错误,或者keystore,包名,签名不一致导致。
    wxpay6
    (1)在申请微信开放平台的时候需要填写 应用包名和应用签名(这个签名可以用 apk生成),所以这就需要你用正式的 keystore打包应用测试开放平台的接口。

    (2)再有错误,就是你第二步生成Prepayid时的app_signature 生成错误,仔细看下demo和文档。

    3.注意配置文件中AndroidManifest.xml
    demo里中有这写配置,似乎对微信支付的调起及回调都有影响,还是按照demo里的,加上这部分配置

    三、微信其他接口-分享接口

    用过微信支付接口之后,其他的微信接口就简单多了。微信的分享 分为分享到朋友圈和分享给好友(即发送消息)两种。

    (1)直接调用SDK

    然后调起 分享的对话框之后就是 微信做的操作,分享完成后一样会回到回调的入口,你的包名(微信demo里是:net.sourceforge.simcpux)+.wxapi.WXEntryActivity.java

    你可以在onResp中做分享完成的后续操作。

    (2)还有一种就是不使用SDK方式分享,参见:http://blog.csdn.net/freesonhp/article/details/10296141

    这种方式的缺点就是你得不到回调,不知道分享是否成功,但却是一种简单的方式。

    如果还有其他什么问题:参见另一篇文章 http://blog.csdn.net/janice0529/article/details/38051987

  • 相关阅读:
    treap模板
    Codeforces Round #446 (Div. 2)
    BZOJ 1001: [BeiJing2006]狼抓兔子 (最小割)
    NOIP2017总结
    Python 操作 Mysql 模块
    poj 3660 Cow Contest (传递闭包)
    poj 1964 Cow Cycling(dp)
    poj 3671 Dining Cows (Dp)
    cogs 线型网络(状压dp)
    codevs 2800 送外卖(状压dp)
  • 原文地址:https://www.cnblogs.com/awkflf11/p/4575082.html
Copyright © 2011-2022 走看看