Android Pay made its first Asian appearance in Singapore back in late-June. A couple months later, in August, rumors began circulating that Google was in negotiations with numerous financial companies to prepare for a launch in Japan. Names of the likely partners included: Mitsubishi UFJ Financial Group, East Japan Railway Company, Rakuten, NTT Docomo, and JCB, to name a few. Since then, details have been sparse; but with evidence discovered in the latest update to Android Pay, it's now clear that a deal has been struck with Rakuten.

Teardown

Disclaimer: Teardowns are based on evidence found inside of apks (Android's application package) and are necessarily speculative and usually based on incomplete information. It's possible that the guesses made here are totally and completely wrong. Even when predictions are correct, there is always a chance that plans could change or may be canceled entirely. Much like rumors, nothing is certain until it's officially announced and released.

The features discussed below are probably not live yet, or may only be live for a small percentage of users. Unless stated otherwise, don't expect to see these features if you install the apk.

Rakuten Edy on Android Pay

tp_se_card_background_700dp

For those unfamiliar with Edy, it's a prepaid rechargeable payment system provided by Rakuten. Transactions can be made with either a special contactless card or using a phone with support for Osaifu-Keitai (literally translates to "Wallet Mobile"). Both methods communicate using Sony's FeliCa smart card system, which works over NFC. It's not entirely clear if most Android devices can work with Edy over existing NFC capabilities or if they have to specifically include special hardware.

With that basic explanation out of the way, let's jump right into the functional aspects as they appear right now. Most of this is going to look pretty similar to Android Pay, but there are a few things to be aware of. These are the summarized points regarding Edy cards specifically:

  • Existing cards can be added to and removed from Android Pay.
  • New cards can be created or deleted using Android Pay.
  • Only one (active) card may be attached to a device at a time.
  • There is a limit to the number of cards that can be added per day.
  • There is a Rakuten Edy app that works with Android Pay. It's not clear if the app is required.
  • Payment process: Tell the cashier you're paying with Rakuten Edy, then hold your phone to the terminal

Strings: Edy card management

<string name="rakuten_edy_name">Rakuten Edy</string>

<string name="add_edy_card_title">Create Edy card</string>
<string name="add_existing_edy_card_title">Add existing Edy</string>
<string name="dialog_message_creating_se_card">Creating Edy card</string>
<string name="dialog_message_creating_se_card_2">Adding to Android Pay</string>
<string name="dialog_message_deleting_se_card">Removing from Android Pay</string>
<string name="dialog_message_deleting_se_card_2">Deleting card</string>

<string name="payment_education_title">Your Edy card was created</string>
<string name="payment_education_subtitle">Look for either symbol at checkout and tell the cashier you're paying with Rakuten Edy</string>
<string name="payment_education_description">Then just hold your phone to the terminal</string>

<string name="edy_add_limit_error_message">Can't add another Edy card on this device</string>
<string name="edy_add_limit_exceeded_details">Can't add more than one active Edy card on this device</string>
<string name="edy_add_limit_exceeded_title">Edy card limit exceeded</string>
<string name="edy_ap_provisions_link_label">Special Provisions for Android Pay</string>
<string name="edy_app_name">Rakuten Edy</string>
<string name="edy_company_name">Rakuten Edy, Inc.</string>
<string name="edy_daily_add_limit_error_message">Can't add another Edy card today</string>
<string name="edy_legal_notice_title">Payment Service Act Legal Notice</string>
<string name="edy_name">Edy</string>
<string name="edy_superpoint_setup_link">Set up</string>
<string name="edy_terms_policies_link_label">Terms and Policies</string>
<string name="edy_topup_tos_link_label">Service Policy for Edy Top-up Using Android Pay</string>
<string name="edy_tos_link_label">Terms and Conditions of Use of Rakuten Edy Services</string>

<string name="go_to_edy_support_button_format">Go to %1$s support</string>
<string name="go_to_sp_app">Go to %1$s App</string>

<string name="legal_notice_message_company_name1">楽天Edy発行元</string>
<string name="legal_notice_message_company_name2">楽天Edy株式会社</string>
<string name="legal_notice_message_line1">● 所定のコンビニエンスストアのレジなどでチャージできます。</string>
<string name="legal_notice_message_line2">● 楽天EdyまたはEdyの表示のある加盟店でご利用いただけます。</string>
<string name="legal_notice_message_line3">● チャージ(入金)上限金額は50,000円です。</string>
<string name="legal_notice_message_line4">● 残高は決済端末などで確認できます。</string>
<string name="legal_notice_message_line5">● 紛失時の残高補償はできません。</string>
<string name="legal_notice_message_line6">● 詳しくはホームページ等に掲載のご利用約款をご覧ください。</string>
<string name="legal_notice_message_subtitle">楽天Edyのご利用について</string>
<string name="legal_notice_message_title">資金決済法に基づく情報提供</string>

Like most payment providers, Rakuten engages in the time honored tradition of sign-up bonuses and promotions for using their service. Android Pay will support both. If you've ever used Rakuten's online store (formerly Buy.com), you've surely heard of Rakuten Super Points – these are the rewards for regular spending on the card at a rate of 1 point per 200 yen. There are strings to describe gifts and sign-up bonuses, but the specific terms will obviously change with different promotional periods, therefore they will be fed from a server and aren't detailed here.

One notable point is that if an account has a maximum balance associated with it and a gift would add enough money to exceed that amount, it will not be added until enough money has been spent to open up more space.

Strings: Edy gifts and promotions

<string name="edy_message_title">Earn Rakuten Super Points!</string>
<string name="edy_message_description">Set up a Rakuten account for Edy purchases to get 1 point per 200 yen spent with Edy.</string>

<string name="sign_up_promotion_description">¥%1$d gift with sign up</string>
<string name="sign_up_promotion_description_for_edy">Sign up with Edy and get a &lt;b&gt;¥%1$d gift&lt;/b&gt;</string>

<string name="gift_error_body_ineligible">This is because you've had an Edy card on this device before. See the terms and conditions for more info.</string>
<string name="gift_error_body_limit_exceeded">¥%1$d can't be added to your Edy card because it will exceed your balance limit. Once you spend or transfer enough of your balance, your gift will be automatically redeemed.</string>
<string name="gift_error_ineligible">Ineligible for gift</string>
<string name="gift_error_title_generic">Error loading sign-up gift</string>
<string name="gift_error_title_ineligible">Ineligible for gift with sign-up</string>
<string name="gift_error_title_limit_exceeded">Gift will exceed Edy card limit</string>
<string name="gift_error_user_error">Can't redeem gift</string>
<string name="gift_transaction_title">Gift</string>
<string name="gift_transacton_amount">+ ¥%1$d</string>
<string name="gift_transacton_status_failed_ineligible">Ineligible for gift. Learn more</string>
<string name="gift_transacton_status_failed_user_error">Can't redeem gift. Learn more</string>
<string name="gift_transacton_status_pending">Pending</string>

It's worth a quick disclaimer to point out that this evidence just shows Rakuten Edy is going to be supported, but it doesn't mean another company won't launch Android Pay support first or that any other company doesn't (or won't) have a deal with Google. For now, this is just the proof that Rakuten is on board. And that leads us to the next section...

Other e-money providers

Rakuten Edy is just one of many providers that handles e-money in Japan. Some other popular options include Suica, Pasmo, Manaca, and Icoca, to name a few. Each is generally available in different regions or from services, but they all operate on the same system. Google is likely preparing to support many of these as generic text has also been added that doesn't have to relate to just Edy. Again, the functions can be easily summarized, but it's worth noting that some of them may not be available with all cards.

  • The cards are rechargeable and money can be added through Android Pay.
  • You can see your card balance in Android Pay.
  • Your mobile wallet can be locked and transactions (both recharging and paying) can't be made until it's unlocked.
  • Gift cards, loyalty programs, and special offers can be stored in the app. This likely includes things associated specifically with each e-money card (e.g. discounts that are only given to a certain card).
  • Before a card can be deleted, any remaining balance must be spent or transferred out.

Strings: Generic card management strings

<string name="header_emoney_card">E-money</string>
<string name="list_text_emoney">E-money</string>

<string name="felica_lock_title">NFC / Osaifu-Keitai is locked</string>
<string name="felica_locked_message">You'll need to unlock it to add e-money to Android Pay</string>
<string name="felica_initialization_error">Failed to initialize the chip. Please try again later.</string>

<string name="nfc_osaifu_title">NFC / Osaifu-Keitai is locked</string>
<string name="nfc_osaifu_message">You'll need to unlock it to pay with Android Pay</string>
<string name="osaifu_keitai_tos_link">Osaifu-Keitai Usage Regulations</string>

<string name="se_card_balance">Balance</string>

<string name="action_add_se_payment_card">Add e-money</string>
<string name="add_emoney_card_dialog_title">Add %1$s card</string>
<string name="add_emoney_generic_error_message">Please try again later</string>
<string name="add_emoney_generic_error_title_format">%1$s card couldn't be created</string>
<string name="add_emoney_title">Add e-money</string>
<string name="add_emoney_unsupported_device_error_title_format">%1$s does not support this device yet. Try again in a few days.</string>

<string name="se_trans_type_gift">Gift</string>
<string name="se_trans_type_purchase">Purchase</string>
<string name="se_trans_type_topup">Money added</string>
<string name="se_trans_type_unknown">Unknown</string>

<string name="se_card_topup_action">Add money</string>
<string name="se_page1_subtitle">Sign up quickly, add to your balance instantly, and earn points</string>
<string name="se_page1_title">E-money made easy</string>
<string name="se_page2_subtitle">Your loyalty programs, gift cards, and offers will be on hand when you need them</string>
<string name="se_page2_title">All your cards in one place</string>
<string name="se_page3_subtitle">Your loyalty programs, gift cards, and offers will be on hand when you need them</string>
<string name="se_page3_title">Always ready to save</string>
<string name="se_tos_rpc_error">You need a network connection to continue</string>

<string name="delete_card_generic_error_title">%1$s card couldn't be deleted</string>
<string name="delete_error_use_balance_dialog_message_format">Before deleting your %1$s card, you'll need to spend your remaining balance, or transfer it to another device using the %2$s app.</string>
<string name="delete_error_use_balance_dialog_title">Spend or transfer your balance first</string>
<string name="delete_se_card_dialog_button">Delete</string>
<string name="delete_se_card_dialog_message_format">Your %1$s card will be deleted and you'll no longer be able to use it when paying with your phone</string>
<string name="delete_se_card_dialog_title_format">Delete %1$s card?</string>
<string name="delete_se_card_format">Delete %1$s card</string>

<string name="emoney_tos_message_format">By accepting, you agree to the %1$s, %2$s and %3$s. All service provider %4$s are subject to terms and conditions.</string>
<string name="emoney_tos_title">E-Money Service Provider Terms</string>
<string name="emoney_used_by_other_account_message_format">You can only use %1$s with one Google Account per device. To add an %1$s card under this account, you'll need to delete your other one.</string>
<string name="emoney_used_by_other_account_title_format">%1$s is being used with another Google Account</string>

<string name="google_tos_message1">In order for Google to provide Android Pay services, you permit Google to %1$s to apps and sites that you've set up Android Pay and to share your device, payment, location, and account info with your payment method's issuer and network. Where necessary to process your transactions, you also permit Google to share your personal info with merchants, payment processors, and other third parties.</string>
<string name="google_tos_message2">In order for Google to provide and improve Android Pay services, you permit Google to collect transaction, account, and other personal info from third parties, including merchants and your payment method's issuer.</string>
<string name="google_tos_title">Info Google May Share &amp; Collect</string>

There are a couple of under-the-hood changes that might be interesting to some readers. If you were paying attention back in the early days of Google Wallet – before it was rebranded to Android Pay and a new Google Wallet app was created for interpersonal transactions – you might remember that it relied on a feature called Secure Element (SE). This was used to retain a small amount of critical data Google Wallet could use for storing critical account information. Many OEMs chose not to include a Secure Element in their phones, which left Google Wallet mostly unsupported. Google switched to a new method called Host Card Emulation (HCE). Naturally, Google chose to abandon Secure Element rather than try to support both methods.

And that was then... Since phones equipped with Sony's FaliCa technology use a Secure Element to protect their account data, Android Pay will have to return to supporting it, as well. As a result, a former requirement for HCE support has been dropped from the Android Pay app:

<uses-feature android:name="android.hardware.nfc.hce" android:required="false" />

And there are now new activities and services dedicated to accessing the Secure Element (referred to as "secard").

Secure Element activities and services

<activity android:name="com.google.commerce.tapandpay.android.secard.SelectServiceProviderActivity" android:label="@string/add_emoney_title" android:parentActivityName="com.google.commerce.tapandpay.android.cardlist.CardListActivity" android:screenOrientation="portrait" android:theme="@style/Theme.AppCompat.Light.DarkActionBar" />
<activity android:name="com.google.commerce.tapandpay.android.secard.SeCardDetailsActivity" android:launchMode="singleTop" android:parentActivityName="com.google.commerce.tapandpay.android.cardlist.CardListActivity" android:screenOrientation="portrait" android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
<activity android:name="com.google.commerce.tapandpay.android.secard.threedomainsecure.ThreeDomainSecureActivity" android:parentActivityName="com.google.commerce.tapandpay.android.secard.SeCardDetailsActivity" android:screenOrientation="portrait" android:theme="@style/Theme.AppCompat.Light.DarkActionBar" />
<service android:name="com.google.commerce.tapandpay.android.secard.ReadSecureElementService" android:exported="true" android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE">
<intent-filter>
<action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" />
</intent-filter>
</service>

What's New(-ish)

2016-11-30 18.55.00

Finally, I wanted to quickly point out a change from the v1.10 update that we skipped because it wasn't really worth a post by itself. There's one lone modification to the Settings screen: A new "promotional notifications" toggle has been added. The purpose of this setting is pretty obvious. It's on by default, so if you're particularly bothered by this sort of thing, go turn it off.

Download

The APK is signed by Google and upgrades your existing app. The cryptographic signature guarantees that the file is safe to install and was not tampered with in any way. Rather than wait for Google to push this download to your devices, which can take days, download and install it just like any other APK.

Version: 1.12.141346482