A permissive license whose main conditions require preservation of copyright and license notices. Contributors provide an express grant of patent rights. Licensed works, modifications, and larger works may be distributed under different terms and without source code.
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 )