af-pay
af-pay изначально был компонентом оплаты в QuickAF (быстрый фреймворк для разработки Android), а теперь выделен в отдельную библиотеку для оплаты на Android. Поддерживает оплату через Alipay, WeChat Pay и позволяет выполнять как клиентские, так и серверные платежи.
Существует две версии библиотеки:
Обратите внимание: если вы не хотите включать зависимости от платёжной платформы, используйте версию pure или соответствующую ветку.
Версия pure не содержит никаких зависимостей от платёжных платформ, и если ваш проект уже включает другие jar-файлы (например, libammsdk.jar для обмена данными с друзьями), это может привести к конфликтам и сбоям при упаковке. Рекомендуется использовать чистую версию.
dependencies {
compile 'cn.ieclipse.af:af-pay:0.0.2'
}
dependencies {
compile 'cn.ieclipse.af:af-pay-pure:0.0.2'
}
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
— Для использования полной версии:
dependencies {
compile 'com.github.Jamling:af-pay:master-SNAPSHOT'
}
— Для использования версии pure:
dependencies {
compile 'com.github.Jamling:af-pay:pure-SNAPSHOT'
}
Способ оплаты через клиентское приложение поддерживает обе версии Alipay SDK (v1 и v2). Рекомендуется использовать v2. Способ оплаты через сервер поддерживает только v2. Если вы подали заявку на оплату через Alipay, вы можете изменить соответствующие настройки и запустить демонстрационное приложение для успешной оплаты.
Пример кода:
private void doAlipay(String orderInfo) {
final Activity activity = this;
Alipay alipay = new Alipay(activity);
alipay.setPayListener(new Alipay.PayListener() {
@Override
public void onPaySuccess(PayResult payResult) {
showToast(activity, "Оплата прошла успешно");
}
@Override
public void onPayWaiting(PayResult payResult) {
showToast(activity, "Ожидание подтверждения результата оплаты...");
}
@Override
public void onPayCancel(PayResult payResult) {
showToast(activity, "Вы отменили оплату");
}
@Override
public void onPayFailure(PayResult payResult) {
showToast(activity, "Ошибка оплаты\n" + payResult.getMemo());
}
});
if (TextUtils.isEmpty(orderInfo)) {
// Настройка v1
Alipay.DEBUG = true;
Alipay.Config.appId = "";
Alipay.Config.rsa_private = "";
Alipay.Config.rsa_public = "";
Alipay.Config.notify_url = "app/pay/alipay_notify.do";
if (!alipay.check()) {
showToast(activity, "Не хватает настроек, оплата невозможна");
return;
}
String trans_order_id = OrderInfoUtil2_0.genOutTradeNo();
Map<String, String> map = OrderInfoUtil2_0.buildOrderParamMap(trans_order_id, "Тестовая оплата", "Тестовый товар 1, Тестовый товар 2",
String.valueOf(0.01f), null);
orderInfo = OrderInfoUtil2_0.getOrderInfo(map);
alipay.payV1(orderInfo);
} else {
alipay.payV2(orderInfo);
}
}
Пример кода:
private void doWxpay(String orderInfo) {
final Activity activity = this;
// Получение класса оплаты
Wxpay wxpay = Wxpay.getInstance(activity);
// Установка слушателя оплаты
wxpay.setPayListener(new Wxpay.PayListener() {
@Override
public void onPaySuccess(BaseResp resp) {
showToast(activity, "Оплата прошла успешно");
}
@Override
public void onPayCanceled(BaseResp resp) {
showToast(activity, "Отмена оплаты");
}
@Override
public void onPayFailure(BaseResp resp) {
showToast(activity, "Неудача при оплате");
}
});
// Здесь выполняется серверный платеж, содержимое — это xml, возвращённый после создания единого заказа
if (!TextUtils.isEmpty(orderInfo)) {
PayReq req = OrderInfoUtil.getPayReq(orderInfo);
wxpay.pay(req);
} else { // Клиентский платеж
Wxpay.DEBUG = true; // Включение журнала
``` ```
// API ключ, устанавливается на платформе продавца в WeChat
Wxpay.Config.api_key = "32-битная строка";
// APPID, генерируется после создания приложения на открытой платформе WeChat
Wxpay.Config.app_id = "wx...";
// Идентификатор продавца, создаётся после регистрации на платформе продавца
Wxpay.Config.mch_id = "14...";
// Интерфейс асинхронного уведомления о результатах оплаты, разрабатывается бэкендом
Wxpay.Config.notify_url = "http://www.ieclipse.cn/app/pay/wxpay_notify.do";
// Создание задачи для асинхронной обработки заказа по умолчанию
Wxpay.DefaultOrderTask task = new Wxpay.DefaultOrderTask(wxpay);
// Этот номер заказа продавца генерируется случайным образом
String outTradeNo = OrderInfoUtil2_0.genOutTradeNo();
// Установка параметров запроса для обработки заказа
task.setParams(OrderInfoUtil.buildOrderParamMap(outTradeNo, "Тестовый платёж", "", "1", null, null, null));
task.execute();
}
Примечание: данный перевод не является профессиональным и может содержать неточности.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )