Comments (2)
here is my code
package itssportsco.android.app;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import company.tap.gosellapi.GoSellSDK;
import company.tap.gosellapi.internal.api.callbacks.GoSellError;
import company.tap.gosellapi.internal.api.models.Authorize;
import company.tap.gosellapi.internal.api.models.Charge;
import company.tap.gosellapi.internal.api.models.PhoneNumber;
import company.tap.gosellapi.internal.api.models.SaveCard;
import company.tap.gosellapi.internal.api.models.SavedCard;
import company.tap.gosellapi.internal.api.models.Token;
import company.tap.gosellapi.open.buttons.PayButtonView;
import company.tap.gosellapi.open.controllers.SDKSession;
import company.tap.gosellapi.open.controllers.ThemeObject;
import company.tap.gosellapi.open.delegate.SessionDelegate;
import company.tap.gosellapi.open.enums.AppearanceMode;
import company.tap.gosellapi.open.enums.TransactionMode;
import company.tap.gosellapi.open.models.CardsList;
import company.tap.gosellapi.open.models.Customer;
import company.tap.gosellapi.open.models.PaymentItem;
import company.tap.gosellapi.open.models.Receipt;
import company.tap.gosellapi.open.models.TapCurrency;
import company.tap.gosellapi.open.models.Tax;
import company.tap.gosellapi.open.viewmodel.CustomerViewModel;
import itssportsco.android.app.API.ItsSportsAPI.Client;
import itssportsco.android.app.DetailedMatch.ConfirmPaymentResponse;
import itssportsco.android.app.Home.HomeActivity;
import itssportsco.android.app.Storage.SharedPrefManager;
import retrofit2.Call;
public class TapActivity extends AppCompatActivity implements SessionDelegate {
private final int SDK_REQUEST_CODE = 1001;
private SDKSession sdkSession;
private PayButtonView payButtonView;
private SettingsManager settingsManager;
private ProgressDialog progress;
// not used
private static RecyclerView.Adapter adapter;
private RecyclerView.LayoutManager layoutManager;
private static RecyclerView recyclerView;
private static ArrayList<SavedCard> data;
static View.OnClickListener myOnClickListener;
private static ArrayList<Integer> removedItems;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tap);
startSDK();
}
private void startSDK(){
/**
* Required step.
* Configure SDK with your Secret API key and App Bundle name registered with tap company.
*/
configureApp();
/**
* Optional step
* Here you can configure your app theme (Look and Feel).
*/
configureSDKThemeObject();
/**
* Required step.
* Configure SDK Session with all required data.
*/
configureSDKSession();
/**
* Required step.
* Choose between different SDK modes
*/
configureSDKMode();
/**
* If you included Tap Pay Button then configure it first, if not then ignore this step.
*/
initPayButton();
}
private void configureApp(){
GoSellSDK.init(this, "-","-"); // to be replaced by merchant
GoSellSDK.setLocale("en");
}
private void configureSDKThemeObject() {
ThemeObject.getInstance()
// set Appearance mode [Full Screen Mode - Windowed Mode]
.setAppearanceMode(AppearanceMode.WINDOWED_MODE) // **Required**
.setSdkLanguage("en")
// Setup header font type face **Make sure that you already have asset folder with required fonts**
//.setHeaderFont(Typeface.createFromAsset(getAssets(),"fonts/roboto_light.ttf"))//**Optional**
//Setup header text color
.setHeaderTextColor(getResources().getColor(R.color.black1)) // **Optional**
// Setup header text size
.setHeaderTextSize(17) // **Optional**
// setup header background
.setHeaderBackgroundColor(getResources().getColor(R.color.french_gray_new))//**Optional**
// setup card form input font type
//.setCardInputFont(Typeface.createFromAsset(getAssets(),"fonts/roboto_light.ttf"))//**Optional**
// setup card input field text color
.setCardInputTextColor(getResources().getColor(R.color.black))//**Optional**
// setup card input field text color in case of invalid input
.setCardInputInvalidTextColor(getResources().getColor(R.color.red))//**Optional**
// setup card input hint text color
.setCardInputPlaceholderTextColor(getResources().getColor(R.color.black))//**Optional**
// setup Switch button Thumb Tint Color in case of Off State
.setSaveCardSwitchOffThumbTint(getResources().getColor(R.color.gray)) // **Optional**
// setup Switch button Thumb Tint Color in case of On State
.setSaveCardSwitchOnThumbTint(getResources().getColor(R.color.vibrant_green)) // **Optional**
// setup Switch button Track Tint Color in case of Off State
.setSaveCardSwitchOffTrackTint(getResources().getColor(R.color.gray)) // **Optional**
// setup Switch button Track Tint Color in case of On State
.setSaveCardSwitchOnTrackTint(getResources().getColor(R.color.green)) // **Optional**
// change scan icon
.setScanIconDrawable(getResources().getDrawable(R.drawable.btn_card_scanner_normal)) // **Optional**
// setup pay button selector [ background - round corner ]
.setPayButtonResourceId(R.drawable.btn_pay_selector)
// setup pay button font type face
//.setPayButtonFont(Typeface.createFromAsset(getAssets(),"fonts/roboto_light.ttf")) // **Optional**
// setup pay button disable title color
.setPayButtonDisabledTitleColor(getResources().getColor(R.color.black)) // **Optional**
// setup pay button enable title color
.setPayButtonEnabledTitleColor(getResources().getColor(R.color.White)) // **Optional**
//setup pay button text size
.setPayButtonTextSize(14) // **Optional**
// show/hide pay button loader
.setPayButtonLoaderVisible(true) // **Optional**
// show/hide pay button security icon
.setPayButtonSecurityIconVisible(true) // **Optional**
;
}
private void configureSDKSession() {
// Instantiate SDK Session
if(sdkSession==null) sdkSession = new SDKSession(); //** Required **
// pass your activity as a session delegate to listen to SDK internal payment process follow
sdkSession.addSessionDelegate(this); //** Required **
// initiate PaymentDataSource
sdkSession.instantiatePaymentDataSource(); //** Required **
// set transaction currency associated to your account
sdkSession.setTransactionCurrency(new TapCurrency(SharedPrefManager.getUserCurrency(getApplicationContext()))); //** Required **
// Using static CustomerBuilder method available inside TAP Customer Class you can populate TAP Customer object and pass it to SDK
sdkSession.setCustomer(getCustomer()); //** Required **
// Set Total Amount. The Total amount will be recalculated according to provided Taxes and Shipping
sdkSession.setAmount(new BigDecimal(SharedPrefManager.getTotalAmmount(getApplicationContext()))); //** Required **
// Set Payment Items array list
sdkSession.setPaymentItems(new ArrayList<>());// ** Optional ** you can pass empty array list
// Set Taxes array list
sdkSession.setTaxes(new ArrayList<>());// ** Optional ** you can pass empty array list
// Set Shipping array list
sdkSession.setShipping(new ArrayList<>());// ** Optional ** you can pass empty array list
// Post URL
sdkSession.setPostURL(""); // ** Optional **
// Payment Description
sdkSession.setPaymentDescription(""); //** Optional **
// Payment Extra Info
sdkSession.setPaymentMetadata(new HashMap<>());// ** Optional ** you can pass empty array hash map
// Payment Reference
sdkSession.setPaymentReference(null); // ** Optional ** you can pass null
// Payment Statement Descriptor
sdkSession.setPaymentStatementDescriptor(""); // ** Optional **
// Enable or Disable Saving Card
sdkSession.isUserAllowedToSaveCard(false); // ** Required ** you can pass boolean
// Enable or Disable 3DSecure
sdkSession.isRequires3DSecure(true);
//Set Receipt Settings [SMS - Email ]
sdkSession.setReceiptSettings(new Receipt(false,false)); // ** Optional ** you can pass Receipt object or null
// Set Authorize Action
sdkSession.setAuthorizeAction(null); // ** Optional ** you can pass AuthorizeAction object or null
sdkSession.setDestination(null); // ** Optional ** you can pass Destinations object or null
sdkSession.setMerchantID(null); // ** Optional ** you can pass merchant id or null
/**
* Use this method where ever you want to show TAP SDK Main Screen.
* This method must be called after you configured SDK as above
* This method will be used in case of you are not using TAP PayButton in your activity.
*/
//sdkSession.start(this);
}
private void startSDKWithUI(){
if(sdkSession!=null){
TransactionMode trx_mode =(settingsManager!=null)? settingsManager.getTransactionsMode("key_sdk_transaction_mode"): TransactionMode.PURCHASE;
// set transaction mode [TransactionMode.PURCHASE - TransactionMode.AUTHORIZE_CAPTURE - TransactionMode.SAVE_CARD - TransactionMode.TOKENIZE_CARD ]
sdkSession.setTransactionMode(trx_mode); //** Required **
// if you are not using tap button then start SDK using the following call
//sdkSession.start(this);
}
}
private void configureSDKMode(){
/**
* You have to choose only one Mode of the following modes:
* Note:-
* - In case of using PayButton, then don't call sdkSession.start(this); because the SDK will start when user clicks the tap pay button.
*/
////////////////////////////////////////////////////// SDK with UI //////////////////////
/**
* 1- Start using SDK features through SDK main activity (With Tap CARD FORM)
*/
startSDKWithUI();
////////////////////////////////////////////////////// SDK Tokenization without UI //////////////////////
/**
* 2- Start using SDK to tokenize your card without using SDK main activity (Without Tap CARD FORM)
* After the SDK finishes card tokenization, it will notify this activity with tokenization result in either
* cardTokenizedSuccessfully(@NonNull String token) or sdkError(@Nullable GoSellError goSellError)
*/
// startSDKTokenizationWithoutUI();
// sdkSession.start(this);
////////////////////////////////////////////////////// SDK Saving card without UI //////////////////////
/**
* 3- Start using SDK to save your card without using SDK main activity ((Without Tap CARD FORM))
* After the SDK finishes card tokenization, it will notify this activity with save card result in either
* cardSaved(@NonNull Charge charge) or sdkError(@Nullable GoSellError goSellError)
*
*/
// startSDKSavingCardWithoutUI();
// sdkSession.start(this);
}
private void initPayButton() {
payButtonView = findViewById(R.id.payButtonId);
if(ThemeObject.getInstance().getPayButtonFont()!=null)
payButtonView.setupFontTypeFace(ThemeObject.getInstance().getPayButtonFont());
if( ThemeObject.getInstance().getPayButtonDisabledTitleColor() !=0 && ThemeObject.getInstance().getPayButtonEnabledTitleColor() !=0 )
payButtonView.setupTextColor(ThemeObject.getInstance().getPayButtonEnabledTitleColor(),
ThemeObject.getInstance().getPayButtonDisabledTitleColor());
if( ThemeObject.getInstance().getPayButtonTextSize()!=0 )
payButtonView.getPayButton().setTextSize(ThemeObject.getInstance().getPayButtonTextSize());
if(ThemeObject.getInstance().isPayButtSecurityIconVisible())
payButtonView.getSecurityIconView().setVisibility(ThemeObject.getInstance().isPayButtSecurityIconVisible()?View.VISIBLE:View.INVISIBLE);
if( ThemeObject.getInstance().getPayButtonResourceId()!=0)
payButtonView.setBackgroundSelector(ThemeObject.getInstance().getPayButtonResourceId());
if(sdkSession!=null){
TransactionMode trx_mode = sdkSession.getTransactionMode();
if(trx_mode!=null){
if (TransactionMode.SAVE_CARD == trx_mode || TransactionMode.SAVE_CARD_NO_UI ==trx_mode) {
payButtonView.getPayButton().setText(getString(company.tap.gosellapi.R.string.save_card));
}
else if(TransactionMode.TOKENIZE_CARD == trx_mode || TransactionMode.TOKENIZE_CARD_NO_UI == trx_mode){
payButtonView.getPayButton().setText(getString(company.tap.gosellapi.R.string.tokenize));
}
else {
payButtonView.getPayButton().setText(getString(company.tap.gosellapi.R.string.pay));
}
}else{
configureSDKMode();
}
sdkSession.setButtonView(payButtonView, this, SDK_REQUEST_CODE);
}
}
private void listSavedCards(){
if(sdkSession!=null)
sdkSession.listAllCards("CUSTOMER_ID",this);
}
// override session delegate
@Override
public void paymentSucceed(@NonNull Charge charge) {
/*System.out.println("Payment Succeeded : "+ charge.getStatus());
System.out.println("Payment Succeeded : "+ charge.getDescription());
System.out.println("Payment Succeeded : "+ charge.getResponse().getMessage());*/
//saveCustomerRefInSession(charge);
//configureSDKSession();
//showDialog(charge.getId(),charge.getResponse().getMessage(),company.tap.gosellapi.R.drawable.ic_checkmark_normal);
//showDialog("",""+R.string.PaymentSucceded,company.tap.gosellapi.R.drawable.ic_checkmark_normal);
Call<ConfirmPaymentResponse> call = Client.getmInstance().getApi().confirmPayment(
SharedPrefManager.getUserToken(getApplicationContext()),
SharedPrefManager.getLang(getApplicationContext()),
"SUCCESS",
"",
"",
charge.getReference().getTrack(),
charge.getReceipt().getId()
);
Toast.makeText(getApplicationContext(),R.string.PaymentSucceded,Toast.LENGTH_LONG).show();
final Thread myThreadInternet = new Thread() {
@Override
public void run() {
try {
sleep(2500);
showDialog(charge.getId(),charge.getResponse().getMessage(),company.tap.gosellapi.R.drawable.icon_failed);
Intent t = new Intent(getApplicationContext(),HomeActivity.class);
startActivity(t);
finish();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
myThreadInternet.start();
}
@Override
public void paymentFailed(@Nullable Charge charge) {
System.out.println("Payment Failed : "+ charge.getStatus());
System.out.println("Payment Failed : "+ charge.getDescription());
System.out.println("Payment Failed : "+ charge.getResponse().getMessage());
showDialog(charge.getId(),charge.getResponse().getMessage(),company.tap.gosellapi.R.drawable.icon_failed);
}
@Override
public void authorizationSucceed(@NonNull Authorize authorize) {
System.out.println("Authorize Succeeded : "+ authorize.getStatus());
System.out.println("Authorize Succeeded : "+ authorize.getResponse().getMessage());
if(authorize.getCard()!=null){
System.out.println("Payment Authorized Succeeded : first six : "+ authorize.getCard().getFirstSix());
System.out.println("Payment Authorized Succeeded : last four: "+ authorize.getCard().getLast4());
System.out.println("Payment Authorized Succeeded : card object : "+ authorize.getCard().getObject());
}
System.out.println("##############################################################################");
if(authorize.getAcquirer()!=null){
System.out.println("Payment Authorized Succeeded : acquirer id : "+ authorize.getAcquirer().getId());
System.out.println("Payment Authorized Succeeded : acquirer response code : "+ authorize.getAcquirer().getResponse().getCode());
System.out.println("Payment Authorized Succeeded : acquirer response message: "+ authorize.getAcquirer().getResponse().getMessage());
}
System.out.println("##############################################################################");
if(authorize.getSource()!=null){
System.out.println("Payment Authorized Succeeded : source id: "+ authorize.getSource().getId());
System.out.println("Payment Authorized Succeeded : source channel: "+ authorize.getSource().getChannel());
System.out.println("Payment Authorized Succeeded : source object: "+ authorize.getSource().getObject());
System.out.println("Payment Authorized Succeeded : source payment method: "+ authorize.getSource().getPaymentMethodStringValue());
System.out.println("Payment Authorized Succeeded : source payment type: "+ authorize.getSource().getPaymentType());
System.out.println("Payment Authorized Succeeded : source type: "+ authorize.getSource().getType());
}
System.out.println("##############################################################################");
if(authorize.getExpiry()!=null){
System.out.println("Payment Authorized Succeeded : expiry type :"+ authorize.getExpiry().getType());
System.out.println("Payment Authorized Succeeded : expiry period :"+ authorize.getExpiry().getPeriod());
}
configureSDKSession();
showDialog(authorize.getId(),authorize.getResponse().getMessage(),company.tap.gosellapi.R.drawable.ic_checkmark_normal);
}
@Override
public void authorizationFailed(Authorize authorize) {
System.out.println("Authorize Failed : "+ authorize.getStatus());
System.out.println("Authorize Failed : "+ authorize.getDescription());
System.out.println("Authorize Failed : "+ authorize.getResponse().getMessage());
showDialog(authorize.getId(),authorize.getResponse().getMessage(),company.tap.gosellapi.R.drawable.icon_failed);
}
@Override
public void cardSaved(@NonNull Charge charge) {
// Cast charge object to SaveCard first to get all the Card info.
if(charge instanceof SaveCard){
System.out.println("Card Saved Succeeded : first six digits : "+ ((SaveCard)charge).getCard().getFirstSix() + " last four :"+ ((SaveCard)charge).getCard().getLast4());
}
System.out.println("Card Saved Succeeded : "+ charge.getStatus());
System.out.println("Card Saved Succeeded : "+ charge.getCard().getBrand());
System.out.println("Card Saved Succeeded : "+ charge.getDescription());
System.out.println("Card Saved Succeeded : "+ charge.getResponse(). getMessage());
showDialog(charge.getId(),charge.getStatus().toString(),company.tap.gosellapi.R.drawable.ic_checkmark_normal);
}
@Override
public void cardSavingFailed(@NonNull Charge charge) {
System.out.println("Card Saved Failed : "+ charge.getStatus());
System.out.println("Card Saved Failed : "+ charge.getDescription());
System.out.println("Card Saved Failed : "+ charge.getResponse().getMessage());
showDialog(charge.getId(),charge.getStatus().toString(),company.tap.gosellapi.R.drawable.icon_failed);
}
@Override
public void cardTokenizedSuccessfully(@NonNull Token token) {
System.out.println("Card Tokenized Succeeded : ");
System.out.println("Token card : "+token.getCard().getFirstSix() + " **** "+ token.getCard().getLastFour() );
System.out.println("Token card : "+token.getCard().getFingerprint() + " **** "+ token.getCard().getFunding() );
System.out.println("Token card : "+token.getCard().getId() +" ****** "+ token.getCard().getName());
System.out.println("Token card : "+token.getCard().getAddress() +" ****** "+ token.getCard().getObject());
System.out.println("Token card : "+token.getCard().getExpirationMonth() +" ****** "+ token.getCard().getExpirationYear());
showDialog(token. getId(),"Token",company.tap.gosellapi.R.drawable.ic_checkmark_normal);
}
@Override
public void savedCardsList(@NonNull CardsList cardsList) {
if(cardsList!=null && cardsList.getCards()!=null){
System.out.println(" Card List Response Code : "+cardsList.getResponseCode());
System.out.println(" Card List Top 10 : "+cardsList.getCards().size());
System.out.println(" Card List Has More : "+cardsList.isHas_more());
System.out.println("----------------------------------------------");
for(SavedCard sc: cardsList.getCards()){
System.out.println(sc.getBrandName());
}
System.out.println("----------------------------------------------");
}
}
@Override
public void sdkError(@Nullable GoSellError goSellError) {
if(progress!=null)
progress.dismiss();
if(goSellError!=null) {
System.out.println("SDK Process Error : " + goSellError.getErrorBody());
System.out.println("SDK Process Error : " + goSellError.getErrorMessage());
System.out.println("SDK Process Error : " + goSellError.getErrorCode());
showDialog(goSellError.getErrorCode() + "", goSellError.getErrorMessage(), company.tap.gosellapi.R.drawable.icon_failed);
}
}
@Override
public void sessionIsStarting() {
System.out.println(" Session Is Starting.....");
}
@Override
public void sessionHasStarted() {
System.out.println(" Session Has Started .......");
}
@Override
public void sessionCancelled() {
Log.d("MainActivity","Session Cancelled.........");
}
@Override
public void sessionFailedToStart() {
Log.d("MainActivity","Session Failed to start.........");
}
@Override
public void invalidCardDetails() {
System.out.println(" Card details are invalid....");
}
@Override
public void backendUnknownError(String message) {
System.out.println("Backend Un-Known error.... : "+ message);
}
@Override
public void invalidTransactionMode() {
System.out.println(" invalidTransactionMode ......");
}
@Override
public void invalidCustomerID() {
if(progress!=null)
progress.dismiss();
System.out.println("Invalid Customer ID .......");
}
@Override
public void userEnabledSaveCardOption(boolean saveCardEnabled) {
System.out.println("userEnabledSaveCardOption : "+saveCardEnabled);
}
// needed for Demo only
private Customer getCustomer() { // test customer id cus_Kh1b4220191939i1KP2506448
Customer customer = (settingsManager!=null)?settingsManager.getCustomer():null;
PhoneNumber phoneNumber = customer!=null ? customer.getPhone(): new PhoneNumber("965","******");
//
return new Customer.CustomerBuilder(null).email(SharedPrefManager.getPaymentEmail(getApplicationContext())).firstName(SharedPrefManager.getPaymentFirstName(getApplicationContext()))
.lastName(SharedPrefManager.getPaymentLastName(getApplicationContext())).metadata("").phone(new PhoneNumber(SharedPrefManager.getPaymentCountryCode(getApplicationContext()),SharedPrefManager.getPaymentPhone(getApplicationContext())))
.middleName("-").build();
}
private void showDialog(String chargeID, String msg,int icon)
{
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int width = displayMetrics.widthPixels;
PopupWindow popupWindow;
try {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (inflater != null) {
View layout = inflater.inflate(company.tap.gosellapi.R.layout.charge_status_layout, findViewById(
company.tap.gosellapi.R.id.popup_element));
popupWindow = new PopupWindow(layout, width, 250, true);
ImageView status_icon = layout.findViewById(company.tap.gosellapi.R.id.status_icon);
TextView statusText = layout.findViewById(company.tap.gosellapi.R.id.status_text);
TextView chargeText = layout.findViewById(company.tap.gosellapi.R.id.charge_id_txt);
status_icon.setImageResource(icon);
// status_icon.setVisibility(View.INVISIBLE);
chargeText.setText(chargeID);
statusText.setText((msg!=null&& msg.length()>30)?msg.substring(0,29):msg);
popupWindow.showAtLocation(layout, Gravity.TOP, 0, 50);
popupWindow.getContentView().startAnimation(AnimationUtils.loadAnimation(this, R.anim.popup_show));
setupTimer(popupWindow);
}
}catch(Exception e){
e.printStackTrace();
}
}
private void setupTimer(PopupWindow popupWindow) {
// Hide after some seconds
final Handler handler = new Handler();
final Runnable runnable = () -> {
if (popupWindow.isShowing()) {
popupWindow.dismiss();
}
};
popupWindow.setOnDismissListener(() -> handler.removeCallbacks(runnable));
handler.postDelayed(runnable, 4000);
}
}
from gosellsdk-android.
Hi, Could you please try integrating with implementation 'com.github.Tap-Payments:goSellSDK-Android:2.7.2'
.
Thank you.
from gosellsdk-android.
Related Issues (20)
- java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.appcompat.widget.SearchView.setVisibility(int)' on a null object reference HOT 4
- OTP Page refreshed when came back from the SMS application HOT 3
- [2.4.6] The library doesn't compile HOT 13
- BENEFIT PAY HOT 1
- Secret key not working its showing 401 invalid key error HOT 3
- Change the text color of the Cancel button HOT 2
- How to do Payment with already saved cards? in Android and iOS SDK. HOT 3
- Build failed HOT 1
- Card no saved once saved card switch is enable
- I have this error HOT 3
- 401 invalid api key HOT 3
- I have this issue please help
- in android 11 app is crashed HOT 5
- Payment view show automatic when page is load HOT 1
- Fatal Exception: java.lang.NullPointerException HOT 1
- NullPointerException inside CurrenciesActivity
- errorBody{"errors":[{"code":"2104","description":"Invalid API Key"}]} HOT 3
- App getting crash while proceed Payment HOT 1
- fatal: not a git repository (or any of the parent directories): .git
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gosellsdk-android.