android端集成paypal

因為最近項目中需要集成paypal,所以集成了一下,發(fā)現(xiàn)網(wǎng)上的有些文章過于老舊,所以自己寫一篇踩坑記,首先是去官網(wǎng)申請賬號,到時候會分配給你一個client_id
以上準備都做好了 就新建一個項目

  1. 引入paypel的包
compile('com.paypal.sdk:paypal-android-sdk:2.15.3') 
{ exclude group: 'io.card'    }//  如果不想支持信用卡支付 就加上這句話
  1. 新建一個activity 配置
private static PayPalConfiguration config = 
new PayPalConfiguration()
 .environment(PayPalConfiguration.ENVIRONMENT_SANDBOX)
.clientId("<YOUR_CLIENT_ID>");

這里就輸入你的client_id

3.然后在oncreate中開啟服務(wù)

// 開啟PayPal服務(wù)
        Intent intent = new Intent(this, PayPalService.class);
        intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, paypalConfig);
        startService(intent);

4.買東西


    public void onBuyPressed(View pressed) {
        //創(chuàng)建支付對象,用于傳過去給PayPal服務(wù)器進行收款
        PayPalPayment thingToBuy = getThingToBuy(PayPalPayment.PAYMENT_INTENT_SALE);
        Intent intent = new Intent(this, PaymentActivity.class);
        intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, paypalConfig);
        intent.putExtra(PaymentActivity.EXTRA_PAYMENT, thingToBuy);
        //這里直接調(diào)起PayPal的sdk進行付款操作
        startActivityForResult(intent, 1);
    }

    //這里只傳一個總價格或者單個產(chǎn)品的信息收款情況
    private PayPalPayment getThingToBuy(String paymentIntent) {
        return new PayPalPayment(new BigDecimal("0.01"), "USD", "sample item",
                paymentIntent);

    }

    //這里是購買一系列產(chǎn)品創(chuàng)建購買對象
    private PayPalPayment getStuffToBuy(String paymentIntent) {
        PayPalItem[] items =
                {
                        new PayPalItem("sample item #1", 2, new BigDecimal("87.50"), "USD",
                                "sku-12345678"),
                        new PayPalItem("free sample item #2", 1, new BigDecimal("0.00"),
                                "USD", "sku-zero-price"),
                        new PayPalItem("sample item #3 with a longer name", 6, new BigDecimal("37.99"),
                                "USD", "sku-33333")
                };
        BigDecimal subtotal = PayPalItem.getItemTotal(items);
        BigDecimal shipping = new BigDecimal("7.21");
        BigDecimal tax = new BigDecimal("4.67");
        PayPalPaymentDetails paymentDetails = new PayPalPaymentDetails(shipping, subtotal, tax);
        BigDecimal amount = subtotal.add(shipping).add(tax);
        PayPalPayment payment = new PayPalPayment(amount, "USD", "sample item", paymentIntent);
        payment.items(items).paymentDetails(paymentDetails);
//--- set other optional fields like invoice_number, custom field, and soft_descriptor
        payment.custom("This is text that will be associated with the payment that the app can use.");
        return payment;
    }

5.接收回調(diào)

 /**
     * 接收支付結(jié)果的回調(diào).
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == 1 && resultCode == Activity.RESULT_OK) {
            PaymentConfirmation confirm =
                    data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);
            if (confirm != null) {
                try {
                    //這里可以把PayPal帶回來的json數(shù)據(jù)傳給服務(wù)器以確認你的款項是否收到或者收全
                    //可以直接把 confirm.toJSONObject() 這個帶給服務(wù)器,
                    //得到服務(wù)器返回的結(jié)果,你就可以跳轉(zhuǎn)成功頁面或者做相應的處理了
                    Log.i(TAG, confirm.toJSONObject().toString(4));
//                    confirm.toJSONObject().toString();
                    Log.i(TAG, confirm.getPayment().toJSONObject().toString(4));
                    Log.i(TAG, confirm.toJSONObject().toString());
                } catch (JSONException e) {
                    Log.e(TAG, "an extremely unlikely failure occurred: ", e);
                }
            }
        } else if (resultCode == Activity.RESULT_CANCELED) {
            Log.i(TAG, "The user canceled.");
        } else if (resultCode == PaymentActivity.RESULT_EXTRAS_INVALID) {
            Log.i(
                    TAG,
                    "An invalid Payment or PayPalConfiguration was submitted. Please see the docs.");
        }


    }

6.注銷service

 @Override
    protected void onStop() {
        stopService(new Intent(this, PayPalService.class));
        super.onStop();
    }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • 2019.5.7 更 評論說官方在github的demo和sdk已經(jīng)無法下載。去看了下,被archive了。官網(wǎng)逛...
    yzhxcql閱讀 17,878評論 80 64
  • 太長了,還是轉(zhuǎn)載吧...今天在看博客的時候,無意中發(fā)現(xiàn)了@Trinea在GitHub上的一個項目Android開源...
    龐哈哈哈12138閱讀 20,394評論 3 283
  • 柳依依領(lǐng)著眾人一進來,金花就過來說道:“有請陳爺?shù)皆u委席就坐!” 陳爺笑道:“金花,莫要瞎忙活,爺今天只...
    貓步先生閱讀 265評論 0 3
  • 楚純在黃河南,遙振在渤海北。從前如此,現(xiàn)在如此。 楚純是個姑娘,遙振是個好男孩,他們在一個涼爽的秋里遇見。...
    柳酒閱讀 532評論 0 0

友情鏈接更多精彩內(nèi)容