Colección de citas famosas - Frases elegantes - Conéctese al SDK de pagos de Alipay

Conéctese al SDK de pagos de Alipay

Acceso al SDK de pago de Alipay

Se puede decir que el acceso de pago de Alipay es el mejor acceso a todos los SDK, sin excepción.

El cliente no necesita firmar, ni preocuparse por el nombre del paquete, ni necesita preocuparse por el archivo de firma. Simplemente devuelve la orden a través de la interfaz y le da la orden. El SDK de Alipay para realizar llamadas se le devolverá en la interfaz actual. Vas a la interfaz de notificaciones nuevamente.

Diagrama de flujo de pagos

Dirección del documento oficial

! Dirección del documento oficial de pago de Alipay

Siga las instrucciones del documento para acceder al SDK y las configuraciones relacionadas, que no se repetirán aquí

Código de clave de pago del cliente ===》Llamada a la interfaz de pago (llamar (Iniciar el cuadro emergente de pago)

Recuerde que la llamada a la interfaz de pago debe ejecutarse en un hilo independiente que no sea ui, es decir, debe llamarse en un nuevo hilo. Puede utilizar el nuevo método Thread como en la demostración oficial.

A continuación daré un código de muestra usando el método Observable

En PayUtils

/**

*desc: Pago Alipay

* Creado por conge el 27/8/2018 17:20

* @param orderInfo El pedido devuelto por la interfaz

**/

public static void aliPay(actividad de actividad final, OrderInfo de cadena final, OrderListener final orderListener) {

Observable.just(orderInfo)

.map(new Function () {

@Override

public String apply(String orderInfo) lanza una excepción {

//Cuando el usuario hace clic para pagar dentro de la aplicación comercial, ¿se requiere una carga antes? ¿Se activa la billetera? Transición, este valor se establece en verdadero

return new PayTask(activity).pay(orderInfo, true);

}

} )

.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

.subscribe(new Consumer () {

@ Override

public void aceptar(String payResult) lanza una excepción {

orderListener.onPayResult(payResult);

}

});

}

Procesamiento de devolución de resultados de pago

Ejemplo de devolución:

resultStatus={9000};memo= {};result={ {"alipay_trade_app_pay_response":{"code":"10000","msg":"Éxito","app_id":"2016091300503896","auth_app_id":"2016091300503896","charset":"utf -8","timestamp ":"2018-08-28 17:51:11","out_trade_no":"nVElbd74TW6WnEyxQwvX8A","total_amount":"0.01","trade_no":"2018082821001004680500208879","seller_id":" 208810217 5487650"},"signo ":"W0Hg9k4GxL8Oaxymvqk2i65WNDQxYp6HGve32ek6VjSRnymmI3GQTjpQVbZuDzvjcwQ/HIkM97PoBGAVlTmi/wiJcqDgSSDzDY7AFnNN0OcK0ehWGwK QINA4IDGh51A7yY/vYKmR0VW+2 OwGhlRPPMMZtQOEqh8a9/aIijzT6ZLwy9Hl4ayG/fVKhdC1VdckF6+C25BFNp3fIxarg5tfEunm7N9iWngKCUsnP+IZz05OHdvynimgYPcBnbBERH

G97GVqRT/EdBWTQyIDMc0LemScAYxJixTVgXDkRddQjzWZ7HgLdBfjs0nXY24puHudT76ERxVY+8NkoKle/QI+FA==","sign_type":"RSA2"}}

También puedes iniciar sesión tú mismo

Procesando código de muestra:

//Pago Alipay

PayUtils.aliPay(this, result.getSignDataStr(), new PayUtils.OrderListener() {

@Override

public void onPayResult(String payResult) {

PayResult pr = new PayResult(payResult);

String rs = pr.getResultStatus();

String r = pr .getResult();

cambiar (rs) {

caso AliPayResultStatus.PAY_SUCCESS:

ToastUtils.show(R.string.pay_success);

p>

//Notificar a la interfaz que el pago se realizó correctamente

interrupción;

caso AlipayResultStatus.PAY_PROCESSING:

caso AlipayResultStatus.PAY_UNKNOWN:

ToastUtils.show(R.string.pay_fail);

//El pago puede realizarse correctamente, utilice la interfaz para consultar

break;

default:

ToastUtils.show(R.string.pay_fail);

//Notifica a la interfaz que el pago falló y el pedido fue cancelado

}

}

});

En el método anterior:

//Notificar a la interfaz que el pago se realizó correctamente//El el pago puede ser exitoso, debe consultar la interfaz // Notificar a la interfaz que el pago falló y cancelar el pedido. Si debe notificarle las operaciones realizadas por el servidor de acuerdo con los requisitos de su producto.

Normalmente requerido, se utiliza para cambiar el estado del pedido

PayResult.class

public class PayResult {

private String resultStatus;

resultado de cadena privada;

nota de cadena privada;

resultado de pago público(String rawResult) {

if (TextUtils.isEmpty(rawResult))

return;

String[] resultParams = rawResult.split(";");

for (String resultParam : resultParams) {

if (resultParam . comienza con("resultStatus")) {

resultStatus = gatValue(resultParam, "resultStatus");

}

if (resultParam.startsWith("resultado) " )) {

resultado = gatValue(resultParam, "resultado");

}

if (resultParam.startsWith("memo")) {

p>

memo = gatValue(resultParam, "memo");

}

}

}

@Override

public String toString() {

return "resultStatus={" + resultStatus + "};memo={" + memo

+ "};resultado= {" + resultado + "}";

}

cadena privada gatValue(contenido de cadena, clave de cadena) {

prefijo de cadena = clave + "={ ";

return content.substring(content.indexOf(prefix) + prefix.length(),

content.lastIndexOf("}"));

}

public String outOrder() {

String order = ""out_trade_no"";

if (result.contains( orden)) {

p>

Cadena comenzar = resultado.substring(result.indexOf(orden));

Cadena ss = comenzar.split(",")[0];

String newS = ss.replace(""", "")

.replace("}", "")

.replace(": ", "")

.replace("out_trade_no", "");

prueba {

return newS;

} captura (Excepción e) {

> e.printStackTrace();

}

}

return "";

}

/ **

* @return the resultStatus

*/

public String getResultStatus() {

return resultStatus;

}

/**

* @devolver la nota

*/

public String getMemo() {

devolver nota;

}

/**

* @devolver el resultado

*/

public String getResult() {

return result;

}}

Finalmente, aquí está la tabla de códigos de devolución de pago

PayPayResultStatus.class

public classPayPayResultStatus {

/**

* Si el pago del pedido es exitoso, el único que definitivamente es un pago exitoso

* /

public static final String PAY_SUCCESS = "9000";

/**

* En proceso, el resultado del pago se desconoce (el pago puede haber sido exitoso), verifique el estado de pago del pedido en la lista de pedidos del comerciante

*/

public static final String PAY_PROCESSING = "8000";

/**

* Error en el pago del pedido

*/

public static final String PAY_FAIL = "4000";

/**

* Repetir solicitud

*/

public static final String PAY_REPEAT = "5000";

/**

* Usuario a mitad de camino Cancelar

*/

cadena final estática pública PAY_PROCESS_CANCEL = "6001";

/**

* Error de conexión de red

p>

*/

public static final String PAY_NET_ERROR = "6002";

/**

* Se desconoce el resultado del pago (es posible que se haya pagado correctamente), verifique el estado de pago del pedido en la lista de pedidos del comerciante

*/

public static final String PAY_UNKNOWN = "6004";}

Hay otro Abandone el modo de depuración de la zona de pruebas directamente; de ​​lo contrario, provocará una falla en el pago y es posible que no sepa cuál es el error. gran cantidad, discútalo con la interfaz y use 0.01 para el servidor de prueba.