Skip to content

Commit

Permalink
Merge pull request #26 from d3x773r/dev
Browse files Browse the repository at this point in the history
[dev] adicionado doc no README.md e ajustes na classe FinishAcivity e…
  • Loading branch information
williaanlopes committed Oct 22, 2020
2 parents 63adb58 + d9f8d27 commit e3bef4e
Show file tree
Hide file tree
Showing 10 changed files with 336 additions and 181 deletions.
95 changes: 94 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,94 @@
# cordova-plugin-pagarme-mpos
# cordova-plugin-pagarme-mpos

## Uso

###### Pagamento com fluxo em interface nativa (ANDROID)

```js
pagarme.Mpos.payWithInterface({
encryptionKey: string,
amount: string,
remoteApi: {
url: string,
type: 'POST'|'PUT'|'PATCH',
headers: {
},
params: {
}
}
}, function (success) {
console.log(success);
}, function (error) {
console.log(error);
});
```

###### Usando as funções da SDK do pagar.me

```js
pagarme.Mpos.initialize({
encryptionKey: string,
enableSafeTransactionConditions: true, // default false
alwaysUpdateTables: false, // default true
remoteApi: {
url: string,
type: 'POST'|'PUT'|'PATCH',
headers: {
'X-FOO': 'bar'
},
params: {
foo: 'bar'
}
}
}, function(success) {
console.log(success);
}, function(error) {
console.log(error);
});

pagarme.Mpos.getConnectedPinPad(function(data) {
console.log(data);
}, function(error) {
console.log(error);
});

pagarme.Mpos.listDevices(function(success) {
console.log(success.devices);
}, function(error) {
console.log(error);
});

pagarme.Mpos.connectPinPad({
macAddress: pinPad.macAddress
}, function(data) {
console.log(data);
}, function(error) {
console.log(error);
});

pagarme.Mpos.disconnectPinPad(function(success) {
console.log(success);
}, function(error) {
console.log(error);
});

pagarme.Mpos.pay({
amount: string,
paymentMethod: pagarme.Mpos.PAYMENT_METHOD_CREDIT_CARD, // pagarme.Mpos.PAYMENT_METHOD_DEBIT_CARD
}, function(success) {
console.log(success);
}, function(error) {
console.log(error);
});

pagarme.Mpos.downloadTables({
forceUpdate: true,
feedbackMessage: "atualizando dados..."
}, function(success) {
console.log(success);
}, function(error) {
console.log(error);
});

pagarme.Mpos.display("transacao Aprovada")
```
6 changes: 5 additions & 1 deletion plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -141,12 +141,16 @@
<source-file src="src/android/drawable/border_green.xml" target-dir="src/main/res/drawable" />
<source-file src="src/android/drawable/border_red.xml" target-dir="src/main/res/drawable" />
<source-file src="src/android/drawable/border_white.xml" target-dir="src/main/res/drawable" />
<source-file src="src/android/drawable/rect_border_red.xml" target-dir="src/main/res/drawable" />

<source-file src="src/android/drawable/ic_credit_card__6.xml" target-dir="src/main/res/drawable" />
<source-file src="src/android/drawable/ic_credit_cards_payment.xml" target-dir="src/main/res/drawable" />
<source-file src="src/android/drawable/rect_border_red.xml" target-dir="src/main/res/drawable" />

<source-file src="src/android/drawable/rect_green_border_white.xml" target-dir="src/main/res/drawable" />
<source-file src="src/android/drawable/round_rect_grey.xml" target-dir="src/main/res/drawable" />
<source-file src="src/android/drawable/round_rect_red.xml" target-dir="src/main/res/drawable" />
<source-file src="src/android/drawable/round_rect_green.xml" target-dir="src/main/res/drawable" />
<source-file src="src/android/drawable/round_rect_white.xml" target-dir="src/main/res/drawable" />

