2013-05-02 36 views
0

通常在網站上,我們可以設置通知網址來檢查使用PayPal服務器進行付款。但是,我們如何在應用程序中設置它?我是PayPal應用程序支付的超級新手。在我的android應用中將通知網址設置爲paypal付款

我使用MEP.PayPal

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch(resultCode) { 
    case Activity.RESULT_OK: 
     String payKey = data.getStringExtra(PayPalActivity.EXTRA_PAY_KEY); 
     data.getStringExtra(PayPalActivity.EXTRA_PAY_KEY); 
     Toast.makeText(this,"Paymnet Successful : " + payKey,Toast.LENGTH_LONG).show(); 
     //finish(); 
     break; 
    case Activity.RESULT_CANCELED: 
     Toast.makeText(this,"Paymnet Cancel",Toast.LENGTH_LONG).show(); 
     //finish(); 
     break; 
    case PayPalActivity.RESULT_FAILURE: 
     Toast.makeText(this,"Paymnet Failed",Toast.LENGTH_LONG).show(); 
     String errorID = 
     data.getStringExtra(PayPalActivity.EXTRA_ERROR_ID); 
     String errorMessage = 
     data.getStringExtra(PayPalActivity.EXTRA_ERROR_MESSAGE); 
     //Toast.makeText(getApplicationContext(),errorMessage, Toast.LENGTH_LONG).show(); 
     //finish(); 
     break; 
    } 
} 

所以下Activity.RESULT_OK,我想一個帖子發到我的通知URL,以便在URL中的代碼可以驗證付款。

另外,我得到paykey可以返回交易細節。如果是這樣,那麼我將使用它來進行驗證,而不是使用notify url。但經過多次閱讀後,我仍然無法找到返回交易詳情的答案,例如data.getStringExtra('transaction_id'),data.getStringExtra('merchant_name')等。

回答

0

看完這篇文章後Transaction details from paypal using Pay-key in android

我能夠想出我的解決方案。但我將不得不創建ASYNC類來使其工作。

因此,它是這樣的

public class MyPaypalActivity extends Activity implements OnClickListener { 
String resultExtra; 

//some methods you can fill in yourself to integrate with paypal 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch(resultCode) { 
    case Activity.RESULT_OK: 
     String payKey = data.getStringExtra(PayPalActivity.EXTRA_PAY_KEY); 
     data.getStringExtra(PayPalActivity.EXTRA_PAY_KEY); 
     resultExtra = data.getStringExtra(PayPalActivity.EXTRA_PAY_KEY); 
     new RetreivePaypalData().execute(resultExtra); 

     break; 
    case Activity.RESULT_CANCELED: 

     break; 
    case PayPalActivity.RESULT_FAILURE: 
     Toast.makeText(this,"Paymnet Failed",Toast.LENGTH_LONG).show(); 
     String errorID = 
     data.getStringExtra(PayPalActivity.EXTRA_ERROR_ID); 
     String errorMessage = 
     data.getStringExtra(PayPalActivity.EXTRA_ERROR_MESSAGE); 

     break; 
    } 
} 

    class RetreivePaypalData extends AsyncTask<String, Void, String> { 

      private Exception exception; 

      protected String doInBackground(String... args) { 
       try{ 

        HttpPost httppost = null; 
        httppost = new HttpPost("https://svcs.sandbox.paypal.com/AdaptivePayments/PaymentDetails"); 



        httppost.setHeader("X-PAYPAL-SECURITY-USERID", "mybusiness_blalbal.fff.cm"); 
        httppost.setHeader("X-PAYPAL-SECURITY-PASSWORD", "3243535554"); 
        httppost.setHeader("X-PAYPAL-SECURITY-SIGNATURE", "AR908E09RG7H0G0GREJ3GH9GHGHDFKGHGIHE99GFDIGHIH34ERGHI"); 
        httppost.setHeader("X-PAYPAL-APPLICATION-ID", "APP-80W284485P519543T"); 
        httppost.setHeader("X-PAYPAL-REQUEST-DATA-FORMAT", "NV"); 
        httppost.setHeader("X-PAYPAL-RESPONSE-DATA-FORMAT", "NV"); 








         // Add your data 
         List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 

         nameValuePairs.add(new BasicNameValuePair("payKey", resultExtra)); 
         nameValuePairs.add(new BasicNameValuePair("requestEnvelope.errorLanguage", "en_US")); 

         httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
        HttpResponse response = Client.getInstance().execute(httppost); 
        HttpEntity entity = response.getEntity(); 
        InputStream is = entity.getContent(); 
        byte[] data1; 
        data1 = new byte[256]; 
        StringBuffer buffer = new StringBuffer(); 
        int len = 0; 
        while (-1 != (len = is.read(data1))) 
        { 
         buffer.append(new String(data1, 0, len)); 
        } 
        Log.e("log_tag",""+buffer.toString()); 

        //Make the comparison case-insensitive. 
        is.close(); 
        }catch(Exception e) 
        { 
         Log.e("Got Error","error "+ e); 
        } 
        Log.e("Paykey","resultExtra "+ resultExtra); 
        return null; 
      } 

      protected void onPostExecute(String d) { 
       // TODO: check this.exception 
       // TODO: do something with the data 
      } 
     } 
} 

只是一個粗略的解決方案。需要調整。