PayPal Android: एक पेपैल / क्रेडिट कार्ड से भुगतान स्वीकार करना


उदाहरण

इस ट्यूटोरियल में हम यह जानना चाह रहे हैं कि किसी पेपैल भुगतान या क्रेडिट कार्ड से खरीदारी के माध्यम से सरल भुगतान की प्रक्रिया के लिए पेपाल एंड्रॉइड एसडीके को कैसे सेट किया जाए। इस उदाहरण के अंत में, आपके पास एक एप्लिकेशन में एक साधारण बटन होना चाहिए, जिसे क्लिक करने पर, उपयोगकर्ता को पेपाल के लिए एक निर्धारित भुगतान की पुष्टि करने के लिए अग्रेषित करेगा, फिर उपयोगकर्ता को आवेदन पर वापस लौटाएं और भुगतान की पुष्टि लॉग करें।

इस उदाहरण के लिए पूरा आवेदन कोड PayPal Developer Github Repository में उपलब्ध है।

आएँ शुरू करें।

पहला कदम एसडीके को अपनी परियोजना में प्राप्त करना और जोड़ना है । हम अपने build.gradle निर्भरता के संदर्भ को इस तरह से जोड़ते हैं:

dependencies {
    compile 'com.paypal.sdk:paypal-android-sdk:2.14.1'
    ...
}

अब हम अपनी MainActivity.java फ़ाइल (या जहाँ भी आप पेपल बटन इंटीग्रेशन को जोड़ना चाहते हैं) को हेड करते हैं, और अपने क्लाइंट आईडी और पर्यावरण (सैंडबॉक्स) के लिए एक config ऑब्जेक्ट में जोड़ते हैं जिसका हम उपयोग कर रहे हैं।

private static PayPalConfiguration config = new PayPalConfiguration()
    .environment(PayPalConfiguration.ENVIRONMENT_SANDBOX)
    .clientId("YOUR CLIENT ID");

अब हम अपनी onCreate(...) विधि में एक बटन बनाने जा रहे हैं, जो हमें एक बार क्लिक करने के बाद पेपाल के माध्यम से भुगतान करने में सक्षम करेगा।

@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final Button button = (Button) findViewById(R.id.paypal_button);
}

अब हमें उस बटन की कार्यक्षमता को परिभाषित करने की आवश्यकता है। अपने res> लेआउट> मुख्य XML फ़ाइल में आप बटन के लिए निम्न परिभाषा जोड़ सकते हैं, जो पेपल_बटन आईडी के साथ बटन के लिए पाठ और ऑनक्लियर हैंडलर को परिभाषित करेगा।

<Button android:id="@+id/paypal_button"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:text="@string/paypal_button"
    android:onClick="beginPayment" />

जब क्लिक किया जाता है, तो बटन beginPayment(...) विधि को कॉल करेगा। फिर हम बटन को अपने स्ट्रिंग्स.xml फ़ाइल में जोड़ सकते हैं, जैसे:

<string name="paypal_button">Pay with PayPal</string>

जगह में बटन के साथ, अब हमें भुगतान प्रसंस्करण शुरू करने के लिए बटन क्लिक को संभालना होगा। निम्नलिखित में जोड़े beginPayment(...) हमारे पिछले नीचे दी गई विधि onCreate(...) विधि।

public void beginPayment(View view){
    Intent serviceConfig = new Intent(this, PayPalService.class);
    serviceConfig.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, config);
    startService(serviceConfig);

    PayPalPayment payment = new PayPalPayment(new BigDecimal("5.65"), 
        "USD", "My Awesome Item", PayPalPayment.PAYMENT_INTENT_SALE);

    Intent paymentConfig = new Intent(this, PaymentActivity.class);
    paymentConfig.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, config);
    paymentConfig.putExtra(PaymentActivity.EXTRA_PAYMENT, payment);
    startActivityForResult(paymentConfig, 0);
}

क्या हम यहाँ क्या कर रहे हैं अप सेवा आशय (पहली सेटिंग है serviceConfig ) का उपयोग कर config है कि हम पहले से हमारे ग्राहक आईडी और सैंडबॉक्स परिवेश के लिए परिभाषित किया गया था। हम उस भुगतान ऑब्जेक्ट को निर्दिष्ट करते हैं जिसे हम प्रोसेस करना चाहते हैं। इस उदाहरण के लिए, हम एक स्थिर मूल्य, मुद्रा और विवरण सेट कर रहे हैं। आपके अंतिम आवेदन में, इन मूल्यों से प्राप्त किया जाना चाहिए कि उपयोगकर्ता आवेदन में क्या खरीदने की कोशिश कर रहा है। अंत में, हम paymentConfig सेट करते हैं, जो कि पहले से परिभाषित किए गए config और payment ऑब्जेक्ट दोनों में जोड़कर, और गतिविधि शुरू करते हैं।

