[Paid] ๐Ÿ’ต PayPal Extension to add payment system in you app

Extension Overview:

The "PayPal Extension By @Black_Knight " is your entry point for incorporating PayPal's strength into your App Inventor applications. With the help of this dynamic plugin, the PayPal API may be easily accessed by your apps. Its clever construction makes it simple to retrieve access tokens using client credentials, bringing up a plethora of options for creating payment features.

Blocks :point_down:




4

Extension Overview:

This extension allows you to integrate PayPal payments into your App Inventor apps. It provides functions to:

  • Get an access token for interacting with PayPal APIs.

  • Make PayPal payments using various methods (credit card, PayPal account, etc.).

  • Refund payments.

  • Create basic invoices.

  • Check the status of payments.

  • Extract information from payment responses (e.g., payment ID, sale ID, currency code, price).

Functions and Events:

Screenshot 2024-03-23 142309

1. GetAccessToken:

  • Function: GetAccessToken(boolean isLive)

    • Retrieves an access token from PayPal using your client credentials.

    • Parameters:

      • isLive: true for live environment, false for sandbox.
  • Event:

AccessTokenObtained(String accessToken, String appId, int expiresIn, String respondCode)

  • Triggered when the access token is successfully retrieved.

  • Parameters:

    • accessToken: The retrieved access token.

    • appId: The PayPal app ID.

    • expiresIn: The expiration time of the access token in seconds.

    • respondCode: The response code from PayPal.

Screenshot 2024-03-23 142309

2. MakePayPalPayment:

  • Function: MakePayPalPayment(String accessToken, double amount, String currency, String productName, String productDescription, String returnUrl, String cancelUrl, boolean isLive)

    • Creates a PayPal payment request and handles the response.

    • Parameters:

      • accessToken: The access token.

      • amount: The payment amount.

      • currency: The currency code.

      • productName: The name of the product or service.

      • productDescription: A description of the product or service.

      • returnUrl: The URL where the user is redirected after successful payment.

      • cancelUrl: The URL where the user is redirected if they cancel the payment.

      • isLive: true for live environment, false for sandbox.

  • Event:

Screenshot 2024-03-23 142309

PaymentInfoObtained(String jsonResponse)

  • Triggered with the complete JSON response from PayPal.

  • Parameters:

    • jsonResponse: The JSON response containing payment information.

Screenshot 2024-03-23 142309

3. RefundPayment:

  • Function: RefundPayment(String accessToken, String paymentId, double amount, String currency, String reason, boolean isLive)

    • Refunds a PayPal payment.

    • Parameters:

      • accessToken: The access token.

      • paymentId: The ID of the payment to refund.

      • amount: The amount to refund (optional, for partial refunds).

      • currency: The currency code (required if amount is specified).

      • reason: An optional reason for the refund.

      • isLive: true for live environment, false for sandbox.

  • Event:

RefundProcessed(String id, String state, String total, String currency, String reason)

  • Triggered when a refund is processed successfully.

  • Parameters:

    • id: The refund ID.

    • state: The state of the refund (e.g., "completed").

    • total: The refunded amount.

    • currency: The currency code of the refund.

    • reason: The reason for the refund.

  • Event:

Screenshot 2024-03-23 142309

RefundError(String error, String errorDescription)

  • Triggered when an error occurs during the refund process.

  • Parameters:

    • error: The error code or type.

    • errorDescription: A description of the error.

Screenshot 2024-03-23 142309

4. CreateInvoice:

  • Function: CreateInvoice(String accessToken, String recipientEmail, double amount, String currency, String description, boolean isLive)

    • Creates a basic PayPal invoice.

    • Parameters:

      • accessToken: The access token.

      • recipientEmail: The recipient's email address.

      • amount: The invoice amount.

      • currency: The currency code.

      • description: A description of the invoice.

      • isLive: true for live environment, false for sandbox.

Screenshot 2024-03-23 142309

  • Event: InvoiceCreated(boolean success, String response)

    • Triggered when an invoice is created.

    • Parameters:

      • success: true if the invoice was created successfully, false otherwise.

      • response: The JSON response from PayPal.

Screenshot 2024-03-23 142309

5. CheckPaymentStatus:

  • Function: CheckPaymentStatus(String paymentId, String accessToken, boolean isLive)

    • Checks the status of a specific PayPal payment.

    • Parameters:

      • paymentId: The ID of the payment to check.

      • accessToken: The access token.

      • isLive: true for live environment, false for sandbox.

  • Event:

PaymentStatusReceived(String paymentId, String id, String intent, String state, String createTime, String updateTime, String jsonResponse)

  • Triggered with the status of the payment.

  • Parameters:

    • paymentId: The original payment ID provided.

    • id: The actual payment ID from the response.

    • intent: The payment intent (e.g., "sale").

    • state: The state of the payment (e.g., "approved").

    • createTime: The time the payment was created.

    • updateTime: The time the payment was last updated.

    • jsonResponse: The complete JSON response from PayPal.

