2013-05-02 3 views
0

일반적으로 웹 사이트에서 paypal 서버로 지불을 확인하기 위해 알림 URL을 설정할 수 있습니다. 그러나 앱에서 어떻게 설정합니까? 나는 paypal 앱 지불에 새로운 슈퍼 다. 나는 그래서 Activity.RESULT_OK에서 내 안드로이드 앱에서 페이팔 결제로 알림 설정

@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; 
    } 
} 

MEP.PayPal

을 사용하고

, 나는 URL의 코드가 지불을 확인할 수 있도록 내 통지 URL에 게시물을 보내고 싶습니다.

또한 paykey가 거래 내역을 반환 할 수 있습니다. 그렇다면 알림 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 
      } 
     } 
} 

그냥 거친 솔루션 같은 것입니다. 조정할 필요가 있습니다.

관련 문제