इस बिंदु पर उपयोगकर्ता को पेपाल लॉगिन और भुगतान स्क्रीन के साथ प्रस्तुत किया जाएगा, जिससे उन्हें भुगतान करने की अनुमति होगी कि क्या पेपाल या क्रेडिट कार्ड के साथ भुगतान करना है (यदि कैमरा उपलब्ध है तो मैनुअल प्रविष्टि या कार्ड.आईओ के माध्यम से)। वह स्क्रीन कुछ इस तरह दिखाई देगी:

पेपैल भुगतान की पुष्टि स्क्रीन

एक बार हो जाने के बाद, पेपल को उपयोगकर्ता को भुगतान या रद्द होने की पुष्टि के बाद वापस करने के लिए तैयार होने की जरूरत है। उस उद्देश्य के लिए onActivityResult(...) को ओवरराइड onActivityResult(...)

@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data){
    if (resultCode == Activity.RESULT_OK){
        PaymentConfirmation confirm = data.getParcelableExtra(
            PaymentActivity.EXTRA_RESULT_CONFIRMATION);
        if (confirm != null){
            try {
                Log.i("sampleapp", confirm.toJSONObject().toString(4));

                // TODO: send 'confirm' to your server for verification

            } catch (JSONException e) {
                Log.e("sampleapp", "no confirmation data: ", e);
            }
        }
    } else if (resultCode == Activity.RESULT_CANCELED) {
        Log.i("sampleapp", "The user canceled.");
    } else if (resultCode == PaymentActivity.RESULT_EXTRAS_INVALID) {
        Log.i("sampleapp", "Invalid payment / config set");
    }
}

भीतर onActivityResult(...) विधि है, हम यह देखने के लिए जाँच कर रहे हैं resultCode कि वापस आता है RESULT_OK (उपयोगकर्ता की पुष्टि की भुगतान), RESULT_CANCELED (उपयोगकर्ता को रद्द कर दिया भुगतान), या RESULT_EXTRAS_INVALID है (वहाँ एक विन्यास मुद्दा था)। मान्य पुष्टिकरण के मामले में, हमें वह वस्तु मिलती है जिसे भुगतान से लौटाया जाता है और इस नमूने में, इसे लॉग इन करें। हमारे पास जो लौटाया जाएगा, उसे निम्नलिखित की तरह देखना चाहिए:

{
    "client": {
        "environment": "sandbox",
        "paypal_sdk_version": "2.14.1",
        "platform": "Android",
        "product_name": "PayPal-Android-SDK"
    },
    "response": {
        "create_time": "2016-05-02T15:33:43Z",
        "id": "PAY-0PG63447RB821630KK1TXGTY",
        "intent": "sale",
        "state": "approved"
    },
    "response_type": "payment"
}

यदि हम response वस्तु के तहत देखते हैं, तो हम देख सकते हैं कि हमारे पास approved state है, जिसका अर्थ है कि भुगतान की पुष्टि की गई थी। इस बिंदु पर, उस वस्तु को आपके सर्वर को भेजा जाना चाहिए ताकि पुष्टि हो सके कि भुगतान वास्तव में हुआ था। उन चरणों की अधिक जानकारी के लिए, ये डॉक्स देखें

हमारा आखिरी कदम हमारे onDestroy(...) में सफाई करना है।

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

यही सब है इसके लिए। इस उदाहरण में हमने पेपाल या क्रेडिट कार्ड से भुगतान की प्रक्रिया के लिए एक सरल बटन बनाया है। इस बिंदु से, इस नमूने पर विस्तार करने के लिए आपके पास कुछ अगले चरण हैं:

  • beginPayment(...) विधि में उपयोगकर्ता उत्पाद चयन के आधार पर भुगतान जानकारी को गतिशील रूप से beginPayment(...)
  • अपने सर्वर को भुगतान की पुष्टि भेजना और यह पुष्टि करना कि भुगतान वास्तव में हुआ।
  • ऐप के भीतर उपयोगकर्ता के मामलों में त्रुटि और रद्दीकरण को संभालना।