Conéctese al SDK de pagos de Alipay
Se puede decir que el acceso de pago de Alipay es el mejor acceso entre todos los SDK, sin excepción.
El cliente no necesita firmar, no necesita preocuparse por el nombre del paquete y no necesita preocuparse por el archivo de firma. La interfaz devuelve el pedido y llama al SDK de Alipay. o el error se le devuelve en la interfaz actual. Luego ingresas a la interfaz de notificación.
Diagrama de flujo de pagos
Dirección del documento oficial
! Dirección del documento oficial de pago de Alipay
Según la descripción del documento, acceda al SDK y las configuraciones relacionadas y no entrará en detalles aquí
Código de clave de pago del cliente==="Llamada a la interfaz de pago ( llamar ventana emergente de pago)
Recuerde que la llamada a la interfaz de pago debe ejecutarse en un hilo separado que no sea UI, es decir, se debe abrir un nuevo hilo dentro de la llamada. Puede usar el nuevo hilo. método como la demostración oficial.
A continuación doy el código de muestra en forma de Observable
En PayUtils
/**
*desc:Alipay Payment
* Creado por conge el 27/8/2018 17:20
* Interfaz @param orderInfo devuelta por el pedido
**/
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) throws Exception {
// Si el usuario hace clic para pagar en la aplicación comercial, ¿es necesario cargarlo como ¿Una transición antes de llamar a la billetera? Establezca este valor 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":"success", "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": " 2088102175487650"}, "signo": "W0Hg9k4GxL8Oaxymvqk2i65WNDQxYp6HGve32ek6VjSRnymmI3GQTjpQVbZuDzvjcwQ/HIkM97PoBGAVlTmi/wiJcqDgSSDzDY7AFnN0Oc K0ehWGwK QINA4IDGh51A7yY/vYKmR0VW+2OwGhlRPPMMZtQOEqh8a9/aIijzT6ZLwy9Hl4ayG/fVKhdC1VdckF6+.
C25BFNp3fIxarg5tfEunm7N9iWngKCUsnP+IZz05OHdvynimgYPcBnbBERHG97GVqRT/ EdBWTQyIDMc0LemScAYxJixTVgXDkRddQjzWZ7HgLdBfjs0nXY24puHudT76ERxVY+8NkoKle/QI+FAsign==", " _type":"RSA2"}}
También puede escribir su propio registro para ver el procesamiento.
Código de muestra:
//Pago de Paypal
PayUtils.aliPay(this, result.getSignDataStr(), new PayUtils.OrderListener() {
@Override
public void onPayResult(String payResult) {
PayResult pr = new PayResult(payResult);
String rs = pr.getResultStatus() {
PayResult pr = new PayResult(payResult);
}
@Override
public String toString() {
return "resultStatus={" + resultStatus + "};memo={" + memo
+ "};result={ " + resultado + "}";
}
cadena privada gatValue(contenido de cadena, clave de cadena) {
prefijo de cadena = clave + "= {";
return content.substring(content.indexOf(prefijo) + prefix.length(),
content.lastIndexOf("}"));
}
public String outOrder() {
Orden de cadena = ""out_trade_no"";
if (result.contains(orden)) {
Cadena comenzar = resultado.substring(result.indexOf(orden));
Cadena ss = comenzar.split(",")[0];
Cadena newS = ss.replace("", "")
. reemplazar("}", "")
.replace(:", "")
.replace(" out_trade_no", "");
intente {
return newS;
} catch (Exception e) {
e.printStackTrace();
} p>
}
}
devolver " ";
}
/**
* @return the resultStatus
*/
public String getResultStatus() {
return resultStatus;
}