How to integrate cryptocurrency payments in react native ios app (Algorand) - ios

I am using Algorand blockchain for NFT transaction on mobile app. The app is in react native and on the app I am selling/buying NFT's. Apple rejected my app saying that I need to implement in-app purchases. How would I go about doing that?
How to implement a cryptocurrency payment gateway? Does apple's in-app purchases support cryptocurrency payments?
I can't find any helpful resource to resolve this issue.

Apple's in-app purchases do not support cryptocurrency payments.
However, they do support cryptocurrency cards that are linked to Apple Pay. Lots of these exist, e.g. Coinbase. There are also rumours that AlgoFi may release one too.
The payment is converted into fiat before the transaction, so on your app it would be like handling a fiat payment. You can then theoretically use this fiat to buy $ALGO, and then use that for the transaction. The UX would ultimately look the same for the end user and it would seem like they are using the existing cryptocurrency in their wallet. But like a commenter said this is not reliable.
Apple does not allow apps that have any payments outside of their payment system. This means that currently an app cannot write to the blockchain at ALL unless payments and gas are relayed. You can work around this by developing an NFT marketplace app that allows users to view their NFTs and explore others, but if they want to do any transactions they are redirected to the mobile website.
So you have three options: trusting that the fiat is successfully taken out of the user's account and buying $ALGO, waiting for the payment to go through which means the transaction may take weeks, or directing to a website for all blockchain transactions.

Related

iOS app rejected because of AliPay and Wechat pay

This is the response of Apple, anyone here published an IOS app with either AliPay or Wechat pay.
I need help in regards with this.
Thank you.
Specifically, we found that your app includes AliPay (支付寶) and Taobao H5 Payments, which provides access to external payment mechanisms and enables the purchase of content, services, or functionality by means other than the in-app purchase API.
You can't use other third party payment methods for the purchase of digital goods/content with your app which is going to be consuming with in the app.
So for that apple recommends the use of in-app purchase.
When can I use third party payment methods?
When you are selling physical goods or provide services for the payment you receive.
When cot user in-app purchase?
When you are providing user digital goods like unlocking a game level, buying coins, etc. the you must use in-app purchase.
For more info. regarding this you can check the Apple's official document here
I came across the same problem when I had integrated BrainTree with my application. And then me and my team went ahead with further communication for the same as one of my app had same configuration even though it was acceptable by AppStore.
So If any of the features or levels in game is opened after paying to
the developers then that payment has to be done using In App Purchase.
And even in that around 30 to 40% of the amount developers has to pay
to the Apple.
And If payment is done like buying pizza or any other shopping in
which user does not need to pay anything to open any of the content
within app in that case developers can use any payment gateway.

Passing 3.1.3 Content-based “Reader” Apps without using IAP

First of all, my app include contents which are only allow to watch or access for membership subscribed user. It include 1 week, 2 weeks, 3weeks, 4 weeks and user have to pay it via other payment gateway which was popular at our country instead of IAP.
I can't use IAP because clients(users) at my country have problem with using IAP services because there is no international credit card services or payment services such as MasterCard,VIZA,etc are not supported as well. Also we can buy iTunes Gift Cards of course. But, compare it to our price subscription list, it is really too much
Here our subscriptions prize and it doesn't include auto-renew
1 weeks subscriptions -> $0.5
2 weeks subscriptions -> $0.9
3 weeks subscriptions -> $1.3
4 weeks subscriptions -> $1.5
So compare it to Apple Store Gift cards $10, that is not possible to use IAP. And at our country, giftcards are hard to buy because there is no Official Apple Store or authorized store.
To explain you about my popular payment gateway, it was like using Apple Gift Cards. It was just purchasing PIN codes from nearest Mini-marts, cafe and other shops. You can see the detail here.
http://reddotpayment.com
At my app, I included internal web view and it leads to reddot page which include textfield for PIN codes. After user fill the pin code which they bought and click subscribe, it can now part of our membership subscriptions. That's how it goes.
But Apple didn't allow and reject my app. They respond me like that.
Guideline 3.1.1 - Business
We noticed that your app enables the purchase of content, services, or
functionality in the app by means other than the in-app purchase API,
which is not appropriate for the App Store.
Specifically, your app uses Red For pay to purchase subscription
outside the app.
Next Steps
While the payment system that you have included may conduct the
transaction outside of the app, if the purchasable content,
functionality, or services are intended to be used in the app, they
must be purchased through in-app purchase, within the app - unless it
is of the type referenced in guideline 3.1.3 of the App Store Review
Guidelines.
Was it because I do the transaction outside of the app? I mean even internal web view? What if I make the transaction inside the app with UITextField call to our API for making the purchase?
Any Suggestions?
Only two ways to solve this case.
Use their In-App Purchase
Else try to trick the Apple with Server-side control especially when they are reviewing your app for App Store Distribution approval.
Please note :
Using No.2 might get your app rejected when they detect your app is
using 3rd party payment service instead of their because they want the
money for each subscriptions as long as your app meant for using only
at your country or specific territories not international.
Because if you app meant for using at world-wide like Uber or Instagram, then you are at dead end.

Is Apple In-App Purchase required for apps using auto-renewing subscription?

