Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. We have updated the language to the Editor Terms based on feedback from our employees and community. Learn more.
    Dismiss Notice

Simple In-App Purchase System (SIS) - Shop solution

Discussion in 'Assets and Asset Store' started by Baroni, Aug 8, 2013.

?

Which billing plugin are you using in combination with Simple IAP System?

  1. Unity IAP

    155 vote(s)
    85.2%
  2. Voxel Busters

    10 vote(s)
    5.5%
  3. Stans Assets

    13 vote(s)
    7.1%
  4. Prime31

    4 vote(s)
    2.2%
  1. dareerahmadmufti

    dareerahmadmufti

    Joined:
    Dec 27, 2016
    Posts:
    3
    Hi,
    Little update, on the editor it is giving some logs that may help you. On Android, it is the same, no logs.

    On Editor:
    On clicking the purchase button, pop up giving out text "Purchase Unavailable", followed by 3.

    Log_01
    PayPalStore purchase error: HTTP/1.1 400 Bad Request
    UnityEngine.Debug:Log (object)
    SIS.PayPalStore/<Purchase>d__13:MoveNext () (at Assets/SimpleIAPSystem/Scripts/Extensions/PayPal/PayPalStore.cs:122)

    Log_02:
    {"name":"INVALID_REQUEST","message":"Request is not well-formed, syntactically incorrect, or violates schema.","debug_id":"1998921cc508e","details":[{"field":"/application_context","location":"body","issue":"MALFORMED_REQUEST_JSON","description":"The request JSON is not well formed."}],"links":[{"href":"https://developer.paypal.com/docs/api/orders/v2/#error-MALFORMED_REQUEST_JSON","rel":"information_link","encType":"application/json"}]}
    UnityEngine.Debug:Log (object)
    SIS.PayPalStore/<Purchase>d__13:MoveNext () (at Assets/SimpleIAPSystem/Scripts/Extensions/PayPal/PayPalStore.cs:123)

    Log_03:
    IAPManager reports: PurchaseFailed. Error: PurchasingUnavailable
    UnityEngine.Debug:Log (object)
    SIS.IAPManager:OnPurchaseFailed (UnityEngine.Purchasing.Product,UnityEngine.Purchasing.PurchaseFailureReason) (at Assets/SimpleIAPSystem/Scripts/IAPManager.cs:614)
    SIS.PayPalStore/<Purchase>d__13:MoveNext () (at Assets/SimpleIAPSystem/Scripts/Extensions/PayPal/PayPalStore.cs:126)

    Log_04:
    {"name":"INVALID_REQUEST","message":"Request is not well-formed, syntactically incorrect, or violates schema.","debug_id":"bfe6bf8a6f18","details":[{"field":"/application_context","location":"body","issue":"MALFORMED_REQUEST_JSON","description":"The request JSON is not well formed."}],"links":[]}
    UnityEngine.Debug:Log (object)
    SIS.PayPalStore/<Purchase>d__13:MoveNext () (at Assets/SimpleIAPSystem/Scripts/Extensions/PayPal/PayPalStore.cs:123)

    On Android:
    On clicking the purchase button, pop up giving out text "Billing is not available", followed by no logs on console or cmd.
     
  2. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    @dareerahmadmufti I am not able to reproduce, the PayPal page is opening correctly for me on Android. Could you try to reproduce this error in one of the example scenes, or if it does happen already, package the Simple IAP System folder and send it to me in a private message (not public like this)? Unfortunately I am unable to pinpoint this down by guessing, and we would save time that way.
     
  3. crandellbr

    crandellbr

    Joined:
    Apr 3, 2013
    Posts:
    137
    @Baroni I'm using my own UI, from which I call IAPManager.Purchase(). After authorizing, there's a brief delay between when the overlay closes and when IAPListener.HandleSuccessfulPurchase() is called. If I click my purchase button again during this delay, the overlay reopens and HandleSuccessfulPurchase() is never called for the first transaction.

    The delay is so small that you have to go out of your way to break it, but I can confirm it's possible. The fact that you've never seen or heard of this is reassuring. Since it shouldn't be an issue under normal circumstances, I'll probably add it to my nice-but-not-necessary list and revisit in a future project.
     
    Baroni likes this.
  4. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    Hi @dareerahmadmufti, thanks for the repro files, I was able to get the "request malformed" error too. Following up here so others can read the answer too. Looking at your PayPal settings in Project Settings > Simple IAP System > Setup you are missing the "Return URL" value, which is required and should be set to a https:// website.

    upload_2022-8-22_8-9-49.png

    After entering the URL (in my case for example https://flobuk.com), the PayPal page opened correctly. Also quick note on the consumable product, typically you would remove itself from the reward list, as this type of consumables (coins) is usually consumed immediately. Having it in the reward list means that the user can decide to consume it later manually.
     
    Last edited: Aug 22, 2022
  5. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    Version 5.2.1 with mostly fixes is available for download on my website, and probably sometime next week on the Asset Store. Changelog here.
     
  6. danialaddin66

    danialaddin66

    Joined:
    Aug 26, 2019
    Posts:
    7
    Thank you for your previous reply! surely helped a lot :)
    I still face a problem when trying the getIntroductoryPrice() from the subscription manager, I have offers added to each subscrption on googleplay but this keeps throwing a null error when trying to retrieve it to display the discount price..
    Another quick question, is there a specific way to handle auto-renewing subscriptions on GooglePlay (for example) ? How do I make sure it is paid in the next billing period (do I have to manually recheck it every period or will it automatically call the function on next app open) ? And does it use the same receipt/transaction ID?
     
    Last edited: Aug 28, 2022
  7. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    Are you creating the SubscriptionManager and access the IAPManager.controller after its initialization (after or in the OnInitialized method)? I guess subscription details are not available until that point, but if you can confirm, I can also test on my end.

    For real subscription verification you would need to use server-side validation. Client side validation on subscriptions can fail for multiple reasons: they are either hacked, purchased once and then cancelled, or refunded. Local validation can not detect any user interactions on subscriptions and typically returns that a subscription is purchased all the time, until the device cache gets new details from the store, usually with a few days delay (e.g. after a subscription already expired). Cancelling and resubscribing does not return the same transaction ID.

    That's why I developed a service to assist with all these issues, not requiring a server and being able to display users that their subscription expires e.g. in a few days, to remind them to resubscribe. More details here: https://flobuk.com/validator

    If you decide to try it out, I would be very happy to assist. :)
     
  8. danialaddin66

    danialaddin66

    Joined:
    Aug 26, 2019
    Posts:
    7
    Yes, Ihave tried creating the manager in the Refresh function in the ShopItem2D class to retrieve the data snd fill the UI, using:
    Code (CSharp):
    1. var subscriptionManager = new SubscriptionManager(IAPManager.controller.products.WithID(productID), null);
    2. offerPrice.text = subscriptionManager.getSubscriptionInfo().getIntroductoryPrice();
    Yesterday I also tried this piece of code instead:
    Code (CSharp):
    1. GoogleProductMetadata g = IAPManager.controller.products.WithID(productID).metadata.GetGoogleProductMetadata();
    2.  
    3. if (g != null)
    4. {
    5.     offerPrice.text = IAPManager.controller.products.WithID(productID).metadata.GetGoogleProductMetadata().introductoryPrice;
    6. }
    7. else
    8.     Debug.Log("google metadata is null");
    This one returns an empty string in the price text! Another thing I have noticed is that the isDiscounted bool is always false! Even though I have offers for all of them.
     
  9. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    @danialaddin66 I think you may want to ask in the Unity IAP section whether they really support trial prices on Google Play yet. My assumption is that it should work, but the SubscriptionManager could have flaws I am not aware of.

    The 'isDiscounted' flag is enabled manually in Simple IAP System's product settings, there is a checkbox for it. It is also enabled when used with PlayFab and it is detected that the price on PlayFab is lower than in your app. The boolean has nothing to do with Unity IAP or subscription trial prices.
     
  10. Xagu

    Xagu

    Joined:
    Oct 4, 2016
    Posts:
    17
    Hi Baroni,

    We recently bought your asset, it looks nice! Our goal was to set IAP on a Steam build but the lack of decent documentation on steamworks and it's cryptic way to organize articles is driving us crazy...
    A couple of questions about this:
    -Does the plugin allow to make direct purchases ( something like Google Play or App Store IAP systems) or do we need an intermediate step between our game and steam? Saw something about this in forums but we don´t have clear up to where this plugin integrates the Steam purchasing system.
    -Do you know any good tutorial or a sample project about Steam microtransactions?

    Thanks a lot in advance and have a nice day.
     
  11. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    Hi @Xagu, yeah, the Steamworks documentation is a bit... hard to navigate. Parts of it are under NDA, that's mainly the reason why I haven't been able to write a full dedicated Steam Store guide yet, but it's on my to-do list. My current guide is still a mix of Steam & PlayFab, however if you are not using PlayFab, just ignore the sentences where it is mentioned.

    You have the option to use Steam with PlayFab, or use the native Steam (Inventory) implementation. The native Steam implementation is exactly like Google Play etc. and can be used by enabling the "Steam Inventory Service" in Steamworks, under Community > Inventory Service (also seen in the video linked in the guide).

    It's typically very easy to set up in Simple IAP System, because there you would define your products and shop scene as usual. The catch is the Steamworks backend, which makes it almost impossible to debug correctly why billing cannot be initialized in Unity. I do have a basic standalone, sample scene for Steam - please send me your invoice number via private message if you would like to receive it. Thanks!
     
    Xagu likes this.
  12. Xagu

    Xagu

    Joined:
    Oct 4, 2016
    Posts:
    17
    Hi Baroni!
    Thanks for your prompt reply.
    We are still checking about how transactions work on Steam and messing around with SteamManager classes and trying to understand the format of ISteamMicroTxn API...
    Any help will be very welcome.
    Will check the inventory service. Sending pm.
    Thanks.
     
  13. danialaddin66

    danialaddin66

    Joined:
    Aug 26, 2019
    Posts:
    7
    Hello again! I have decided to start using your validator product! But I am a bit confused to how to use it alongside the Simple IAP System which I'm already using to have users buy some products and subscriptions and all works great.
    Should I be transferring my code into the function in the Validator now instead (along with subscription cancellations)? and how do I get the the current status of my user's subscription? And lastly, how do I handle auto-renewal subscriptions as I asked you before?
    Thanks a lot in advance :)
     
  14. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    That's a lot of questions :) If you follow the documentation - there is a section specific to Simple IAP System users - and attach the ReceiptValidatorServer script to the IAPManager prefab as described, this is all you have to do. Simple IAP System then uses the validator on new purchases with the user ID you have specified on the ReceiptValidatorServer component.

    After Unity IAP and the validator are initialized, it tries to get the user's inventory. You can access this by calling GetInventory on the ReceiptValidatorServer component (see this section). The method returns a PurchaseResponse for each owned product, including the status and "expiresDate".

    You don't - the validator does it for you, if you set up Google Cloud and Apple webhooks correctly as written in the Store Setup documentation. You continue to read the user inventory on each app launch as always: if the subscription is expired, the inventory will either include it with an expired state, or not return it at all (if expired long ago). If it is still active, it will be included in the inventory. You can also check the "autoRenew" variable in the PurchaseResponse to try and convince users to resubscribe.

    If you have questions specific to the validator, please use the support button in the dashboard, lower left corner ;) Thank you!
     
    danialaddin66 likes this.
  15. Bitmore

    Bitmore

    Joined:
    Mar 4, 2016
    Posts:
    16
    Hi,
    I'm using playfab "Full suite" mode. The amount of product in the bundle's preview window is different than playfab server side even when the "Fetch" was checked. Only shows local settings of product, not update the amount from playfab. The currency in the bundle is correct though.
     
  16. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    Hi @Bitmore, could you provide more details about your bundle so I can try to reproduce the issue? What type and amount of products do you have in your bundle locally and on PlayFab?
     
  17. Bitmore

    Bitmore

    Joined:
    Mar 4, 2016
    Posts:
    16
    sis_playfab.png

    sis_settings.png

    sis_preview.png

    The preview window shows the wrong amount of product but the correct amount of currency. And the correct amount of product was added to playfab inventory after the purchase was successful.
     
  18. derkoi

    derkoi

    Joined:
    Jul 3, 2012
    Posts:
    2,242
    Hi,

    I'm running into this warning:

    And I noticed in Simple IAP v5.1.2
    • added Unity Gaming Services initialization due to Unity IAP requiring it and otherwise throwing a warning


    I can't find a way to download from your website, I purchased on the Asset Store. Is it possible to get a copy of v5.1.2 please?

    Thanks
     
  19. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    Hi @Bitmore, thank you for the additional screenshots.

    Since you've defined the amount of "Items" = 7 on the PlayFab dashboard, PlayFab will grant that amount to the player, regardless of what is specified in Simple IAP System. And because when used in combination with PlayFab, Simple IAP System does only store purchase data in memory for display purposes, the correct amount of "Items" will be shown in the app too, after you relaunched the app and retrieved the inventory again. I understand that the incorrect local amount is actually a bug, especially when "Fetch" is enabled, and will fix it for the next update. Thanks for reporting it! If you have an urgent deadline for this please let me know.

    --------
    Hi @derkoi, Unity recently clarified that the warning can be ignored for now and that you do not have to initialize UGC as mentioned in this thread, question "Do I need to Initialize IAP Unity Gaming Services?".

    Downloading from my website is only possible after purchasing the asset there too, as then you will receive a server-generated entry code which grants access to all previous and current versions of Simple IAP System. As you know, unfortunately on the Asset Store only the most recent version is available.
     
  20. digimbyte

    digimbyte

    Joined:
    Jun 23, 2012
    Posts:
    58
    @Baroni Found your IAP system and it mentions multiple systems. I am curious on a few topics.
    is the IAP package compatible with WebGL and custom stripe payments?

    I also noticed you have a receipts package, does this IAP package cover this as well?
    Just curious as I have cloud tools and can validate purchases through our own cloud server
     
  21. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    Hi @digimbyte, thanks for your interest! The asset supports a handful of custom billing providers that can be seen in this screenshot from the Asset Store. Stripe is currently not supported on WebGL, only PayPal.

    The asset comes with a ready to use component for my server validation service, which is an optional, additional backend requiring a subscription on my website. You are free to implement your own server validation using the available callbacks, if you would like to use your own solution instead.
     
  22. digimbyte

    digimbyte

    Joined:
    Jun 23, 2012
    Posts:
    58
    thanks for the response, we can implement stripe payments externally in the browser itself, is that difficult to implement with the current system?
    Also, how is inventory managed? we want to support consumable items, upgrades, and more with virtual and payments
     
  23. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    @digimbyte Adding a new store is always a task that needs careful execution and a lot of testing. With payments you would not want to have any bugs. I did not look into Stripe yet, so I am not able to give you an estimate. Store providers in SIS are built on top of the Unity IAP store interfaces.

    Inventory is handled locally in JSON format with public methods to increase, decrease and otherwise modify them manually. However SIS does this automatically on each purchase action. The product types you mentioned are supported by default. The data file can also be encrypted or retrieved from a game server after login (again there are callbacks to support a custom implementation for this).
     
  24. digimbyte

    digimbyte

    Joined:
    Jun 23, 2012
    Posts:
    58
    Wonder if there is a way around the Unity IAP interface, we'd need a custom bridge to the server + stripe.

    PayPal is not viable for us

    for testing purposes, is there any suggestions on hooking into the package to implement our own payment system? or making an api call to the browser window through the WebGL interface?

    An alternative is to handle the purchases via a website portal and load the content back into the game through a listener
     
    Last edited: Sep 6, 2022
  25. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    My PayPal implementation does the same and Stripe is on my list and considered to be added in the future.

    However in the current state I get the impression that the asset would not fit to your requirements. With your amount of custom work and servers, in combination with trying to avoid Unity IAP classes, you could also just start from scratch (sorry to be that honest).
     
  26. salmanjaved5050

    salmanjaved5050

    Joined:
    Aug 2, 2015
    Posts:
    6
    Hello! Does this work on iOS? I need to implement paypal checkout.
     
  27. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    Hi there, PayPal does work on iOS. However as per Apple guidelines you are not allowed to sell in app purchases via PayPal - you are forced to use the native billing (and pay them 30%). Meaning if you distribute your app on the App Store, you can only sell things like physical stuff i.e. merchandise with PayPal.
     
  28. digimbyte

    digimbyte

    Joined:
    Jun 23, 2012
    Posts:
    58
    to be honestly I don't fully understand the Unity IAP system. I assume its got governance over a 'inventory' api and what the player can and can't access - I've already purchased the kit, so I'd rather try to make it work as it just seems a web solution with stripe payments, or even multiple payments is not currently supported.
    I did read that the system is mostly an intermediate service and passes on requests.
    either way, happy to learn more and get a working solution rather than remaking the wheel again.
     
  29. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    Unity IAP is a library of store interfaces, so that you do not have to write your own native Google Play (Android) or StoreKit (Apple) plugins. You can talk with the App Stores via Unity IAP - nothing more or less. It does not have any idea over player inventory, if the store does not provide this. Meaning, there is no backend or "advanced" functionality in Unity IAP at all. Fortunately, App Stores send the player purchases on initialization, at least for non-consumables and subscriptions; consumables or virtual purchases for currency are not stored anywhere. This is where Simple IAP System extends Unity IAP, besides other features.

    If you mean by "web solution" a website with stripe payments not coupled to the app and requiring your own backend server, then this is not something that will be directly supported in Simple IAP System ever. The process for this would be to add authentication to your app, let your users login and retrieve their purchases they did on your website, downloaded into the Simple IAP System database. It would totally skip any billing functionality within the app.

    In the future, what would be supported instead are products listed within Simple IAP System, directing the user to a native Stripe page for purchasing it, and waiting for Stripe's successful server response for granting the product in the app. This is how the PayPal implementation works too and a backend server storing the purchases is completely optional (but recommended).

    Well, App Stores do not allow using any billing system other than their own for in app purchases. So with the requirement of selling physical goods, or supporting payments outside the App Store ecosystem, e.g. for desktop apps, I added PayPal. Xsolla was supported until quite recently too but was removed since no one was using it.
     
  30. salmanjaved5050

    salmanjaved5050

    Joined:
    Aug 2, 2015
    Posts:
    6
    From what I understand, its not possible to sell IAP through paypal on iOS then.
     
  31. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    That's what I wrote - PayPal on iOS can only be used for products outside your app, or if you are distributing the app outside the App Store.
     
  32. LoopIssuer

    LoopIssuer

    Joined:
    Jan 27, 2020
    Posts:
    105
    Hi,
    I have question about integration with PayPal, Stripe and similar.
    There is info on your site (https://flobuk.gitlab.io/assets/docs/sis/stores/paypal-native), that Google Play or iTunes, would not allow apps with PayPal integration.
    But when I installed Badoo, and start purchasing a subscription, I see the PayPal option.
    Please explain to me, apparently, I don't understand it correctly.
     

    Attached Files:

  33. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    Google has several payment methods: credit cards, Google Play credits, and also PayPal. But no matter what you choose, in the end it is all processed by Google so they collect their share of the purchase. It seems the app you mentioned added a custom screen for these payment methods. This is fine.

    Not allowed is adding PayPal as a billing provider (not Google) for selling in app purchases on Google Play, specifically opening a separate browser directing to the PayPal website and doing the purchase there, completely circumventing Google. Hope this clarifies it.
     
  34. LoopIssuer

    LoopIssuer

    Joined:
    Jan 27, 2020
    Posts:
    105
    Yes, thank you.
    So, please tell me - with your asset, is it possible to implement it the same way as in Badoo? I mean Google as a billing provider and PayPal (or Stripe) as a payment method inside the application?
     
  35. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
  36. Delacroz

    Delacroz

    Joined:
    Sep 23, 2019
    Posts:
    13
    I'm trying to use paypal to purchase physical items, I did everything the documentation asked for and on the computer it works fine, but when I build it and run it on android, it gives the message that "Billing is not available", it also says that "no products available"
     
  37. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    Hi @Delacroz, thanks for posting here. On a mobile platform Unity IAP tries to initialize with the native store (in your case Google Play), which will fail if you did not add any Google Play IAP products. Is this actually your use case - physical products without other in app products?

    If so, this is an edge case and you have to add a small modification to the IAPManager script, below line 197:
    Code (csharp):
    1. standardModule.useFakeStoreAlways = true;
    This is enough to complete the Unity IAP initialization so you can use PayPal only.
     
  38. Delacroz

    Delacroz

    Joined:
    Sep 23, 2019
    Posts:
    13
    Yep, my App only have physical products, só afete doing that, I will have no problems posting it In Google Play/Apple Store?
     
  39. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    Correct, there will be no problems. If you are adding Google Play in app purchases at some point later, you can simply remove that code line.
     
  40. Delacroz

    Delacroz

    Joined:
    Sep 23, 2019
    Posts:
    13
    Ok! Now, it's working, but when i try to use live instead sandbox, when clicking on purchase I received this message "SignatureInvalid"
     
  41. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    @Delacroz Are you using the latest version of SIS? Did you double check that your production credentials are valid, no space at the beginning or end of it?
     
  42. Delacroz

    Delacroz

    Joined:
    Sep 23, 2019
    Posts:
    13
    what do you mean by "production credentials" ? would be the secret and the client id from paypal? if yes, i do

    And one more question, would I be able to keep everything inside the app? Without directing the user to a browser? With a webview for example?
     
  43. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    Yes, the Live Client ID and Live Secret values in the Plugin Setup tab. I'm not able to debug remotely, but you could send them to me in a private message so I can test if it otherwise works for me.

    You could display the PayPal window in a webview. However this is out of scope for this asset, since its core part is the billing behavior. There are several other separate assets on the Asset Store focusing on webviews.
     
  44. WolvesDev

    WolvesDev

    Joined:
    Nov 29, 2021
    Posts:
    1
  45. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    @WolvesDev you are looking at the Receipt Validator service documentation, which does not support validation on Steam. For Simple IAP System the documentation is here.
     
    WolvesDev likes this.
  46. Delacroz

    Delacroz

    Joined:
    Sep 23, 2019
    Posts:
    13
    Just Created another app in paypal and it works :D
     
    Baroni likes this.
  47. Delacroz

    Delacroz

    Joined:
    Sep 23, 2019
    Posts:
    13
    @Baroni if I want to use a webview, where do I get the paypal link?

    And if I want to make a cart with more than 1 item, is there some way to do it?
     
  48. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    The checkout url is created in the PayPalStore class, directly in the Purchase(productID) method, where it calls Application.OpenURL at the end. The order first needs to be initialized and confirmed by PayPal, so you cannot just dynamically construct the url beforehand. However you could add an event firing off the url string at that point and receive it in your own script, for the webview implementation.

    A shopping cart implementation is currently not supported. This would require not having individual buy buttons per product, but already adding products to a virtual cart in your app, then sending off the combined cart for order to PayPal. If we are talking about physical products, users are typically more willing to buy multiple products in a storefront on a "real" website. I decided for the single-product implementation in Simple IAP System because that results in the lowest purchase friction due to the fast checkout. You could add all products to a shopping cart website though, and display that in your webview.
     
  49. salmanjaved5050

    salmanjaved5050

    Joined:
    Aug 2, 2015
    Posts:
    6
    Hi Baroni! So for paypal how do we authenticate the user and does it open a web page within the app?
     
  50. Baroni

    Baroni

    Joined:
    Aug 20, 2010
    Posts:
    3,187
    Hi @salmanjaved5050, regarding the webview I already answered that here a few posts above yours.

    When buying something on PayPal, users are directed to the PayPal website opening in a separate browser for security reasons. It then goes over https/ssl using their PayPal login credentials as usual.