Skip to content

Commit d04603c

Browse files
committed
Pay/Wallet: Add more API interface dummies
1 parent 2eb77bc commit d04603c

File tree

83 files changed

+2455
-171
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+2455
-171
lines changed

play-services-pay/core/src/main/kotlin/org/microg/gms/pay/PayService.kt

Lines changed: 130 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,45 @@
55

66
package org.microg.gms.pay
77

8+
import android.content.Context
89
import android.os.Parcel
10+
import android.util.Base64
11+
import android.util.Log
912
import com.google.android.gms.common.Feature
13+
import com.google.android.gms.common.api.ApiMetadata
1014
import com.google.android.gms.common.api.CommonStatusCodes
15+
import com.google.android.gms.common.api.Status
1116
import com.google.android.gms.common.internal.ConnectionInfo
1217
import com.google.android.gms.common.internal.GetServiceRequest
1318
import com.google.android.gms.common.internal.IGmsCallbacks
19+
import com.google.android.gms.pay.DataChangeListenerRequest
20+
import com.google.android.gms.pay.GetBulletinsRequest
21+
import com.google.android.gms.pay.GetClosedLoopCardsFromServerRequest
22+
import com.google.android.gms.pay.GetClosedLoopCardsRequest
23+
import com.google.android.gms.pay.GetDigitalCarKeysRequest
24+
import com.google.android.gms.pay.GetOnboardingInfoRequest
25+
import com.google.android.gms.pay.GetPayCapabilitiesRequest
26+
import com.google.android.gms.pay.GetPaymentMethodsRequest
27+
import com.google.android.gms.pay.GetSortOrderRequest
28+
import com.google.android.gms.pay.GetValuablesFromServerRequest
29+
import com.google.android.gms.pay.GetValuablesRequest
1430
import com.google.android.gms.pay.internal.IPayService
31+
import com.google.android.gms.pay.internal.IPayServiceCallbacks
1532
import org.microg.gms.BaseService
1633
import org.microg.gms.common.GmsService
34+
import org.microg.gms.common.GooglePackagePermission
35+
import org.microg.gms.common.PackageUtils
36+
import org.microg.gms.utils.ExtendedPackageInfo
37+
import org.microg.gms.utils.toBase64
1738
import org.microg.gms.utils.warnOnTransactionIssues
1839

1940
private const val TAG = "PayService"
2041