I am developing an iOS application where all payment related things are on existing website, our app don't have any payment related thing in it. A user adds payment details on website and select appropriate plan and can use it on both website and iOS app.
So please tell me that if i have nothing on app for using In-App purchase then it will be get approved on app store or get rejected just because app is not giving them their 30% share?
I need some expert advise...
I just read through that exact section of the developer guidelines, and it confirms that that is prohibited. A recent example of such apps being rejected: apps using Dropbox were being rejected (the Dropbox API had a button that could navigate users to their website to upgrade their account instead of having it take place in-app, where Apple would have gotten a percentage).
A quote from that article:
In case you’re wondering what the reasoning these apps are getting for rejection, here’s what Apple is responding with:
11.13
We found that your app provides access to external mechanisms for purchases or subscriptions to be used in the app, which is not in compliance with the App Store Review Guidelines.
Specifically, your app enables to user to create accounts with Dropbox and Google.
Well that sucks. Apparently at some point when using an app that utilizes the Dropbox SDK, you can create an account for the service if you don’t already have one. At that point, there’s a link to a desktop version of Dropbox that lets you upgrade your account. That’s exactly what Apple isn’t a fan of.
My suggestion would be to make them available for purchase via an in-app purchase, charge 30% more for it (so you make the same amount as if the user made the purchase on the web or on Android), but make the user's job post last for 30% more time. This isn't quite fair for you because, if you make $100 off John for an 30-day listing, you would still only make $100 off me for a 39-day listing (assuming I bought the listing via the iOS app). That said, there is no incentive for me to pay for the listing via the iOS app because I am paying $130 (30% more than John) for it and the additional days.
Best of luck.
http://thenextweb.com/apple/2012/05/02/apps-using-dropbox-are-being-rejected-because-apple-is-playing-hardball/
The link on App Store Review Guidelines mentions:
3.1.3(b) Multiplatform Services: Apps that operate across multiple platforms may allow users to access content, subscriptions, or features they have acquired
elsewhere, including consumable items in multi-platform games, provided those
items are also available as in-app purchases within the app. You must not directly or indirectly target iOS users to use a purchasing method other than in-app purchase, and your general communications about other purchasing methods must not discourage use of in-app purchase.
I am not sure how Netflix does this. New users cannot signup on iOS App, but can sign up on website, purchase subscriptions and use in iOS App.

iOS app got rejected because we must use IAP for payments

My iOS app got rejected because we charge users with Stripe's payment service, and Apple requires us to use IAPs for payments.
We deleted the Stripe reload balance module from the app. Now the only way to recharge it is for the user to go to the website and make the payment. Does this solution work or does the app still have to use IAPs?
Apple has explicitly requested any submission to go through their iAP for any payment. Your rejection is expected and normal. You have two choices, asking a user to pay through iAP or accept the payment on your website. Both works, but you can't and can't explicitly ask your user to pay you directly.
Let's take Dropbox as an example. You can upgrade Dropbox account on their website. It works. But Dropbox isn't allowed to encourage you to do the upgrade in the app itself (unless the payment goes through Apple). That is, you can't do something like a button in the app that takes you to the payment form on your website. If a user knows how and where to do it on the Dropbox website without being told to do in the app, good, Apple doesn't take that 30% commission.
Unless your service is popular, most users wouldn't be bothered to goto your website and give you their credit card number for a purchase. You should consider just giving the 30% commission to Apple, you'll get more sales.
You are required by Apple to use IAP, and can only use IAP, if you are using the purchase to unlock code in the app. You may use other payment systems only if you are selling real world goods and services or, in certain circumstances, files that are being downloaded from your servers. If you use other payment systems they must be used outside of the app. This is explained in the app review guidelines, section 11.
Note that requiring the use of IAP for sales of code distributed by Apple may not be an issue under anti-trust laws. But in any event, if the "market" is smartphones then Apple is not a monopoly player since their market share is limited.

iOS - Integrating credit card payments

I'm aware that we can integrate in-app purchases with storekit. but i want to integrate payments using credit card. will apple allow to integrate such libraries? Are there any such libraries available where users can use their credit card for payment of products with in my app?
Depending on what users are purchasing*, you should be just fine accepting payments in your app. Instead of trying to incorporate some type of payment library into the app I would recommend using a payment API that offloads the work. Take a look at http://stripe.com/ for an example of an excellent payment system designed for ease of integration. Their API reference even mentions integration with iPhone apps.
*If you are trying to sell features or services of the app itself you will almost definitely be running afoul of Apple's guidelines, but based on the fact that you said "products" I am assuming this is not the case. In fact, while you must use the in-app purchase system for "content, functionality, or services in an app" you are specifically forbidden from using it for "physical goods or goods and services used outside of the application" (item 11.3 of Apple's App Store Review Guidelines).
Apple does allow not Apple's IAP in-app payments for goods not consumed in the phone (Digital content) as stated above.
See this example of an approved app that use external library for accepting credit cards in their app:
iStash
In my opinion Stripe is good solution but not the ideal for in-app as it is a web based solution and focuses on web experience.
If you want a true mobile in-app experience I suggest you check out PayPal library or my company, ZooZ, which accepts both PayPal and Credit Cards in one integration.
working project can be find here on github stripe example.
As an iOS dev you'd best have a good read through this. Specifically pertinent to you is section 11.2:
11.2 Apps utilizing a system other than the In App Purchase API (IAP) to purchase content, functionality, or services in an app will be rejected
They want the profit, and they get their cut if you use the IAP API. Hope that clears up any issues.
EDIT: I am assuming based on the wording of your question that the payment will unlock something transitory in the app. IAP are only appropriate when purchasing something digital. If what you are selling is physically tenable, then you shouldn't, and in fact are not allowed, to use the IAP API. In that case, something along the lines of Stripe or a web-based version of Paypal's API would work.
In support of David's answer, I would like to add that, using a payment API to accept payments for products/donation through your app would be ideal.
Apple Pay is now available (as of today) on iPhone 6 and 6 Plus, and active only in US.
But if you still want to add support in your app for devices that cannot use Apple Pay, Authorize.Net now has an iOS SDK which you can use to integrate and enable credit card payments.

Resources