<source-file src="src/android/layout/activity_charge.xml" target-dir="src/main/res/layout" />
<source-file src="src/android/layout/activity_finish.xml" target-dir="src/main/res/layout" />
Expand Down
148 changes: 86 additions & 62 deletions src/android/com/gurpster/cordova/pagarme/mpos/MposPluginService.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,19 @@ Licensed to the Apache Software Foundation (ASF) under one
import android.util.Log;
import com.alibaba.fastjson.JSON;
import com.androidnetworking.AndroidNetworking;
import com.androidnetworking.common.ANRequest;
import com.androidnetworking.common.Priority;
import com.androidnetworking.error.ANError;
import com.androidnetworking.interfaces.JSONObjectRequestListener;
import com.gurpster.cordova.pagarme.mpos.entity.Charge;
import com.gurpster.cordova.pagarme.mpos.withinterface.MposService;
import com.leve.ai.R;
import me.pagar.mposandroid.Mpos;
import me.pagar.mposandroid.MposListener;
import me.pagar.mposandroid.MposPaymentResult;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.PluginResult;
import org.greenrobot.eventbus.EventBus;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
Expand Down Expand Up @@ -809,75 +813,74 @@ private void close(String message) {
mpos.close(message.toUpperCase());
}

private void callRemoteServer(Charge charg) {

/*AndroidNetworking.post(configParameter.getRemoteApi())
.addHeaders("X-Api-Key", charge.getApiKey())
.addHeaders("Authorization", charge.getToken())
.addJSONObjectBody(charge.toJson())
.setPriority(Priority.HIGH)
.build()
.getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
charge = null;
Log.d(TAG, response.toString());
// Response res = JSON.parseObject(
// response.toString(),
// Response.class
// );
try {
JSONObject jsonObject = response.getJSONObject("data");
if (charg.isOnline()) {
mpos.finishTransaction(
true,
// Integer.parseInt(res.getData().getAcquirerResponseCode()),
Integer.parseInt(jsonObject.getString("acquirer_response_code")),
// res.getData().getCardEmvResponse()
jsonObject.getString("card_emv_response")
);
}
private void callRemoteServer(final Charge charge) {

ANRequest.PostRequestBuilder<?> requestBuilder;
switch (charge.getRemoteApi().getType().toLowerCase()) {
case "put":
requestBuilder = AndroidNetworking.put(charge.getRemoteApi().getUrl());
break;
case "patch":
requestBuilder = AndroidNetworking.patch(charge.getRemoteApi().getUrl());
break;
default:
requestBuilder = AndroidNetworking.post(charge.getRemoteApi().getUrl());
break;
}

} catch (Exception e) {
e.printStackTrace();
}
// add headers
requestBuilder.addHeaders(charge.getRemoteApi().getHeaders());

showPinPadMessage(configParameter.getMessages().getSuccessPayment(), 0);
showPinPadMessage("remova o cartao", 2500);
showPinPadMessage(configParameter.getMessages().getAppName(), 5500);
requestBuilder.addBodyParameter("amount", charge.getAmount());
requestBuilder.addBodyParameter("card_hash", charge.getCardHash());

try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("code", Constants.PAYMENT_SUCCESSFUL);
jsonObject.put("message", "payment successfully");
// add body params
requestBuilder.addBodyParameter(charge.getRemoteApi().getParams());

PluginResult pluginResult = makePluginResult(PluginResult.Status.OK, jsonObject);
pluginResult.setKeepCallback(false);
callbackContext.sendPluginResult(pluginResult);
} catch (JSONException e) {
}
requestBuilder.setPriority(Priority.HIGH);
ANRequest<?> request = requestBuilder.build();
request.getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
paymentSuccessful(response, charge);
}

}
@Override
public void onError(ANError error) {
paymentError();
}
});
}

@Override
public void onError(ANError error) {
charge = null;
Log.e(TAG, error.getErrorCode() + " " + error.getErrorBody());
showPinPadMessage(configParameter.getMessages().getErrorPayment(), 0);
showPinPadMessage("retire o cartao", 3000);
showPinPadMessage(configParameter.getMessages().getAppName(), 5500);
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("code", Constants.PAYMENT_ERROR);
jsonObject.put("message", error.getErrorBody());
public void paymentSuccessful(JSONObject response, Charge charge) {
try {
JSONObject jsonObject = response.getJSONObject("data");
mpos.finishTransaction(
true,
Integer.parseInt(jsonObject.getString("acquirer_response_code")),
jsonObject.getString("card_emv_response")
);
if (charge.isOnline()) {
}

PluginResult pluginResult = makePluginResult(PluginResult.Status.OK, jsonObject);
pluginResult.setKeepCallback(false);
callbackContext.error(jsonObject);
} catch (JSONException e) {
}
}
});*/
EventBus.getDefault().post(new MposService.FinishEvent(false));

} catch (Exception e) {
e.printStackTrace();
}

