调用第三方接口~支付宝

你是大神就别看了,浪费时间。


这次遇到 对接支付宝支付,真的很难受。 大家都说简单,确实! 到最后,一大神帮我写了,就几行代码  【捂脸】 ,呵呵了~ 

这几天都睡不好,本来项目说不用接支付的,到后来要了,无语!


废话不多说,开始吧!


--------------------------------------------------------------------------------------------------------------------

前几天后台哥给我一个文档,是接口支付文档,里面有两个链接,还有四个参数。(这是后话:到后来我才知道,两个链接只要其中一个就行了,我就无语了。   我开始以为两个都要用到,都要调用调用第三方接口~支付宝!!  )


然后我看官方文档,要 账号、公钥、秘钥 ,但是我只有 后台哥给的两接口!两接口!心里无语,就只能还是看官方文档了调用第三方接口~支付宝


第一步肯定是下载官方demo啊,然后运行!如图:

调用第三方接口~支付宝调用第三方接口~支付宝

搞毛啊,支付失败!   其实是没有账号、公钥之类的 ,就是这些如图:

调用第三方接口~支付宝调用第三方接口~支付宝


然后看着文档、看着demo, 可是我只有两个接口啊!!  没办法,我技术菜,所以就百度啊,结果网上全部都是官网文档拿过来抄一遍,好点的,就写几句,基本上也是官方demo。 调用第三方接口~支付宝 心里顿时无数个神兽在狂奔!!


就算是狂奔那也要接入自己的项目中啊,所以先把官方能用的都拿过来用。  像  SDK、 Manifest、类,都是直接拿过来用的。如图:

调用第三方接口~支付宝调用第三方接口~支付宝调用第三方接口~支付宝

调用第三方接口~支付宝

调用第三方接口~支付宝

调用第三方接口~支付宝 因为我没有账号之类的,所以支付失败调用第三方接口~支付宝

调用第三方接口~支付宝


好!  这些都拷贝到项目中。然后就做最重要的了。写代码!!


先看效果图吧(如下)

调用第三方接口~支付宝调用第三方接口~支付宝调用第三方接口~支付宝



这个界面主要是 EditText 和 RecyclerView ,按钮是TextView。

界面的话说起来也简单,没什么难的,网上搜索一大堆,就不说了。这篇文章主要说对接 后台哥 给的接口,让我吐血几桶的接口!!调用第三方接口~支付宝


还是看文档吧:调用第三方接口~支付宝

orderInfo 是订单信息,难道是把 支付接口放在这里?  错!

这里是拼接订单信息的变量,肯定是要放在点击事情中,例如官方demo的点击事件:调用第三方接口~支付宝


经过一段时间的研究,我基本上弄懂了,但是要前面说的账号之类的,而我只有两个接口和四个参数。 摸瞎调用第三方接口~支付宝  没办法,就各种试~ 结果还是不行。 然后去群里问,结果被人鄙视了。说对接支付宝最简单,好简单。就微信难点。我艹,简单你就帮忙啊,帮我搞一下,我还说了有偿呢!!又不是白占用你时间,我知道大神的时间宝贵。多的没有50-100 肯定是有的(我最近搬家交三付一、买了电瓶车,才过几天就被碰瓷的人讹了500大洋,不说别的,只怪自己不小心、又要还房贷、搬家后还要买点东西,还借了钱,实在是没有多的,但是50-100 还是有的),就当作请大神吃饭吧,可是没有人。 到昨天终于有个大神帮忙了(后话:大神人真的非常好,就是不给我  支付宝账号,无赖。 感谢吧!)

不吐槽了~  弱鸡就是弱鸡!


--------------------------------------------------------------------------------------------------------------------------------------------


按我这个界面,要支付的话,肯定要有 订单号、标题、内容、金额。如图:

getOutTradeNo 就是订单号,我看了网上都是以时间来定义订单号的,这也是我看的最多的,但是大神肯定有其他办法,我就选了这个简单的。

