如何在android中获取访问令牌paypal [英] How to get Access Token paypal in android

查看:24
本文介绍了如何在android中获取访问令牌paypal的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的项目中使用 paypal SDK,我可以从我的应用程序付款,但我无法在付款后获得 access token

I am using paypal SDK in my project,I am able to make payment from my app,but i am not able to get access token after payment,

这是我的 onActivityResult

This my onActivityResult

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_CODE_PAYMENT) {
            if (resultCode == Activity.RESULT_OK) {
                PaymentConfirmation confirm =
                        data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);
                if (confirm != null) {
                    try {
                        Log.i(TAG, confirm.toJSONObject().toString(4));
                        Log.i(TAG, confirm.getPayment().toJSONObject().toString(4));


                        /**
                         *  TODO: send 'confirm' (and possibly confirm.getPayment() to your server for verification
                         * or consent completion.
                         * See https://developer.paypal.com/webapps/developer/docs/integration/mobile/verify-mobile-payment/
                         * for more details.
                         *
                         * For sample mobile backend interactions, see
                         * https://github.com/paypal/rest-api-sdk-python/tree/master/samples/mobile_backend
                         */
                        displayResultText("PaymentConfirmation info received from PayPal");

                        new DownloadLink().execute();


                    } catch (JSONException e) {
                        Log.e(TAG, "an extremely unlikely failure occurred: ", e);
                    }
                }

这就是我尝试获取访问令牌的方式

This is how i trying to get Access Token

 class DownloadLink extends AsyncTask<Void, Void, Void> {


        @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub


         HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("https://api.sandbox.paypal.com/v1/oauth2/token");

            try {
                String text="AUDZWiH7HHihjLqUT3....."+":"+"EDx-t8O2h1.......";
                byte[] data = text.getBytes("UTF-8");
                String base64 = Base64.encodeToString(data, Base64.NO_WRAP);

                httppost.addHeader("content-type", "application/x-www-form-urlencoded");
                httppost.addHeader("Authorization", "Basic " + base64);

                StringEntity se=new StringEntity("grant_type=client_credentials");
                httppost.setEntity(se);

// Execute HTTP Post Request
                HttpResponse response = httpclient.execute(httppost);
                String responseContent = EntityUtils.toString(response.getEntity());
                Log.d("Response", responseContent );

            } catch (ClientProtocolException e) {
// TODO Auto-generated catch block
            } catch (IOException e) {
// TODO Auto-generated catch block
            }
            //Do Your stuff here..
            return null;
        }
    }

我也与 volly 和 CURL 一起使用

I also used with volly as well as CURL

 public void getaccesstokens()
    {
        String clientID="AUDZWiH7H.........";
        String clientSecret="EDx-t8O2h1.....";
        String text=clientID+":"+clientSecret;
        byte[] data = new byte[0];
        try {
            data = text.getBytes("UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        final String base64 = Base64.encodeToString(data, Base64.NO_WRAP);
        StringRequest postRequest=new StringRequest(Request.Method.POST,"https://api.sandbox.paypal.com/v1/oauth2/token",new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {

                Log.d("accessToken:", response);
            }
        },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                        Log.d("error:",volleyError.toString());

                    }
                }){


            @Override
            protected Map<String, String> getParams() throws AuthFailureError {

                Map<String,String> params=new HashMap<String,String>();
                params.put("grant_type","client_credentials");
                params.put("Authorization", "Basic "+base64);

                return params;

            }

            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String,String> headers=new HashMap<String,String>();
                headers.put("Accept","application/json");
                headers.put("Accept-Language","en_US");
                headers.put("Content-Type","application/x-www-form-urlencoded");
                return headers;
            }

        };
        postRequest.setRetryPolicy(new

                DefaultRetryPolicy(60000,
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
        Volley.newRequestQueue(Testones.this).add(postRequest);

    }

使用 Volly 它会在我的 logcat 中显示此错误

Using Volly it shows this error in my logcat

D/error:﹕ com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: Connection closed by peer

推荐答案

这个对我有用,问题是网络连接安全,所以我更换了我的 wifi,它工作得很好

This one worked for me, The issue was with Network connection security,so i changed my wifi, and it works perfectly fine

这就是我收到此错误的原因

That was the reason i was getting this error

NoConnectionError: javax.net.ssl.SSLHandshakeException: Connection closed by peer

代码

HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("https://api.sandbox.paypal.com/v1/oauth2/token");

        try {
            String text="CLIENT ID"+":"+"SECRET ID";
            byte[] data = text.getBytes("UTF-8");
            String base64 = Base64.encodeToString(data, Base64.NO_WRAP);

            httppost.addHeader("content-type", "application/x-www-form-urlencoded");
            httppost.addHeader("Authorization", "Basic " + base64);

            StringEntity se=new StringEntity("grant_type=client_credentials");
            httppost.setEntity(se);

// Execute HTTP Post Request
            HttpResponse response = httpclient.execute(httppost);
            String responseContent = EntityUtils.toString(response.getEntity());
            Log.d("Response", responseContent );

        } catch (ClientProtocolException e) {
// TODO Auto-generated catch block
        } catch (IOException e) {
// TODO Auto-generated catch block
        }

这篇关于如何在android中获取访问令牌paypal的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