EventBus.getDefault().post(new MposService.FinishEvent(false));

display("finalizado");
display("remova o cartao", 2000);
display(getString(R.string.app_name), 7500);
}

private void paymentError() {
display("erro de conexao");
// display("remova o cartao", 2500);
display(getString(R.string.app_name), 7000);
EventBus.getDefault().post(new MposService.FinishEvent(true, "erro de conexao"));
}

public PluginResult makePluginResult(PluginResult.Status status, Object... args) {
Expand Down Expand Up @@ -944,4 +947,25 @@ public void getFile(JSONArray args, CallbackContext callbackContext) {
callbackContext.success();
}

public void display(String message) {
try {
if (mpos != null && !TextUtils.isEmpty(message)) {
mpos.displayText(message.toUpperCase());
}
} catch (Exception e) {
Log.d(TAG, e.getMessage());
}
}

private void display(final String message, int delay) {
if (mpos != null && !TextUtils.isEmpty(message)) {
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
mpos.displayText(message.toUpperCase());
}
}, delay);
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public void onCreate() {
super.onCreate();

if (sInstance == null) {
sInstance = this;
sInstance = App.this;
}

if (!isMyServiceRunning(MposService.class) || mposService == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,19 @@ void success() {
R.color.greener
));
title.setText("PAGAMENTO REALIZADO");
title.setTextColor(color);
title.setTextColor(ContextCompat.getColor(
getApplicationContext(),
R.color.white
));
description.setText(getString(R.string.payment_successfully));
description.setTextColor(color);
animationView.setAnimationFromUrl("https://assets1.lottiefiles.com/datafiles/OhIfcxnkLsj1Jxj/data.json");

action.setTextColor(color);
action.setBackgroundResource(R.drawable.rect_green_border_white);
action.setTextColor(ContextCompat.getColor(
getApplicationContext(),
R.color.greener
));
action.setBackgroundResource(R.drawable.round_rect_white);
action.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Expand All @@ -77,11 +83,11 @@ public void onClick(View v) {
void error() {
int color = ContextCompat.getColor(
getApplicationContext(),
R.color.black_title
R.color.black_description
);
rootView.setBackgroundColor(ContextCompat.getColor(
getApplicationContext(),
R.color.colorApp
R.color.white
));
title.setText("ERRO");
title.setTextColor(color);
Expand All @@ -94,11 +100,14 @@ void error() {
getApplicationContext(),
R.color.colorApp
));
action.setBackgroundResource(R.drawable.border_red);
action.setBackgroundResource(R.drawable.rect_border_red);
action.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent chargeIntent = new Intent();
Intent chargeIntent = new Intent(
FinishActivity.this,
ChargeActivity.class
);
chargeIntent.putExtra("data", getIntent().getStringExtra("data"));
startActivity(chargeIntent);
finish();
Expand Down
Loading

0 comments on commit e3bef4e

Please sign in to comment.