payV2(View v)  这是 提交按钮  的点击事件,这个是根据官方demo写的,我觉得这样写真的很省事,就用了。连 类名 我都没改。哈哈哈!

   调用第三方接口~支付宝

调用第三方接口~支付宝      调用第三方接口~支付宝


这四个 变量用 log,.e(); 都是可以打印出来的。这就前进了一小步。


然后就是调用支付接口了。这是后台哥给的接口文档:调用第三方接口~支付宝

调用第三方接口~支付宝


到了这一步,我基本上就抓瞎了,真的不知道怎么弄, 然后在群里问,群里大神说你先搞一个 网络请求, 就是网络结构。 看文档是用get 和 post 请求。然后我在网上找,还是不会对接。

终于就在昨天,一个大神伸出援助之手!!  因为大神说的理论的懂,而且支付逻辑我也知道,就是不会写,然后实在是不想浪费大神时间(大神是真心帮的解答),然后我无耻我说:大神帮我写吧,这样就不会浪费你时间。


诶~



---------------------------------------------------------------------------------------------------------------------------------------------------------------



开始   :是写 map.put();  把要传的值都put 出来。

调用第三方接口~支付宝


还有两个工具类:

HttpUtil 

public static String getUrlParamsByMap(Map<String, Object> map) {
    if (map == null) {
        return "";
    }
    StringBuffer sb = new StringBuffer();
    for (Map.Entry<String, Object> entry : map.entrySet()) {
        sb.append(entry.getKey() + "=" + entry.getValue());
        sb.append("&");
    }
    String s = sb.toString();
    if (s.endsWith("&")) {
        s = s.substring(0, s.length() - 1);
    }
    return s;
}


JsonUtils
  /**
     * 把一个map变成json字符串
     * @param map
     * @return
     */
    public static String parseMapToJson(Map<?, ?> map) {
        try {
            Gson gson = new Gson();

            return gson.toJson(map);
        } catch (Exception e) {
        }
        return null;
    }

    /**
     * 把一个json字符串变成对象
     * @param json
     * @param cls
     * @return
     */
    public static <T> T parseJsonToBean(String json, Class<T> cls) {
        Gson gson = new Gson();
        T t = null;
        try {
            t = gson.fromJson(json, cls);
        } catch (Exception e) {
        }
        return t;
    }

    /**
     * json字符串变成map
     * @param json
     * @return
     */
    public static HashMap<String, Object> parseJsonToMap(String json) {
        Gson gson = new Gson();
        Type type = new TypeToken<HashMap<String, Object>>() {
        }.getType();
        HashMap<String, Object> map = null;
        try {
            map = gson.fromJson(json, type);
        } catch (Exception e) {
        }
        return map;
    }

    /**
     * json字符串变成集合
     * params: new TypeToken<List<yourbean>>(){}.getType(),
     *
     * @param json
     * @param type  new TypeToken<List<yourbean>>(){}.getType()
     * @return
     */
    public static List<?> parseJsonToList(String json, Type type) {
        Gson gson = new Gson();
        List<?> list = gson.fromJson(json, type);
        return list;
    }

    /**
     *
     * 获取json串中某个字段的值,注意,只能获取同一层级的value
     *
     * @param json
     * @param key
     * @return
     */
    public static String getFieldValue(String json, String key) {
        if (TextUtils.isEmpty(json))
            return null;
        if (!json.contains(key))
            return "";
        JSONObject jsonObject = null;
        String value = null;
        try {
            jsonObject = new JSONObject(json);
            value = jsonObject.getString(key);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return value;
    }

}

把这两个类搞好后,还得 加一个

compile 'com.squareup.retrofit2:converter-gson:2.0.1'
,不加的话,肯定报错!


最后最重要的就是这段代码了,就这段代码完成支付:

调用第三方接口~支付宝




(对你有用就点个赞吧,希望能帮到你)