I synced up with carlo and he basically says that he started from what you suggested on https://github.com/poynt/cordova-plugin-poynt/blob/develop/www/PoyntPlugin.js#L29 by running getPlans() but he obtained the “Not connected to inAppBillingService!” error message. It is not clear what to include in “options” or where else to obtain the list of the App “billing plans” and execute a purchase with launchBilling(). He tried to compare info with the native plugin, but could not cross-check data. He has to insert the AppID but does not know how and where to do it. Could you help him?
A little update:
I have also tried to execute Init() before calling getPlans() and the error has changed:
PoyntError{code=27, httpStatusCode=0, apiErrorCode=null, reason=‘null’, data=‘null’, requestId=‘null’, throwable=}
Code:
Poynt.billing.Init(function(data) {
// Successful (returns data="")
Poynt.billing.getPlans(function(data) {
Log.debugLog("getPlans OK: " + JSON.stringify(data));
}, function(err) {
// Fail: returns the error code=27
}, { /* what options? */ });
}, function(err) { }, { /* what options? */ });
Where do the plugin get the AppID or PackageName ?
How can I tell if the plugin is calling the EU portal or USA Portal?
Thankyou.
Carlo
A developer of the plugin said that those functions are still under development.
Hi Carlo,
I see that the dev variant of your app is on US and one of the terminals is on EU, this might be one reason. Check the logcat for the billing endpoint.
Thankyou @deepak I have uploaded the apk also on EU portal.
Anyway, this plugin was not working even when the device was on US.
Since the plugin is under development, maybe it is not fully functional.
Therefore we cannot use that plugin and we cannot complete the Billing procedure of the App.
What alternative can we apply?
I am able to use the Cloud API to get Billing Plans of an App, with this Api Endpoint:
https://billing.poynt.net/apps/urn:aid:[AppID]/plans
But I don’t know how to execute launchBillingFragment(). Is there another EndPoint of the API to do it?
Without this information we cannot complete the APP with the Billing part.
Thankyou.
Carlo
@carlo318, here’s a working Cordova Project with billing: https://github.com/dsnatochy/TestCordovaApp.
You can see the calls to billing service in index.html.
Hi Dennis, thankyou for the information.
I am trying to call the functions like in the example, using our test terminal.
- The Poynt.billing.Init() goes fine;
- Poynt.billing.launchBilling() shows the popup “Confirm purchase” for 1 second, then shows the error:
"No product found for given productId"
This happens with the approved billing planID from DEV App of EU portal, but also with planID from DEV App of USA portal. - Poynt.billing.getPlans() returns this error:
PoyntError {code=30, httpStatusCode=0, apiErrorCode=null, reason='null', data='null', requestId='null', throwable=}
The appID is correct, with .dev suffix.
Are you sure this terminal has been correctly switched to EU portal?
I cannot access to any Poynt App store on the device (I uploaded the App via Usb).
Thankyou.
Here is the logcat of the App.
It looks like there is a problem with the Auth-Token of the API.
Please let me know if you need a more extensive log (maybe attached via email):
08-29 03:12:26.334 1403 1632 D CO.POYNT.SERVICES/AppSettingsImpl.java:221: AsyncTask #4 userName (carlo.girelli@softagile.com) refreshToken (1:2:1:2:3/Hcjx9UG6CkhU22n0TNzdoZiefP5jkLJpgM3OxKM3eH7CVTOg0elJgPV3YKi9z/q9EC21KhEg9GuLuz8yth3w==) accessToken (eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJjYXJsby5naXJlbGxpQHNvZnRhZ2lsZS5jb20iLCJwb3ludC5kaWQiOiJ1cm46dGlkOjQ1ZTg0ZmE2LWVjNDEtM2I1ZC04MjRhLTM2ODI1YTZiMDc4MCIsInBveW50LmRzdCI6IkQiLCJwb3ludC5vcmciOiIwYmM0OGMxYy02NWNhLTQwNWQtODU4Zi05NTJhNDNhODkzMjYiLCJwb3ludC5zY3QiOiJVIiwiaXNzIjoiaHR0cHM6XC9cL3NlcnZpY2VzLWV1LnBveW50Lm5ldCIsInBveW50LnVyZSI6Ik8iLCJwb3ludC5raWQiOjYxNTUyNDYxNTI4MjcxNDE3NzcsInBveW50LnNjdiI6ImNhcmxvLmdpcmVsbGlAc29mdGFnaWxlLmNvbSIsInBveW50LnN0ciI6ImM4NGVlYzJjLTA5MDgtNDExYi05MjZlLTYwZGFiMzQxOWNlMSIsImF1ZCI6InVybjp0aWQ6NDVlODRmYTYtZWM0MS0zYjVkLTgyNGEtMzY4MjVhNmIwNzgwIiwicG95bnQudWlkIjoxMTA3LCJwb3ludC5iaXoiOiI1ZTA2ODk2Ny05NmViLTQ5OGUtYjg1Mi0yMzAzNzIzZWRiNDIiLCJleHAiOjE1MzU1Mjg5MTIsImlhdCI6MTUzNTQ0MjUxMiwianRpIjoiMWEzYmI3ZGEtZjBjZC00YzljLWFiZWUtMzY1YzMwMTJhNGQyIn0.O46jD--Y1o9n_Vne-49e9mxIS9umAjbHD7NF__NfGsg26xbq6J7k6Z8LA-pJ7sRX1Hb_ui6erw6oJ-oOCmD-XQQko1Suzo7KfHv5qjf7g-_fYIVo61WJpiFBbncspJovmOuBYm4QAx4ksSTaqwGhA-E8z5YWmJ6OC421RcXeK1HOeANidm0aXH1A_nw72BUvsj6DWOGRCun11xXgf4Ypb3gkJBUYsZwaH2ueVJtGPUAqctvuDREnDql-XYT6cnqrtBk5QiwK0tfbTEgAAZuTWVb1eSqowcJJgPs8-bR87QNN7UXsWTpfG1Ho5lFESnLnxXcQxwJf6cYyz_EK43IwAQ)
08-29 03:12:26.334 1403 1632 D CO.POYNT.SERVICES/RestAdapterProvider.java:95: AsyncTask #4 Rest adapter already created or services endpoint hasn't changed (https://services-eu.poynt.net) (https://services-eu.poynt.net)
08-29 03:12:26.335 1403 1632 I CO.POYNT.SERVICES/RestAdapterProvider.java:110: AsyncTask #4 Services endpoint hasn't changed (https://services-eu.poynt.net)
08-29 03:12:26.343 8078 8078 D WebView : evaluateJavascript=cordova.callbackFromNative('SQLitePlugin278389213',true,1,[[{"type":"success","result":{"rowsAffected":0}}]],false);
08-29 03:12:26.344 1403 1632 D CLOUD-API: ---> HTTP POST https://services-eu.poynt.net/token
08-29 03:12:26.344 1403 1632 D CLOUD-API: Authorization: BEARE
08-29 03:12:26.344 1403 1632 D CLOUD-API: api-version: 1.2
08-29 03:12:26.344 1403 1632 D CLOUD-API: User-Agent: Poynt Services/NEXI_PATCH1_1.0-CI17_NEXI_-d (Android 6.0; merchant-staging-p61b-56; urn:tid:45e84fa6-ec41-3b5d-824a-36825a6b0780; P6SW186JS001164)
08-29 03:12:26.344 1403 1632 D CLOUD-API: POYNT-SESSION-ID:
08-29 03:12:26.344 1403 1632 D CLOUD-API: Content-Type: application/x-www-form-urlencoded; charset=UTF-8
08-29 03:12:26.344 1403 1632 D CLOUD-API: Content-Length: 99
08-29 03:12:26.344 1403 1632 D CLOUD-API: grantType=TOKEN_EXCHANGE&audience=urn%3Aaid%3Astore.poynt.net&subject=carlo.girelli%40softagile.com
08-29 03:12:26.345 1403 1632 D CLOUD-API: ---> END HTTP (99-byte body)
08-29 03:12:26.345 1403 1632 D CLOUD-API: POYNT-REQUEST-ID: 852b8469-0165-1000-9567-56e0d46b1678
[...]
08-29 03:12:26.869 1403 1632 I POYNT-EVENT: {"time" : "2018-08-29T10:12:26Z", "type" : "REST_API", "status" : "SUCCESS", "storeDeviceId" : "urn:tid:45e84fa6-ec41-3b5d-824a-36825a6b0780", "processingTime" : 522.002615, "method" : "POST", "apiStatusCode" : 200, "apiRequestId" : "852b8469-0165-1000-9567-56e0d46b1678", "apiEndpoint" : "https://services-eu.poynt.net/token", "apiServerDate" : "Wed, 29 Aug 2018 10:12:26 GMT", "apiServerBuild" : "1.2.465-2018-08-28T17:40:31Z", "apiServerInstanceId" : "i-05ebcee7ff08a538c"}
08-29 03:12:26.869 1403 1632 D CLOUD-API: <--- HTTP 200 https://services-eu.poynt.net/token (524ms)
08-29 03:12:26.869 1403 1632 D CLOUD-API: OkHttp-Selected-Protocol: h2
08-29 03:12:26.869 1403 1632 D CLOUD-API: date: Wed, 29 Aug 2018 10:12:26 GMT
08-29 03:12:26.869 1403 1632 D CLOUD-API: content-type: application/json;charset=UTF-8
08-29 03:12:26.869 1403 1632 D CLOUD-API: set-cookie: AWSALB=L66IJsuL7tHpaJz0w/zBDlw6qG2mZ+phroR+6ft0APuTCqQp4pqka3fWeLndm6unLblDEttjbJz+M/kfFYYS+Qcg/IvD87sS946uenSmCmJdCEqrcuoVDMYKeNGA; Expires=Wed, 05 Sep 2018 10:12:26 GMT; Path=/
08-29 03:12:26.869 1403 1632 D CLOUD-API: server: Apache-Coyote/1.1
08-29 03:12:26.869 1403 1632 D CLOUD-API: poynt-request-id: 852b8469-0165-1000-9567-56e0d46b1678
08-29 03:12:26.869 1403 1632 D CLOUD-API: poynt-build-info: 1.2.465-2018-08-28T17:40:31Z
08-29 03:12:26.869 1403 1632 D CLOUD-API: instance-id: i-05ebcee7ff08a538c
08-29 03:12:26.869 1403 1632 D CLOUD-API: OkHttp-Sent-Millis: 1535537546746
08-29 03:12:26.869 1403 1632 D CLOUD-API: OkHttp-Received-Millis: 1535537546867
08-29 03:12:26.870 1403 1632 D CLOUD-API: {"expiresIn":86400,"accessToken":"eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJjYXJsby5naXJlbGxpQHNvZnRhZ2lsZS5jb20iLCJwb3ludC5kaWQiOiJ1cm46dGlkOjQ1ZTg0ZmE2LWVjNDEtM2I1ZC04MjRhLTM2ODI1YTZiMDc4MCIsInBveW50LmRzdCI6IkQiLCJwb3ludC5zY3QiOiJKIiwicG95bnQub3JnIjoiMGJjNDhjMWMtNjVjYS00MDVkLTg1OGYtOTUyYTQzYTg5MzI2IiwiaXNzIjoiaHR0cHM6XC9cL3NlcnZpY2VzLWV1LnBveW50Lm5ldCIsInBveW50LmtpZCI6NjE1NTI0NjE1MjgyNzE0MTc3NywicG95bnQuaXN0IjoiY29tLnBveW50LnN0b3JlIiwicG95bnQuc3RyIjoiYzg0ZWVjMmMtMDkwOC00MTFiLTkyNmUtNjBkYWIzNDE5Y2UxIiwiYXVkIjoidXJuOmFpZDpzdG9yZS5wb3ludC5uZXQiLCJwb3ludC5iaXoiOiI1ZTA2ODk2Ny05NmViLTQ5OGUtYjg1Mi0yMzAzNzIzZWRiNDIiLCJleHAiOjE1MzU2MjM5NDYsImlhdCI6MTUzNTUzNzU0NiwianRpIjoiMGJhM2U3NjEtMzhmMS00MGE0LTkwNDYtNzhhZTJjYWZlYzIwIn0.KxJbka1G0by0s3ZPidBlZAguxYet1Y9Iqa4OsOEBzggQyOgjULFRGvMel1dOrYZeVMdhhqF_-JDTE0gPagxq22XgaFH2KG0e0_gpQleT_lqotFXz3lot1pxlNfH_SFWv14OtJNDVTXJxSQxrbaFGJz4kw2s8mt2Odu4Rx8SBfBwxpgyfMX6pbz9bC7xNY7PwdQg51EtEnMB-TnW5kC9FotwRCENQWXRtK_QDKGShTalkdJJt5QDwGO-CZc4Bk87haLs2Vn9LVaxtkmdQQ3bKkgyjPyu2XcdKku5hhQT8vhzm3wfHG0Td7JDCX9tH7x_0gw0W4SvzvnR-62orvVhpEg","refreshToken":"1:2:1:2:WbUML76mPVJTaMiDvr72tGusd+KBnH0/J9KCnwAM8HAs4M9aN5adkAEM87Uo3LHYPiO4p1yzA6mMgFhOzwJFpnXN2XqZKcB5XdcSwYYdVO8=","scope":"ALL","tokenType":"BEARER"}
08-29 03:12:26.870 1403 1632 D CLOUD-API: <--- END HTTP (1228-byte body)
08-29 03:12:26.890 1403 1632 D CO.POYNT.SERVICES/GrantTokenTask.java:45: AsyncTask #4 Successfully obtained token for audience (urn:aid:store.poynt.net) issued to (com.poynt.store): TokenResponse [expiresIn=86400, accessToken=***masked***, refreshToken=***masked***, scope=ALL, tokenType=BEARER]
08-29 03:12:26.891 1403 1403 D TokenResponse: MEASURE_TIME Total write time 1 size:1233 compressedSize:914
08-29 03:12:26.892 1431 7149 D TokenResponse: MEASURE_TIME Received bytes 914 json size:1233
08-29 03:12:26.893 1431 7149 D TokenResponse: Gson Json string size:1233
08-29 03:12:26.893 1431 7149 D TokenResponse: MEASURE_TIME Total read time 1
08-29 03:12:26.895 1431 8150 D OkHttp : --> GET https://billing.poynt.net/apps/com.ecosagile.etimestore.pnt.dev/plans?currency=USD&status=ACTIVE&status=INACTIVE http/1.1
08-29 03:12:26.895 1431 8150 D OkHttp : authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJjYXJsby5naXJlbGxpQHNvZnRhZ2lsZS5jb20iLCJwb3ludC5kaWQiOiJ1cm46dGlkOjQ1ZTg0ZmE2LWVjNDEtM2I1ZC04MjRhLTM2ODI1YTZiMDc4MCIsInBveW50LmRzdCI6IkQiLCJwb3ludC5zY3QiOiJKIiwicG95bnQub3JnIjoiMGJjNDhjMWMtNjVjYS00MDVkLTg1OGYtOTUyYTQzYTg5MzI2IiwiaXNzIjoiaHR0cHM6XC9cL3NlcnZpY2VzLWV1LnBveW50Lm5ldCIsInBveW50LmtpZCI6NjE1NTI0NjE1MjgyNzE0MTc3NywicG95bnQuaXN0IjoiY29tLnBveW50LnN0b3JlIiwicG95bnQuc3RyIjoiYzg0ZWVjMmMtMDkwOC00MTFiLTkyNmUtNjBkYWIzNDE5Y2UxIiwiYXVkIjoidXJuOmFpZDpzdG9yZS5wb3ludC5uZXQiLCJwb3ludC5iaXoiOiI1ZTA2ODk2Ny05NmViLTQ5OGUtYjg1Mi0yMzAzNzIzZWRiNDIiLCJleHAiOjE1MzU2MjM5NDYsImlhdCI6MTUzNTUzNzU0NiwianRpIjoiMGJhM2U3NjEtMzhmMS00MGE0LTkwNDYtNzhhZTJjYWZlYzIwIn0.KxJbka1G0by0s3ZPidBlZAguxYet1Y9Iqa4OsOEBzggQyOgjULFRGvMel1dOrYZeVMdhhqF_-JDTE0gPagxq22XgaFH2KG0e0_gpQleT_lqotFXz3lot1pxlNfH_SFWv14OtJNDVTXJxSQxrbaFGJz4kw2s8mt2Odu4Rx8SBfBwxpgyfMX6pbz9bC7xNY7PwdQg51EtEnMB-TnW5kC9FotwRCENQWXRtK_QDKGShTalkdJJt5QDwGO-CZc4Bk87haLs2Vn9LVaxtkmdQQ3bKkgyjPyu2XcdKku5hhQT8vhzm3wfHG0Td7JDCX9tH7x_0gw0W4SvzvnR-62orvVhpEg
08-29 03:12:26.895 1431 8150 D OkHttp : --> END GET
08-29 03:12:27.159 1431 8150 E NativeCrypto: ssl=0x7f6c843400 cert_verify_callback x509_store_ctx=0x7f6c77e0d0 arg=0x0
08-29 03:12:27.159 1431 8150 E NativeCrypto: ssl=0x7f6c843400 cert_verify_callback calling verifyCertificateChain authMethod=ECDHE_RSA
08-29 03:12:27.270 702 773 D PerfServiceManager: [PerfService] MESSAGE_TIMEOUT:105
08-29 03:12:27.270 702 773 I libPerfService: 5: set: 1
08-29 03:12:27.270 702 773 I libPerfService: 5: set freq: 0
08-29 03:12:27.270 702 773 D PerfServiceManager: [PerfService] set utilization:0.8
08-29 03:12:27.382 1431 8150 D OkHttp : <-- 401 Unauthorized https://billing.poynt.net/apps/com.ecosagile.etimestore.pnt.dev/plans?currency=USD&status=ACTIVE&status=INACTIVE (486ms)
08-29 03:12:27.382 1431 8150 D OkHttp : Content-Type: application/json
08-29 03:12:27.382 1431 8150 D OkHttp : Date: Wed, 29 Aug 2018 10:12:27 GMT
08-29 03:12:27.382 1431 8150 D OkHttp : Server: Apache-Coyote/1.1
08-29 03:12:27.382 1431 8150 D OkHttp : Content-Length: 130
08-29 03:12:27.382 1431 8150 D OkHttp : Connection: keep-alive
08-29 03:12:27.382 1431 8150 D OkHttp : {"code":"INVALID_ACCESS_TOKEN","httpStatus":401,"message":"Access token is missing or invalid","developerMessage":"Invalid token"}
08-29 03:12:27.382 1431 8150 D OkHttp : <-- END HTTP (130-byte body)
08-29 03:12:27.385 1431 1431 E PoyntInAppBillingSvc: onError for list plans
[...]
08-29 03:12:32.619 1403 1631 D CO.POYNT.SERVICES/LoadBusinessTask.java:48: AsyncTask #3 Getting business for storeDeviceId: urn:tid:45e84fa6-ec41-3b5d-824a-36825a6b0780
08-29 03:12:32.619 1403 1631 D CO.POYNT.SERVICES/PoyntSystemProperties.java:87: AsyncTask #3 It is currently in demo mode: false
08-29 03:12:32.621 1403 1631 D CO.POYNT.SERVICES/TokenUtils.java:53: AsyncTask #3 Token expiry (Wed Aug 29 05:17:24 PDT 2018) current time (Wed Aug 29 03:12:32 PDT 2018)
08-29 03:12:32.621 1403 1631 D CO.POYNT.SERVICES/PoyntBusinessProcessorImpl.java:141: AsyncTask #3 Getting business object for deviceId urn:tid:45e84fa6-ec41-3b5d-824a-36825a6b0780
[...]
08-29 03:12:32.688 1403 1631 D CO.POYNT.SERVICES/PoyntBusinessProcessorImpl.java:156: AsyncTask #3 returning business from local DB: Ecosagile Test
08-29 03:12:32.688 1403 1403 D CO.POYNT.SERVICES/LoadBusinessTask.java:72: main Setting businessId (5e068967-96eb-498e-b852-2303723edb42) in settings (ACTIVATED)
08-29 03:12:32.689 1403 1403 D CO.POYNT.SERVICES/LoadBusinessTask.java:78: main Setting storeId (c84eec2c-0908-411b-926e-60dab3419ce1) in settings
Thankyou.
It was connecting to https://billing.poynt.net, instead of https://billing-eu.poynt.net/. I have installed the correct version of com.poynt.store which should resolve this issue.
Ok, we have a progress: now the token is accepted and the call to plans goes fine.
But the response to getPlans() is an empty list: it cannot find any approved plan.
{"list":[],"start":0,"total":0,"count":0}
When I try to execute launchBilling() with the approved plan ID I already know, it gives the same error:
No product found for given productId
For completeness these are the appID and planID I am using:
Poynt.billing.getPlans(function(data) {
window.alert("Plans: "+ JSON.stringify(data));
}, function(err) {
window.alert("getPlans Err: " + JSON.stringify(err));
}, {
"packageName": "com.ecosagile.etimestore.pnt.dev",
"appID":"bb5047dc-403c-4e85-88d4-0cbfa7c91cec" // EU Dev
});
var planId = "b30b859d-8f29-4079-b210-4a35f6183c0b"; //EU Test
Poynt.billing.launchBilling(function(){
// Success
$scope.checkSubscriptionStatus();
}, function(error){
window.alert(error);
}, {'planid': planId, 'replace': false});
Maybe the reason could be the filter by currency=USD ? The plan is in EUR.
How can I filter by EUR or remove any filter?
See the logcat below:
08-30 00:34:08.142 2363 2544 D OkHttp : --> GET https://billing-eu.poynt.net/apps/com.ecosagile.etimestore.pnt.dev/plans?currency=USD&status=ACTIVE&status=INACTIVE http/1.1
08-30 00:34:08.142 2363 2544 D OkHttp : authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJjYXJsby5naXJlbGxpQHNvZnRhZ2lsZS5jb20iLCJwb3ludC5kaWQiOiJ1cm46dGlkOjQ1ZTg0ZmE2LWVjNDEtM2I1ZC04MjRhLTM2ODI1YTZiMDc4MCIsInBveW50LmRzdCI6IkQiLCJwb3ludC5zY3QiOiJKIiwicG95bnQub3JnIjoiMGJjNDhjMWMtNjVjYS00MDVkLTg1OGYtOTUyYTQzYTg5MzI2IiwiaXNzIjoiaHR0cHM6XC9cL3NlcnZpY2VzLWV1LnBveW50Lm5ldCIsInBveW50LmtpZCI6NjE1NTI0NjE1MjgyNzE0MTc3NywicG95bnQuaXN0IjoiY29tLnBveW50LnN0b3JlIiwicG95bnQuc3RyIjoiYzg0ZWVjMmMtMDkwOC00MTFiLTkyNmUtNjBkYWIzNDE5Y2UxIiwiYXVkIjoidXJuOmFpZDpzdG9yZS5wb3ludC5uZXQiLCJwb3ludC5iaXoiOiI1ZTA2ODk2Ny05NmViLTQ5OGUtYjg1Mi0yMzAzNzIzZWRiNDIiLCJleHAiOjE1MzU3MDA4NDcsImlhdCI6MTUzNTYxNDQ0NywianRpIjoiMzI4MWQ2NzItMWNmZi00Y2Y2LTg4NzMtNjBkNGYzYzlhZmVjIn0.VdDY427GZm4QTMEiQxHsJBJiVSfFJwsXNWNrxPCBEdpDaSim2STzCJZZUb7jvikEFuoIp-6C2zkv0HUCTyX1xuRb60bgHB3808L1Cxv-EGZzgMV9a22qYSKud4CjH0n-luwr4IwIYp6_lEyqragXbnSgOUH4ZFbZiHWzgdFU-_cMnibKYZCK5loRjI7jpf2J2CnIIwUXMlxWYDanv-DUlhUYEpDsizT29I-Iz6E2lE8wAWW-5vqGXbEOdn2glQBqoyD95fGi_z7znKjYxpxM9tt-AOYdzdtIhDt_ty3W3QXaptH9Cic2xC-Lywr6BIuUOODDkYnqKAmK6eOXS0ERfQ
08-30 00:34:08.142 2363 2544 D OkHttp : --> END GET
08-30 00:34:09.038 2363 2544 D OkHttp : <-- 200 https://billing-eu.poynt.net/apps/com.ecosagile.etimestore.pnt.dev/plans?currency=USD&status=ACTIVE&status=INACTIVE (895ms)
08-30 00:34:09.038 2363 2544 D OkHttp : set-cookie: AWSALB=Ghbc5G9yV8FqyZVu8MsinIrl6mCysKJ6u7ybOq4O60grMjoe5p8n4UjA4aWzdTLEahb7lH/6uGy6/EorpvYXVnqHOanZ8/iD6RueK5LrTO0xzBvpTfSLO4GWzu0I; Expires=Thu, 06 Sep 2018 07:34:08 GMT; Path=/
08-30 00:34:09.039 2363 2544 D OkHttp : server: Apache-Coyote/1.1
08-30 00:34:09.048 2363 2544 D OkHttp : {"list":[],"start":0,"total":0,"count":0}
[...]
08-30 00:34:40.103 2363 2544 D OkHttp : --> GET https://billing-eu.poynt.net/apps/com.ecosagile.etimestore.pnt.dev/plans/b30b859d-8f29-4079-b210-4a35f6183c0b?currency=USD http/1.1
08-30 00:34:40.103 2363 2544 D OkHttp : authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJjYXJsby5naXJlbGxpQHNvZnRhZ2lsZS5jb20iLCJwb3ludC5kaWQiOiJ1cm46dGlkOjQ1ZTg0ZmE2LWVjNDEtM2I1ZC04MjRhLTM2ODI1YTZiMDc4MCIsInBveW50LmRzdCI6IkQiLCJwb3ludC5zY3QiOiJKIiwicG95bnQub3JnIjoiMGJjNDhjMWMtNjVjYS00MDVkLTg1OGYtOTUyYTQzYTg5MzI2IiwiaXNzIjoiaHR0cHM6XC9cL3NlcnZpY2VzLWV1LnBveW50Lm5ldCIsInBveW50LmtpZCI6NjE1NTI0NjE1MjgyNzE0MTc3NywicG95bnQuaXN0IjoiY29tLnBveW50LnN0b3JlIiwicG95bnQuc3RyIjoiYzg0ZWVjMmMtMDkwOC00MTFiLTkyNmUtNjBkYWIzNDE5Y2UxIiwiYXVkIjoidXJuOmFpZDpzdG9yZS5wb3ludC5uZXQiLCJwb3ludC5iaXoiOiI1ZTA2ODk2Ny05NmViLTQ5OGUtYjg1Mi0yMzAzNzIzZWRiNDIiLCJleHAiOjE1MzU3MDA4ODAsImlhdCI6MTUzNTYxNDQ4MCwianRpIjoiOTM5ZjBmYzItOTYwMy00ZGFjLTgxNWQtMWQxZjRiOTExMTMyIn0.HUndzel7RUMFpx0hsHuw4MK2eBcbF88gYq1VeSkO9lu2yvhbH0RvoDdQomjY24Ck4QtPnMyWcJ5Kr073ElWQ4oTl0pCtUNzJjlfDqdQyjFEcuQuCL0iRkr-3ukrYf7nTL9VOz5_Pmof8xaEoEeso6D8fzYfFK4N8wZ9ngwnTVdlkOk4fRjTac6tXbpxUbtH22feMgkquV1-2MIaNa6HQFksalI1L8Lh3A6G6wRgC2JbZ7m6bt0MkFTCg7964DiUgHWEWeI189Qb36S7xtoPGPMvwSx3jx9SjqKm0Xok-VBzejWMtxyMXxn21g8kl4Kx9JRP8mzqVR9si8lM-vFMRpQ
08-30 00:34:40.103 2363 2544 D OkHttp : --> END GET
08-30 00:34:40.158 2363 2544 D OkHttp : <-- 404 https://billing-eu.poynt.net/apps/com.ecosagile.etimestore.pnt.dev/plans/b30b859d-8f29-4079-b210-4a35f6183c0b?currency=USD (54ms)
08-30 00:34:40.158 2363 2544 D OkHttp : date: Thu, 30 Aug 2018 07:34:40 GMT
08-30 00:34:40.158 2363 2544 D OkHttp : content-type: application/json
08-30 00:34:40.158 2363 2544 D OkHttp : content-length: 191
08-30 00:34:40.158 2363 2544 D OkHttp : set-cookie: AWSALB=DOketBl18KykA4kEmVvw8ApSBxRjbXgKhn7VvrL3NfkK/LGoGwf+Y7zcKGrxiCkNJSG9vojYL8gxMU/uPQH73kCR//z0E/hWzq7MB8iQeAFd+4r8C5sjNmW/yIql; Expires=Thu, 06 Sep 2018 07:34:40 GMT; Path=/
08-30 00:34:40.158 2363 2544 D OkHttp : server: Apache-Coyote/1.1
08-30 00:34:40.158 2363 2544 D OkHttp : {"code":"PLAN_NOT_FOUND_FOR_CURRENCY","httpStatus":404,"message":"Plan not found for the given currency","developerMessage":"Optional[USD]","requestId":"cf9e1d3f-de69-4b8f-acd7-783394ea0ed8"}
08-30 00:34:40.158 2363 2544 D OkHttp : <-- END HTTP (191-byte body)
Thankyou.
It looks like the getPlans() is invoking the following endpoint with currency set as USD- https://billing-eu.poynt.net/apps/com.ecosagile.etimestore.pnt.dev/plans?currency=USD&status=ACTIVE&status=INACTIVE
The Test Merchant on the device did not have EUR as the currency in their account settings. I modified the currency from USD
to EUR
. Please try again.
Ok, now it works!
I can get the correct Plans list and launchBilling() shows the popup with the selected plan.
Now can you please approve the plans of our Live App? (not .Dev).
Thankyou.
HI Carlo,
we previously approved and hid billing plans for your production version. The reason is that currently apps in app marketplace are in free trial.
I have subscribed successfully to a billing plan of the DEV version of the App.
I have also checked the I am successfully subscribed with Poynt.billing.checkSubscription().
Now, how can I unsubscribe from the billing plan?
There is no function to do it in TestCordovaApp, not even in the cordova-plugin-poynt - PoyntPlugin.js.
Can you please help me on how to do it?
Thankyou.
Carlo
@carlo318 do you have Poynt Store (“Apps” app) on your terminal? If yes, you can go to account tab and unsubscribe from there. see https://poynt.zendesk.com/hc/en-us/articles/115012584367-Apps-Cancel-or-Unsubscribe. If you don’t have the app, let me know the serial number of your device.
I have the App “Apps” on the Terminal and the Plan is visible with the button Unsubscribe.
Thankyou!
Hi, we still have a problem with the plugin.
When we subscribe to a plan, the billing fragment starts correctly with the plain id selected, but when we complete the transaction, it does not enter to the success callback (in which we do some business logic like contact our API’s to update user subscription informations).
The UI display a notification message on top of the screen (like a toast notification)
We have tested this functionality 1 month and half ago and it worked (execute the success callback).
How can we solve this issue?
@poynt4 please take a look at this test app, run it on your terminal and see if you are getting success callback: https://github.com/dsnatochy/TestCordovaApp/blob/master/www/index.html
Hi dennis,
thanks for your support. Testing your app on our device, callbacks are correctly executed.
We have downloaded again the cordova plugin for poynt and full re-build our application: now callbacks seem to be executed.
Thanks again,
WhatsIN dev team