【问题标题】:Android : How do i pass the Payment details?Android : 我如何传递付款细节?
【发布时间】:2012-03-18 23:32:51
【问题描述】:

我正在处理Mobile Express Checkout LIbrary。我只是将我的应用重定向到PayPal 但是,我得到了这样的 -

我现在能做些什么呢?我没有将任何付款细节传递给PayPal 如何传递它以及我如何完成它。有人帮我做这个吗?

【问题讨论】:

  • 更重要的一点是,在 developer.paypal.com 上完成注册后,我们还需要执行两项任务才能在我们的代码中使用它们。 1. 验证该帐户 2. 然后创建一个测试帐户以在我们的代码中使用。
  • @SpK :我正在为我的应用程序实现 MECL,如果您已完成集成,请您指导我,我想知道在 SetExpressCheckout 方法中发送哪些参数以获取身份验证令牌我的服务器?
  • @mirroredAbstraction 你见过this
  • @SpK 是的,我做到了,你使用了 SOAP,我打算使用 NVP,任何想法,顺便说一下,如果你提到你在 setExpressCheckout 方法中传递的参数列表,你会很慷慨它工作
  • @mirroredAbstraction 为此,您必须编写一些将从返回 url 重定向的 php 文件。

标签: android paypal


【解决方案1】:

所以你从 paypal 获得一个 devicetoken,从你的 webservice 获得一个 token?

您使用哪个 PayPal URL 重定向到 PayPal 页面? 因为我在 SANDBOX 模式下遇到了同样的问题.. 没有解决问题,但实时 url 对我有用:

String url = "https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout-mobile&useraction=commit&token=" + token + "&drt=" + deviceToken

token param = 从 web 服务接收到的交易令牌

deviceToken = 你从贝宝获得的令牌

仍然无法弄清楚为什么沙盒对我不起作用..

【讨论】:

  • 我仅使用此代码从 PayPal 获得了设备令牌。见我的code
  • 我认为您的网址参数不正确。我用完整的网址编辑了上面的答案
  • 你是否从你的网络服务中获得了一个令牌,我在你的代码中找不到它..
  • 使用这个code我可以获得devicetoken。 token 这里是什么
  • 以上两个 pastebin 代码仅适用于我的 PayPal 课程。如果我错过了任何方法,请到这里Android People 并详细解释我。
【解决方案2】:

因此,integration guide 是实现此功能的绝佳信息来源。基本上,您向它传递一个包含您要查找的所有项目的 URL。第 16-17 页包含您想要的内容。本质上,您希望向 Paypal 服务器传递一个如下所示的 URL:

API_SERVER_ADDRESS?METHOD=SetExpressCheckout&VERSION=XX.0&USER=API_username&PWD=API_password&SIGNATURE=API_signature&PAYMENTREQUEST_0_AMT=amount&PAYMENTREQUEST_0_CURRENCYCODE=currencyID

API SERVER ADDRESS 似乎是

https://www.paypal.com/cgi-bin/webscr

但是,如果您不想在文件中包含您的用户名和密码,通常的做法是通过网络服务器搭载。

【讨论】:

    【解决方案3】:

    这是完整的代码,可帮助您执行此 paypal 功能。剩下的任务就是在https://developer.paypal.com/上创建一个帐户

    {  
    
          CheckoutButton launchSimplePayment;
          PayPal pp;
          pp = PayPal.getInstance();
    
        if (pp == null) 
        {
            createPaypalObject();
            //pp = PayPal.initWithAppID(this, "APP-80W284485P519543T",PayPal.ENV_SANDBOX);
        }
        else
        {
            pp.setShippingEnabled(false);
            launchSimplePayment = pp.getCheckoutButton(this,PayPal.BUTTON_118x24, CheckoutButton.TEXT_PAY);
            launchSimplePayment.setOnClickListener( this);
            yourLayout.addView(launchSimplePayment);        
    
        }
    
    }   
    
        public void createPaypalObject()
       {
        pp = PayPal.initWithAppID(this, "APP-80W284485P519543T",PayPal.ENV_SANDBOX);
        pp.setShippingEnabled(false);
        launchSimplePayment = pp.getCheckoutButton(this,PayPal.BUTTON_118x24, CheckoutButton.TEXT_PAY);
        launchSimplePayment.setOnClickListener( this);
         handler1.sendEmptyMessage(0);   
    
       }
    
       //do this onClick of that payment button
       {
            PayPalPayment payment = new PayPalPayment();
            payment.setSubtotal(new BigDecimal(price_of_song));
            payment.setCurrencyType("USD");
            payment.setRecipient("abc@gmail.com");  //this id must be created by you on payment.paypal.com, this is trial id.
            payment.setPaymentType(PayPal.PAYMENT_TYPE_GOODS);
            Intent checkoutIntent = PayPal.getInstance().checkout(payment, this);
            startActivityForResult(checkoutIntent, 1);
       }
    
    
    
    /**This function shows the action by payment paypal*/
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch(resultCode) {
    case Activity.RESULT_OK:
    //The payment succeeded
    
            Toast.makeText(this,"Payment has done successfully",Toast.LENGTH_SHORT).show();
    
    break;
    case Activity.RESULT_CANCELED:
    
        Toast.makeText(this,"Payment has cancled",Toast.LENGTH_SHORT).show();
       //The payment was canceled
    
    break;
    case PayPalActivity.RESULT_FAILURE:
    
        Toast.makeText(this,"Sorry Payment failed",Toast.LENGTH_SHORT).show();
       //The payment failed -- we get the error from the EXTRA_ERROR_ID and EXTRA_ERROR_MESSAGE
    
    }
    super.onActivityResult(requestCode, resultCode, data);
    }
    

    如果有任何疑问,请随时问我。

    【讨论】:

    【解决方案4】:

    我已经使用 Sandbox 生成的 WebService 传递了付款详细信息。现在,我遇到了付款流程的新问题。检查我更新的问题。

    【讨论】:

      猜你喜欢
      • 2016-10-24
      • 2015-08-18
      • 1970-01-01
      • 2017-02-16
      • 2019-11-14
      • 2017-11-14
      • 1970-01-01
      • 1970-01-01
      • 2015-04-24
      相关资源
      最近更新 更多