Additional Functions:

  • ExtractHrefFromLinks(String jsonResponse): Extracts the href value from a JSON response, typically used to obtain the approval URL for redirecting users to PayPal's payment page.

  • ExtractHrefFromResponse(String jsonResponse): Extracts the href value from a payment response, specifically the approval URL for redirecting users to PayPal.

  • ExtractResponseCode(String jsonResponse): Extracts the response code from a JSON response.

  • ExtractIdFromResponse(String jsonResponse): Extracts the id value from a JSON response, typically the payment ID.

  • ExtractPaymentIdFromUrl(String url): Extracts the paymentId value from a URL, often used after a user returns from PayPal's payment page.

  • ExtractPayerIdFromUrl(String url): Extracts the PayerID value from a URL, also used after a user returns from PayPal's payment page.

3

  • ExtractSaleId(String jsonResponse): Extracts the "sale id" from a PayPal payment response.

3

  • ExtractCurrencyCode(String jsonResponse): Extracts the currency code from a PayPal payment response.

3

  • ExtractPrice(String jsonResponse): Extracts the price (total amount) from a PayPal payment response.

Explanation :



Step 1: Set Up Your Project

  1. Open MIT App Inventor and create a new project or open an existing one.

Step 2: Add Components

  1. Drag and drop a "WebViewer" component from the "User Interface" section onto your screen.
  2. Drag and drop the "Paypal" extension component onto the screen.

Step 3: Design Your User Interface

  1. Arrange your components on the screen as you wish. You might want to add buttons or labels for user interaction.

Step 4: Blocks Setup

  1. In the Blocks section, set up the logic to interact with the PayPal API using the extension and Web Viewer.
  2. Set the ClientId and ClientSecret properties of the PayPal extension.
  3. When the user performs an action (e.g., clicking a button), call the GetAccessToken function of the PayPal extension to obtain an access token.
  4. In the AccessTokenObtained event, call the MakePayPalPayment function to initiate a payment and obtain the payment link (href).
  5. In the PaymentInfoObtained event, parse the response and use the ExtractHrefFromLinks function to get the payment link.
  6. Load the extracted payment link into the Web Viewer using the Go to URL block.

Step 5: Handle Web Viewer Page Loaded and Redirect URLs

  1. Use the Web Viewer's PageLoaded event to detect when the PayPal payment page has loaded.
  2. In the PageLoaded event, check the URL of the Web Viewer. If the URL matches the "cancel_url," it indicates a cancelled payment.
  3. If the URL matches the "return_url," it indicates a successful payment. You can show a success message to the user in this case.
  4. after successful payment you have to use the capture_amount block to capture your price

steps in one image :

Remember:

  • You'll need to obtain your PayPal client ID and client secret from the PayPal Developer Dashboard.

  • Carefully review PayPal's API documentation for specific requirements and limitations of each API call.

I hope this explanation helps you understand and use the PayPal Extension effectively in your App Inventor projects!

preview video:

Test

Preview image
successful payment in live mode

Extension:

you will get aix file in addition to aia file that contains methods of installing the extension inside your project

You can buy it via PayPal it costs 8$ instead of 12$ after your payment you will be directed to the download URL of the zip file that contains aix and aia project. This offer valid for a limited duration

ยฉ 2023 MrKoder. All rights reserved.

For inquiries, please contact: Mr koder

Visit our YouTube channel: Mr Koder's YouTube Channel

5 Likes

Also see here:

1 Like

Extension updated to include Test with sandbox in addition to Livemode

Topic updated with new functions now extension working fine

Hey @Black_Knight, I had a question:

Can the user change the amount after the payment flow has been initiated?
If no then what is the purpose of the AmountCaptured block? If the amount is fixed already then why would we want to capture it again?

Lets say that I want to sell a service to a user for a specific fixed price, I will not want the user to edit it. Which is what led me to asking this question.

Thanks!

No he cant but he has the option to pay them part by part .

the purpose of this block is just an authentication step that you run to send for PayPal to authenticate that you are the seller.
And this is their system I am not the creator of this system.

1 Like

Oh okay I asked it since I did not see you use this block in your YouTube video. Thanks though!

1 Like

Olรก, posso utilizar esta extenรงรฃo para conta normal do paypal, que nรฃo seja uma conta corporativa?

No, you can't . cause only business accounts that offer API .

this offer is valid for a limited duration

looks just like a webviewer component running a paypal payment system to me

@Black_Knight Your Extension link is available for free through the link of the tutorial video, i think you forget to delete it :innocent:

1 Like

This is old free version

1 Like

The topic is fully updated with these new three useful functions

1 Like