Google Pay is a digital wallet platform and online payment system developed by Google to power in-app and tap-to-pay purchases on mobile devices, enabling users to make payments with Android phones, tablets or watches.
Google Pay uses Near Field Communication (NFC) to transmit card information facilitating funds transfer to the retailer. It replaces the credit or debit card chip and PIN or magnetic stripe transaction at point-of-sale terminals by allowing the user to upload these in the Google Pay wallet. It is similar to contactless payments already used in many countries, with the addition of two-factor authentication. The service lets Android devices wirelessly communicate with point of sale systems using a near field communication (NFC) antenna, host-based card emulation (HCE), and Android's security.
Google Pay takes advantage of physical authentications such as fingerprint ID where available. On devices without fingerprint ID, Google Pay is activated with a passcode. When the user makes a payment to a merchant, Google Pay does not send the credit or debit card number with the payment. Instead it generates a virtual account number representing the user's account information. This service keeps customer payment information private, sending a one-time security code instead of the card or user details.
Refer the below link for complete sample code:-
Download Sample Code
Have a look on few code snippets,
//build.gradle
//activity_main.xml
//MainActivity.java
Google Pay uses Near Field Communication (NFC) to transmit card information facilitating funds transfer to the retailer. It replaces the credit or debit card chip and PIN or magnetic stripe transaction at point-of-sale terminals by allowing the user to upload these in the Google Pay wallet. It is similar to contactless payments already used in many countries, with the addition of two-factor authentication. The service lets Android devices wirelessly communicate with point of sale systems using a near field communication (NFC) antenna, host-based card emulation (HCE), and Android's security.
Google Pay takes advantage of physical authentications such as fingerprint ID where available. On devices without fingerprint ID, Google Pay is activated with a passcode. When the user makes a payment to a merchant, Google Pay does not send the credit or debit card number with the payment. Instead it generates a virtual account number representing the user's account information. This service keeps customer payment information private, sending a one-time security code instead of the card or user details.
Download Sample Code
Have a look on few code snippets,
//build.gradle
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | apply plugin: 'com.android.application' android { compileSdkVersion 28 defaultConfig { applicationId "com.elitetechnologies.googlepay" minSdkVersion 20 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.razorpay:checkout:1.5.1' } |
//activity_main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00b1e1" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="100dp" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:orientation="vertical" android:gravity="center" > <RelativeLayout android:layout_width="match_parent" android:layout_height="110dp" > <LinearLayout android:layout_width="match_parent" android:layout_height="80dp" android:layout_alignParentBottom="true" android:background="#E2E2E2" android:gravity="center" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="35dp" android:paddingBottom="0dp" android:textSize="12sp" android:text="Order #RZP42" /> </LinearLayout> <ImageView android:layout_width="60dp" android:layout_height="60dp" android:layout_centerHorizontal="true" android:background="#FFFFFF" android:src="@mipmap/ic_launcher" /> </RelativeLayout> <LinearLayout android:layout_height="wrap_content" android:layout_width="match_parent" android:orientation="vertical" android:paddingTop="15dp" android:background="#f2f2f2" android:gravity="center" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:paddingTop="0dp" android:paddingBottom="5dp" android:textSize="20sp" android:text="Razorpay T-Shirt" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:paddingTop="0dp" android:paddingBottom="0dp" android:textSize="12sp" android:text="INR 1.00" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:paddingTop="5dp" android:paddingBottom="0dp" android:textSize="12sp" android:textStyle="italic" android:text="This is a real transaction" /> <Button android:id="@+id/btn_pay" android:layout_width="wrap_content" android:layout_height="36dp" android:layout_marginTop="20dp" android:layout_marginBottom="20dp" android:layout_gravity="center_horizontal" android:paddingRight="20dp" android:paddingLeft="20dp" android:background="@drawable/green_button" android:textSize="14sp" android:textColor="#fcfcfc" android:text="Purchase" /> </LinearLayout> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:paddingTop="10dp" android:paddingBottom="10dp" android:paddingLeft="20dp" android:paddingRight="20dp" android:background="@drawable/secured_by_bg" android:textSize="12sp" android:textColor="#a1ddee" android:textStyle="italic" android:text="Secure Payments by Razorpay" /> </LinearLayout> </RelativeLayout> |
//MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | package com.elitetechnologies.googlepay; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast; import com.razorpay.Checkout; import com.razorpay.PaymentResultListener; import org.json.JSONObject; public class MainActivity extends Activity implements PaymentResultListener { private static final String TAG = MainActivity.class.getSimpleName(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /* To ensure faster loading of the Checkout form, call this method as early as possible in your checkout flow. */ Checkout.preload(getApplicationContext()); // Payment button created by you in XML layout Button button = (Button) findViewById(R.id.btn_pay); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startPayment(); } }); } public void startPayment() { /* You need to pass current activity in order to let Razorpay create CheckoutActivity */ final Activity activity = this; final Checkout co = new Checkout(); try { JSONObject options = new JSONObject(); options.put("name", "Razorpay Corp"); options.put("description", "Demoing Charges"); //You can omit the image option to fetch the image from dashboard options.put("image", "https://s3.amazonaws.com/rzp-mobile/images/rzp.png"); options.put("currency", "INR"); options.put("amount", "100"); JSONObject preFill = new JSONObject(); preFill.put("email", "test@razorpay.com"); preFill.put("contact", "9876543210"); options.put("prefill", preFill); co.open(activity, options); } catch (Exception e) { Toast.makeText(activity, "Error in payment: " + e.getMessage(), Toast.LENGTH_SHORT) .show(); e.printStackTrace(); } } /** * The name of the function has to be * onPaymentSuccess * Wrap your code in try catch, as shown, to ensure that this method runs correctly */ @SuppressWarnings("unused") @Override public void onPaymentSuccess(String razorpayPaymentID) { try { Toast.makeText(this, "Payment Successful: " + razorpayPaymentID, Toast.LENGTH_SHORT).show(); } catch (Exception e) { Log.e(TAG, "Exception in onPaymentSuccess", e); } } /** * The name of the function has to be * onPaymentError * Wrap your code in try catch, as shown, to ensure that this method runs correctly */ @SuppressWarnings("unused") @Override public void onPaymentError(int code, String response) { try { Toast.makeText(this, "Payment failed: " + code + " " + response, Toast.LENGTH_SHORT).show(); } catch (Exception e) { Log.e(TAG, "Exception in onPaymentError", e); } } } |
No comments:
Post a Comment