2142
class PayService : BaseService(TAG, GmsService.PAY) {
2243
override fun handleServiceRequest(callback: IGmsCallbacks, request: GetServiceRequest, service: GmsService) {
23-
callback.onPostInitCompleteWithConnectionInfo(CommonStatusCodes.SUCCESS, PayServiceImpl(), ConnectionInfo().apply {
44+
val packageName = PackageUtils.getAndCheckCallingPackage(this, request.packageName)
45+
?: throw IllegalArgumentException("Missing package name")
46+
callback.onPostInitCompleteWithConnectionInfo(CommonStatusCodes.SUCCESS, PayServiceImpl(this, packageName), ConnectionInfo().apply {
2447
features = arrayOf(
2548
Feature("pay", 10),
2649
Feature("pay_attestation_signal", 1),
@@ -93,7 +116,112 @@ class PayService : BaseService(TAG, GmsService.PAY) {
93116
}
94117
}
95118

96-
class PayServiceImpl : IPayService.Stub() {
119+
class PayServiceImpl(private val context: Context, private val packageName: String) : IPayService.Stub() {
120+
121+
private val isFirstParty
122+
get() = ExtendedPackageInfo(context, packageName).hasGooglePackagePermission(GooglePackagePermission.WALLET)
123+
124+
override fun getValuables(request: GetValuablesRequest?, callbacks: IPayServiceCallbacks?, metadata: ApiMetadata?) {
125+
if (!isFirstParty) {
126+
callbacks?.onProtoSafeParcelable(Status.INTERNAL_ERROR, null)
127+
return
128+
}
129+
Log.d(TAG, "Not yet implemented: getValuables($request)")
130+
callbacks?.onProtoSafeParcelable(Status.INTERNAL_ERROR, null)
131+
}
132+
133+
override fun getValuablesFromServer(request: GetValuablesFromServerRequest?, callbacks: IPayServiceCallbacks?, metadata: ApiMetadata?) {
134+
if (!isFirstParty) {
135+
callbacks?.onProtoSafeParcelable(Status.INTERNAL_ERROR, null)
136+
return
137+
}
138+
Log.d(TAG, "Not yet implemented: getValuablesFromServer($request)")
139+
callbacks?.onProtoSafeParcelable(Status.INTERNAL_ERROR, null)
140+
}
141+
142+
override fun getClosedLoopCards(request: GetClosedLoopCardsRequest?, callbacks: IPayServiceCallbacks?, metadata: ApiMetadata?) {
143+
if (!isFirstParty) {
144+
callbacks?.onProtoSafeParcelable(Status.INTERNAL_ERROR, null)
145+
return
146+
}
147+
Log.d(TAG, "Not yet implemented: getClosedLoopCards($request)")
148+
callbacks?.onProtoSafeParcelable(Status.INTERNAL_ERROR, null)
149+
}
150+
151+
override fun getClosedLoopCardsFromServer(request: GetClosedLoopCardsFromServerRequest?, callbacks: IPayServiceCallbacks?, metadata: ApiMetadata?) {
152+
if (!isFirstParty) {
153+
callbacks?.onProtoSafeParcelable(Status.INTERNAL_ERROR, null)
154+
return
155+
}
156+
Log.d(TAG, "Not yet implemented: getClosedLoopCardsFromServer($request)")
157+
callbacks?.onProtoSafeParcelable(Status.INTERNAL_ERROR, null)
158+
}
159+
160+
override fun registerDataChangedListener(request: DataChangeListenerRequest?, callbacks: IPayServiceCallbacks?, metadata: ApiMetadata?) {
161+
if (!isFirstParty) return
162+
Log.d(TAG, "Not yet implemented: registerDataChangedListener($request)")
163+
}
164+
165+
override fun getSortOrder(request: GetSortOrderRequest?, callbacks: IPayServiceCallbacks?, metadata: ApiMetadata?) {
166+
if (!isFirstParty) {
167+
callbacks?.onGetSortOrderResponse(Status.INTERNAL_ERROR, null)
168+
return
169+
}
170+
Log.d(TAG, "Not yet implemented: getSortOrder($request)")
171+
callbacks?.onGetSortOrderResponse(Status.INTERNAL_ERROR, null)
172+
}
173+
174+
override fun getPaymentMethods(request: GetPaymentMethodsRequest?, callbacks: IPayServiceCallbacks?, metadata: ApiMetadata?) {
175+
if (!isFirstParty) {
176+
callbacks?.onProtoSafeParcelable(Status.INTERNAL_ERROR, null)
177+
return
178+
}
179+
Log.d(TAG, "Not yet implemented: getPaymentMethods($request)")
180+
callbacks?.onProtoSafeParcelable(Status.INTERNAL_ERROR, null)
181+
}
182+
183+
override fun getOnboardingInfo(request: GetOnboardingInfoRequest?, callbacks: IPayServiceCallbacks?, metadata: ApiMetadata?) {
184+
if (!isFirstParty) {
185+
callbacks?.onProtoSafeParcelable(Status.INTERNAL_ERROR, null)
186+
return
187+
}
188+
Log.d(TAG, "Not yet implemented: getOnboardingInfo($request)")
189+
callbacks?.onProtoSafeParcelable(Status.INTERNAL_ERROR, null)
190+
}
191+
192+
override fun getPayCapabilities(request: GetPayCapabilitiesRequest?, callbacks: IPayServiceCallbacks?, metadata: ApiMetadata?) {
193+
Log.d(TAG, "Not yet implemented: getPayCapabilities($request)")
194+
callbacks?.onStatus(Status.INTERNAL_ERROR)
195+
}
196+
197+
override fun getDigitalCarKeys(request: GetDigitalCarKeysRequest?, callbacks: IPayServiceCallbacks?, metadata: ApiMetadata?) {
198+
if (!isFirstParty) {
199+
callbacks?.onProtoSafeParcelable(Status.INTERNAL_ERROR, null)
200+
return
201+
}
202+
Log.d(TAG, "Not yet implemented: getDigitalCarKeys($request)")
203+
callbacks?.onProtoSafeParcelable(Status.INTERNAL_ERROR, null)
204+
}
205+
206+
override fun getWalletBulletins(request: GetBulletinsRequest?, callbacks: IPayServiceCallbacks?, metadata: ApiMetadata?) {
207+
if (!isFirstParty) {
208+
callbacks?.onProtoSafeParcelable(Status.INTERNAL_ERROR, null)
209+
return
210+
}
211+
Log.d(TAG, "Not yet implemented: getWalletBulletins($request)")
212+
callbacks?.onProtoSafeParcelable(Status.INTERNAL_ERROR, null)
213+
}
214+
215+
override fun performIdCard(request: ByteArray?, callbacks: IPayServiceCallbacks?, metadata: ApiMetadata?) {
216+
if (!isFirstParty) {
217+
callbacks?.onByteArray(Status.INTERNAL_ERROR, null)
218+
return
219+
}
220+
Log.d(TAG, "Not yet implemented: performIdCard(${request?.toBase64(Base64.NO_WRAP)})")
221+
callbacks?.onByteArray(Status.INTERNAL_ERROR, null)
222+
}
223+
224+
97225
override fun onTransact(code: Int, data: Parcel, reply: Parcel?, flags: Int): Boolean =
98226
warnOnTransactionIssues(code, reply, flags, TAG) { super.onTransact(code, data, reply, flags) }
99227
}

play-services-pay/core/src/main/kotlin/org/microg/gms/pay/ThirdPartyPayService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class ThirdPartyPayServiceImpl : IThirdPartyPayService.Stub() {
5858

5959
override fun savePasses(request: SavePassesRequest?, callback: IPayServiceCallbacks) {
6060
Log.d(TAG, "savePasses: return SERVICE_MISSING")
61-
callback.onPendingIntent(Status(CommonStatusCodes.SERVICE_MISSING))
61+
callback.onError(Status(CommonStatusCodes.SERVICE_MISSING))
6262
}
6363

6464
override fun syncBundle(request: SyncBundleRequest?, callback: IPayServiceCallbacks?) {
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.google.android.gms.pay;
2+
3+
parcelable DataChangeListenerRequest;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.google.android.gms.pay;
2+
3+
parcelable GetBulletinsRequest;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.google.android.gms.pay;
2+
3+
parcelable GetClosedLoopCardsFromServerRequest;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.google.android.gms.pay;
2+
3+
parcelable GetClosedLoopCardsRequest;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.google.android.gms.pay;
2+
3+
parcelable GetDigitalCarKeysRequest;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.google.android.gms.pay;
2+
3+
parcelable GetOnboardingInfoRequest;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.google.android.gms.pay;
2+
3+
parcelable GetPayCapabilitiesRequest;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.google.android.gms.pay;
2+
3+
parcelable GetPaymentMethodsRequest;

0 commit comments

Comments
 (0)