安卓 : Paypal implementation

标签 android paypal payment-gateway paypal-sandbox

我正在开发一个应用程序,应用程序的需求是需要在线支付。

我想以印度货币(卢比)向店主支付我申请中的账单金额。 我尝试了一个使用 MPL 的演示示例。

我创建了一个类:

public class MainActivity extends Activity implements OnClickListener {

private boolean _paypalLibraryInit = false;

final static public int PAYPAL_BUTTON_ID = 10001;

CheckoutButton launchPayPalButton;

public static String resultTitle;
public static String resultInfo;
public static String resultExtra;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initLibrary();
    if (_paypalLibraryInit) {
        showPayPalButton();
    } else {
        finish();
    }
}

/** init method **/
public void initLibrary() {
    PayPal pp = PayPal.getInstance();
    if (pp == null) {
        // This is the main initialization call that takes in your Context,
        // the Application ID, and the server you would like to connect to.
        pp = PayPal.initWithAppID(this, "APP-80W284485P519543T",PayPal.ENV_SANDBOX);

        // -- These are required settings.
        pp.setLanguage("en_US"); // Sets the language for the library.
        // --

        // -- These are a few of the optional settings.
        // Sets the fees payer. If there are fees for the transaction, this
        // person will pay for them. Possible values are FEEPAYER_SENDER,
        // FEEPAYER_PRIMARYRECEIVER, FEEPAYER_EACHRECEIVER, and
        // FEEPAYER_SECONDARYONLY.
        pp.setFeesPayer(PayPal.FEEPAYER_EACHRECEIVER);
        // Set to true if the transaction will require shipping.
        pp.setShippingEnabled(true);
        // Dynamic Amount Calculation allows you to set tax and shipping
        // amounts based on the user's shipping address. Shipping must be
        // enabled for Dynamic Amount Calculation. This also requires you to
        // create a class that implements PaymentAdjuster and Serializable.
        pp.setDynamicAmountCalculationEnabled(false);
        // --
        _paypalLibraryInit = true;
    }
}

private void showPayPalButton() {
    // Generate the PayPal checkout button and save it for later use
    PayPal pp = PayPal.getInstance();
    launchPayPalButton = pp.getCheckoutButton(this, PayPal.BUTTON_278x43,CheckoutButton.TEXT_PAY);

    // Add the listener to the layout
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    params.bottomMargin = 10;
    params.leftMargin= 50;

    launchPayPalButton.setLayoutParams(params);
    launchPayPalButton.setId(PAYPAL_BUTTON_ID);
    // The OnClick listener for the checkout button
    launchPayPalButton.setOnClickListener(this);

    //((RelativeLayout) findViewById(R.id.RelativeLayout01)).addView(launchPayPalButton);       
    ((RelativeLayout) findViewById(R.id.rl)).addView(launchPayPalButton);
}

@Override
public void onClick(View v) {
    // Use our helper function to create the simple payment.
    PayPalButtonClick(v);
    // Use checkout to create our Intent.
    // Intent checkoutIntent = PayPal.getInstance().checkout(payment, this,
    // new ResultDelegate());
    // Use the android's startActivityForResult() and pass in our Intent.
    // This will start the library.
    // startActivityForResult(checkoutIntent, request);
}

public void PayPalButtonClick(View arg0) {
    // Create a basic PayPal payment
    PayPalPayment payment = new PayPalPayment();

    // Set the currency type
    payment.setCurrencyType("USD");

    // Set the recipient for the payment (can be a phone number)
    payment.setRecipient("abc@gmail.com");

    // Set the payment amount, excluding tax and shipping costs
    payment.setSubtotal(new BigDecimal("1.0"));

    // Set the payment type--his can be PAYMENT_TYPE_GOODS,
    // PAYMENT_TYPE_SERVICE, PAYMENT_TYPE_PERSONAL, or PAYMENT_TYPE_NONE
    payment.setPaymentType(PayPal.PAYMENT_TYPE_GOODS);

    // PayPalInvoiceData can contain tax and shipping amounts, and an
    // ArrayList of PayPalInvoiceItem that you can fill out.
    // These are not required for any transaction.
    PayPalInvoiceData invoice = new PayPalInvoiceData();

    // Set the tax amount
    invoice.setTax(new BigDecimal("0"));
    Intent checkoutIntent = PayPal.getInstance().checkout(payment, this /*, new ResultDelegate()*/);
    this.startActivityForResult(checkoutIntent, 1);
}

public void PayPalActivityResult(int requestCode, int resultCode, Intent intent) {
    if(requestCode != 1)
        return;

    Toast.makeText(getApplicationContext(),resultTitle , Toast.LENGTH_SHORT).show();
}
}

结果委托(delegate)类为:

public class ResultDelegate implements PayPalResultDelegate, Serializable {

private static final long serialVersionUID = 10001L;

/**
 * Notification that the payment has been completed successfully.
 * 
 * @param payKey            the pay key for the payment
 * @param paymentStatus     the status of the transaction
 */
public void onPaymentSucceeded(String payKey, String paymentStatus) {
    MainActivity.resultTitle = "SUCCESS";
    MainActivity.resultInfo = "You have successfully completed your transaction.";
    MainActivity.resultExtra = "Key: " + payKey;
}

/**
 * Notification that the payment has failed.
 * 
 * @param paymentStatus     the status of the transaction
 * @param correlationID     the correlationID for the transaction failure
 * @param payKey            the pay key for the payment
 * @param errorID           the ID of the error that occurred
 * @param errorMessage      the error message for the error that occurred
 */
public void onPaymentFailed(String paymentStatus, String correlationID,
        String payKey, String errorID, String errorMessage) {
    MainActivity.resultTitle = "FAILURE";
    MainActivity.resultInfo = errorMessage;
    MainActivity.resultExtra = "Error ID: " + errorID + "\nCorrelation ID: "
            + correlationID + "\nPay Key: " + payKey;
}

/**
 * Notification that the payment was canceled.
 * 
 * @param paymentStatus     the status of the transaction
 */
public void onPaymentCanceled(String paymentStatus) {
    MainActivity.resultTitle = "CANCELED";
    MainActivity.resultInfo = "The transaction has been cancelled.";
    MainActivity.resultExtra = "";
}
} 

同时下载了 Paypal_MPL.jar 文件并导入到应用程序中并创建了一个 paypal 个人帐户。

<强>1。现在的问题是如何测试应用程序?

<强>2。我在正确的轨道上吗?

<强>3。我还需要做什么?

我不清楚实现 MPL 的步骤以及如何在 Paypal 上创建帐户、测试帐户、将帐户链接到应用程序等

请建议我并指导我。

最佳答案

http://www.androiddevelopersolution.com/2012/09/paypal-integration-in-android.html我希望这能帮到您 。要测试应用程序,您可以检查结果 Activity

关于安卓 : Paypal implementation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18098634/

相关文章:

javascript - 工作和整合 Paypal 支付专业版

php - 如何用stripe api向别人的银行账户汇款

java - "Actions on Google"API 能否打开您的应用程序或显示除 session UI 之外的自定义 UI?

paypal - 付款协议(protocol)说明未在 Paypal 沙盒结帐页面中显示全文

php - Paypal 付款拆分为 2 个合作伙伴

php - 使用ajax将值输入类型文本发送到另一个php文件

android - 如何更改首选项屏幕中的开关按钮颜色?

Android - 响应协助请求

android - 如何在android studio 3.2.1 最新版本中导入谷歌 Material 设计图标?

ruby-on-rails - Stripe 托管帐户 - 错误的国家/地区