JPay — простой, но не тривиальный платежный SDK
Обёртка над платежами WeChat App, Alipay App и UnionPay App, предоставляющая простой интерфейс и обратный вызов результата платежа
GitHub: https://github.com/Javen205/JPay
Контактная информация
Способ использования
Шаг 1. Добавьте его в ваш основной build.gradle в конце раздела repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Шаг 2. Добавьте зависимости
implementation 'com.github.javen205:JPay:AliPay:latest.release.here'
implementation 'com.github.javen205:JPay:WxPay:latest.release.here'
Например, версия 0.0.5
:
implementation 'com.github.javen205.JPay:AliPay:0.0.5'
implementation 'com.github.javen205.JPay:WxPay:0.0.5'
// Для последней версии специальных настроек не требуется, они уже включены в библиотеку
```#### 2.2 Регистрация activity
Добавьте следующий контент в узел `<application>`:
// Для последней версии специальных настроек не требуется, они уже включены в библиотеку
### 3. Вызов платежа
#### 3.1 Платеж через WeChat
```java
com.jpay.wxpay.JPay.getIntance(mContext).toWxPay(appId, partnerId, prepayId, nonceStr, timeStamp, sign, new com.jpay.wxpay.JPay.WxPayListener() {
@Override
public void onPaySuccess() {
Toast.makeText(mContext, "Платёж завершен успешно", Toast.LENGTH_SHORT).show();
}
});
@Override
public void onPayError(int error_code, String message) {
Toast.makeText(mContext, "Платёж не удался> " + error_code + " " + message, Toast.LENGTH_SHORT).show();
}
@Override
public void onPayCancel() {
Toast.makeText(mContext, "Отменён платёж", Toast.LENGTH_SHORT).show();
}
});
или
com.jpay.wxpay.JPay.getIntance(mContext).toWxPay(payParameters, new com.jpay.wxpay.JPay.WxPayListener() {
@Override
public void onPaySuccess() {
Toast.makeText(mContext, "Успешный платёж", Toast.LENGTH_SHORT).show();
}
@Override
public void onPayError(int error_code, String message) {
Toast.makeText(mContext, "Платёж не удался> " + error_code + " " + message, Toast.LENGTH_SHORT).show();
}
@Override
public void onPayCancel() {
Toast.makeText(mContext, "Отменён платёж", Toast.LENGTH_SHORT).show();
}
});
payParameters
— это JSON-строка в следующем формате:
{
"appId": "",
"partnerId": "",
"prepayId": "",
"sign": "",
"nonceStr": "",
"timeStamp": ""
}
или
JPay.getIntance(mContext).toWxPay(appId, partnerId, prepayId, nonceStr, timeStamp, sign, new JPay.JPayListener() {
@Override
public void onPaySuccess() {
Toast.makeText(mContext, "Успешный платёж", Toast.LENGTH_SHORT).show();
}
@Override
public void onPayError(int error_code, String message) {
Toast.makeText(mContext, "Платёж не удался> " + error_code + " " + message, Toast.LENGTH_SHORT).show();
}
});
``````java
@Override
public void onPayCancel() {
Toast.makeText(mContext, "Отменён платеж", Toast.LENGTH_SHORT).show();
}
});
JPay.getIntance(mContext).toAliPay(orderInfo, new JPay.AliPayListener() {
@Override
public void onPaySuccess() {
Toast.makeText(mContext, "Успешный платеж", Toast.LENGTH_SHORT).show();
}
@Override
public void onPayError(int error_code, String message) {
Toast.makeText(mContext, "Платеж не удался>" + error_code + " " + message, Toast.LENGTH_SHORT).show();
}
@Override
public void onPayCancel() {
Toast.makeText(mContext, "Отменён платеж", Toast.LENGTH_SHORT).show();
}
});
com.jpay.unionpay.JPay.getIntance(mContext).toUnionPay("01", tn, new com.jpay.unionpay.JPay.UnionPayListener() {
@Override
public void onPaySuccess() {
Toast.makeText(mContext, "Успешный платеж", Toast.LENGTH_SHORT).show();
}
@Override
public void onPayError(int error_code, String message) {
Toast.makeText(mContext, "Платеж не удался>" + error_code + " " + message, Toast.LENGTH_SHORT).show();
}
@Override
public void onPayCancel() {
Toast.makeText(mContext, "Отменён платеж", Toast.LENGTH_SHORT).show();
}
@Override
public void onUnionPay(String dataOrg, String sign, String mode) {
Log.d("onUnionPay", "Платеж успешен>необходимо проверить заказ в бэкэнде>dataOrg" + dataOrg + " sign>" + sign + " mode>" + mode);
Toast.makeText(mContext, "Платеж успешен>необходимо проверить заказ в бэкэнде>" + dataOrg + " " + mode, Toast.LENGTH_SHORT).show();
}
});
Активность переопределяет метод onActivityResult
для прослушивания обратных вызовов
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.e("UnionPay", requestCode + " " + resultCode);
try {
UnionPay.getInstance(this).onUnionPayResult(data);
} catch (JSONException e) {
e.printStackTrace();
}
super.onActivityResult(requestCode, resultCode, data);
}
```### 4. Пример использования
> appId и связанные ключи мы получаем с сервера
#### 4.1 Указания для клиента
1. Измените имя пакета в `AndroidManifest.xml` на имя пакета вашего приложения
2. Измените `applicationId` в `build.gradle` вашего приложения на имя пакета вашего приложения
3. При тестировании измените ключ подписи по умолчанию
> Скопируйте ключ в корневую директорию проекта (app) и измените конфигурацию `buildTypes` следующим образом:
signingConfigs { release { storeFile file("wxkey") storePassword '123456' keyAlias '1' keyPassword '123456' } }
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { signingConfig signingConfigs.release } }
#### 4.2 Дополнительные материалы
Подробное описание работы с платежами WeChat и Alipay через мобильные приложения доступно по ссылке [блог](http://javen.blog.csdn.net).
[Как создать свой ngrok-сервер за 10 минут для проксирования внутренней сети](http://javen.blog.csdn.net/article/details/70341106)
[Интеграция WeChat APP платежей в Android](http://javen.blog.csdn.net/article/details/54024232)
[Интеграция Alipay APP платежей в Android](http://javen.blog.csdn.net/article/details/54024238)[Понимаете ли вы WAP-платежи Alipay?](http://javen.blog.csdn.net/article/details/54024253)
**Рекомендую**
[Разработка WeChat Official Account: подписка, сервис](https://gitee.com/javen205/weixin_guide)
[Множественная сборка Android Studio для различных каналов](http://javen.blog.csdn.net/article/details/61420290)
[Управление зависимостями в Android и создание частной серверной среды](http://javen.blog.csdn.net/article/details/60336030)[Загрузка aar (библиотеки) в JCenter с помощью Android Studio](http://javen.blog.csdn.net/article/details/60336189)
Поскольку предоставленный текст представляет собой ссылку на внешний источник, который не содержит текста для перевода, то здесь нет необходимости делать какие-либо изменения. Текст остается без изменений.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )