diff --git a/.gitignore b/.gitignore index fd45b12..09b993d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,7 @@ *.iml .gradle /local.properties -/.idea/caches/build_file_checksums.ser -/.idea/libraries -/.idea/modules.xml -/.idea/workspace.xml +/.idea .DS_Store /build /captures diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml deleted file mode 100644 index 8f5517c..0000000 --- a/.idea/assetWizardSettings.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml deleted file mode 100644 index 2eb81ec..0000000 --- a/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index a1757ae..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/dbnavigator.xml b/.idea/dbnavigator.xml deleted file mode 100644 index 8095114..0000000 --- a/.idea/dbnavigator.xml +++ /dev/null @@ -1,456 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index 97626ba..0000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index 08f30ea..0000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/markdown-navigator.xml b/.idea/markdown-navigator.xml deleted file mode 100644 index 7758d01..0000000 --- a/.idea/markdown-navigator.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/markdown-navigator/profiles_settings.xml b/.idea/markdown-navigator/profiles_settings.xml deleted file mode 100644 index 57927c5..0000000 --- a/.idea/markdown-navigator/profiles_settings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index b0c7b20..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml deleted file mode 100644 index 7f68460..0000000 --- a/.idea/runConfigurations.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/README.md b/README.md index 77d9a76..fce7e89 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,11 @@ ![Image](app/src/main/ic_launcher-web.png) -[![](https://jitpack.io/v/jenly1314/AppPay.svg)](https://jitpack.io/#jenly1314/AppPay) +[![JitPack](https://jitpack.io/v/jenly1314/AppPay.svg)](https://jitpack.io/#jenly1314/AppPay) [![CI](https://travis-ci.org/jenly1314/AppPay.svg?branch=master)](https://travis-ci.org/jenly1314/AppPay) [![API](https://img.shields.io/badge/API-16%2B-blue.svg?style=flat)](https://android-arsenal.com/api?level=16) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/mit-license.php) -[![Blog](https://img.shields.io/badge/blog-Jenly-9933CC.svg)](http://blog.csdn.net/jenly121) +[![Blog](https://img.shields.io/badge/blog-Jenly-9933CC.svg)](https://jenly1314.github.io/) [![QQGroup](https://img.shields.io/badge/QQGroup-20867961-blue.svg)](http://shang.qq.com/wpa/qunwpa?idkey=8fcc6a2f88552ea44b1411582c94fd124f7bb3ec227e2a400dbbfaad3dc2f5ad) AppPay for Android 是一个专注于App支付的库,将主流的官方App支付集成方式进行封装、简化,让实现App支付简单到只需几句代码。 @@ -30,7 +30,7 @@ AppPay的的整体结构:包含多个独立封装的子库,每个子库可 com.king.pay apppay - 1.0.0 + 1.0.1 pom @@ -38,7 +38,7 @@ AppPay的的整体结构:包含多个独立封装的子库,每个子库可 com.king.pay wxpay - 1.0.0 + 1.0.1 pom @@ -46,37 +46,37 @@ AppPay的的整体结构:包含多个独立封装的子库,每个子库可 com.king.pay alipay - 1.0.0 + 1.0.1 pom ``` ### Gradle: ```gradle //AppPay - implementation 'com.king.pay:apppay:1.0.0' + implementation 'com.king.pay:apppay:1.0.1' //WXPay - implementation 'com.king.pay:wxpay:1.0.0' + implementation 'com.king.pay:wxpay:1.0.1' //AliPay - implementation 'com.king.pay:alipay:1.0.0' + implementation 'com.king.pay:alipay:1.0.1' ``` > 注意:当集成涉及到支付宝支付时(即使用了AliPay或者AppPay时),需在您项目中引入alipaySdk依赖,具体详情请参见[App中的build.gradle](app/build.gradle),在下面的版本记录中查看AppPay使用alipaySdk对应的版本 ### Lvy: ```lvy //AppPay - + //WXPay - + //AliPay - + ``` @@ -148,6 +148,12 @@ AppPay的的整体结构:包含多个独立封装的子库,每个子库可 ## 版本记录 +#### v1.0.1 :2019-11-14 +* 移除support:appcompat-v7依赖 +* 更新微信支付SDK至v5.4.0 +* 更新支付宝支付SDK至v15.6.8 -> [alipaySdk-15.6.8-20191021122514](alipaySdk/alipaySdk-15.6.8-20191021122514.aar) + + #### v1.0.0 :2019-3-21 * AppPay初始版本 * AliPay 依赖AlipaySdk版本 [alipaySdk-15.6.0-20190226104053](alipaySdk/alipaySdk-15.6.0-20190226104053.aar) @@ -169,6 +175,8 @@ AppPay的的整体结构:包含多个独立封装的子库,每个子库可 CSDN: jenly121 + 博客园: jenly + Github: jenly1314 加入QQ群: 20867961 diff --git a/alipay/build.gradle b/alipay/build.gradle index 9374aeb..80a89ac 100644 --- a/alipay/build.gradle +++ b/alipay/build.gradle @@ -34,6 +34,5 @@ dependencies { androidTestImplementation deps.test.runner androidTestImplementation deps.test.espresso - compileOnly deps.support.appcompat - compileOnly (name: 'alipaySdk-15.6.0-20190226104053', ext: 'aar') + compileOnly (name: 'alipaySdk-15.6.8-20191021122514', ext: 'aar') } \ No newline at end of file diff --git a/alipay/libs/alipaySdk-15.6.0-20190226104053.aar b/alipay/libs/alipaySdk-15.6.0-20190226104053.aar deleted file mode 100644 index 1ba0a1a..0000000 Binary files a/alipay/libs/alipaySdk-15.6.0-20190226104053.aar and /dev/null differ diff --git a/alipay/src/main/java/com/king/pay/alipay/AliAuthReq.java b/alipay/src/main/java/com/king/pay/alipay/AliAuthReq.java index 7305e0f..411099f 100644 --- a/alipay/src/main/java/com/king/pay/alipay/AliAuthReq.java +++ b/alipay/src/main/java/com/king/pay/alipay/AliAuthReq.java @@ -11,6 +11,8 @@ public class AliAuthReq { private String pid; /** 服务接口名称 */ private String apiname = "com.alipay.account.auth"; + /** 服务接口名称, 固定值 */ + private String methodname = "alipay.open.auth.sdk.code.get"; /** 商户类型标识 */ private String appName = "mc"; /** 业务类型 */ @@ -55,6 +57,15 @@ public AliAuthReq setApiname(String apiname) { return this; } + public String getMethodname(){ + return methodname; + } + + public AliAuthReq setMethodname(String methodname) { + this.methodname = methodname; + return this; + } + public String getAppName() { return appName; } diff --git a/alipay/src/main/java/com/king/pay/alipay/AliPay.java b/alipay/src/main/java/com/king/pay/alipay/AliPay.java index 706527d..5ba9721 100644 --- a/alipay/src/main/java/com/king/pay/alipay/AliPay.java +++ b/alipay/src/main/java/com/king/pay/alipay/AliPay.java @@ -3,7 +3,6 @@ import android.app.Activity; import android.os.Handler; import android.os.Message; -import android.support.annotation.NonNull; import android.text.TextUtils; import com.alipay.sdk.app.AuthTask; @@ -74,7 +73,7 @@ public void handleMessage(Message msg) { * 发送支付请求,因为订单参数与签名加密前内容关联密切,所以强烈建议服务端直接返回拼接后的orderInfo,使用{@link #sendReq(String)} * @param req */ - public void sendReq(@NonNull AliPayReq req){ + public void sendReq(AliPayReq req){ sendReq(OrderInfoUtils.buildOrderInfo(req)); } @@ -82,7 +81,7 @@ public void sendReq(@NonNull AliPayReq req){ * 发送支付请求 * @param orderInfo */ - public void sendReq(@NonNull final String orderInfo){ + public void sendReq(final String orderInfo){ final Runnable payRunnable = new Runnable() { @Override @@ -108,7 +107,7 @@ public void run() { * 支付宝授权业务检测,因为授权参数与签名加密前内容关联密切,所以强烈建议服务端直接返回拼接后的authInfo,使用{@link #checkAuth(String)} * @param req */ - public void checkAuth(@NonNull AliAuthReq req){ + public void checkAuth(AliAuthReq req){ sendReq(OrderInfoUtils.buildAuthInfo(req)); } @@ -116,7 +115,7 @@ public void checkAuth(@NonNull AliAuthReq req){ * 支付宝账户授权业务检测 * @param authInfo */ - public void checkAuth(@NonNull final String authInfo){ + public void checkAuth(final String authInfo){ final Runnable authRunnable = new Runnable() { @Override diff --git a/alipay/src/main/java/com/king/pay/alipay/util/OrderInfoUtils.java b/alipay/src/main/java/com/king/pay/alipay/util/OrderInfoUtils.java index c2913c8..b96b21d 100644 --- a/alipay/src/main/java/com/king/pay/alipay/util/OrderInfoUtils.java +++ b/alipay/src/main/java/com/king/pay/alipay/util/OrderInfoUtils.java @@ -1,5 +1,7 @@ package com.king.pay.alipay.util; +import android.text.TextUtils; + import com.king.pay.alipay.AliAuthReq; import com.king.pay.alipay.AliPayReq; @@ -51,8 +53,9 @@ private static Map buildOrderInfoParamMap(AliPayReq req) { keyValues.put("version", req.getVersion()); - keyValues.put("notify_url",req.getNotifyUrl()); - + if(!TextUtils.isEmpty(req.getNotifyUrl())){ + keyValues.put("notify_url",req.getNotifyUrl()); + } keyValues.put("biz_content",req.getBizContent()); return keyValues; @@ -82,6 +85,8 @@ private static Map buildAuthInfoMap(AliAuthReq req) { keyValues.put("pid", req.getPid()); // 服务接口名称 keyValues.put("apiname", req.getApiname()); + // 服务接口名称, 固定值 + keyValues.put("methodname", req.getMethodname()); // 商户类型标识 keyValues.put("app_name",req.getAppName()); // 业务类型 @@ -151,5 +156,4 @@ private static String buildKeyValue(String key, String value, boolean isEncode) } - } diff --git a/alipaySdk/alipaySdk-15.6.8-20191021122514.aar b/alipaySdk/alipaySdk-15.6.8-20191021122514.aar new file mode 100644 index 0000000..07bc2cf Binary files /dev/null and b/alipaySdk/alipaySdk-15.6.8-20191021122514.aar differ diff --git a/app/build.gradle b/app/build.gradle index 8425ca8..1cdcd8a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -34,6 +34,6 @@ dependencies { implementation project(':apppay') //集成AppPay或者AliPay时需依赖alipaySdk - implementation (name: 'alipaySdk-15.6.0-20190226104053', ext: 'aar') + implementation (name: 'alipaySdk-15.6.8-20191021122514', ext: 'aar') } diff --git a/app/libs/alipaySdk-15.6.0-20190226104053.aar b/app/libs/alipaySdk-15.6.0-20190226104053.aar deleted file mode 100644 index 1ba0a1a..0000000 Binary files a/app/libs/alipaySdk-15.6.0-20190226104053.aar and /dev/null differ diff --git a/apppay/build.gradle b/apppay/build.gradle index c65f893..e9d430a 100644 --- a/apppay/build.gradle +++ b/apppay/build.gradle @@ -33,7 +33,6 @@ dependencies { testImplementation deps.test.junit androidTestImplementation deps.test.runner androidTestImplementation deps.test.espresso - compileOnly deps.support.appcompat api project(':alipay') api project(':wxpay') diff --git a/apppay/src/main/java/com/king/pay/apppay/AppPay.java b/apppay/src/main/java/com/king/pay/apppay/AppPay.java index 3b61e12..e153750 100644 --- a/apppay/src/main/java/com/king/pay/apppay/AppPay.java +++ b/apppay/src/main/java/com/king/pay/apppay/AppPay.java @@ -2,7 +2,6 @@ import android.app.Activity; import android.content.Context; -import android.support.annotation.NonNull; import com.king.pay.alipay.AliAuthReq; import com.king.pay.alipay.AliPay; @@ -16,9 +15,9 @@ */ public class AppPay implements IAppPay { - private WXPay mWXPay; + private volatile WXPay mWXPay; - private AliPay mAliPay; + private volatile AliPay mAliPay; private Activity mActivity; @@ -31,9 +30,13 @@ public AppPay(Activity activity){ * @param context * @param appId */ - private void initWXPay(@NonNull Context context,@NonNull String appId){ + private void initWXPay(Context context, String appId){ if(mWXPay == null){ - mWXPay = new WXPay(context,appId); + synchronized (AppPay.class){ + if(mWXPay == null){ + mWXPay = new WXPay(context,appId); + } + } } } @@ -41,38 +44,42 @@ private void initWXPay(@NonNull Context context,@NonNull String appId){ * 初始化AliPay * @param activity */ - private void initAliPay(@NonNull Activity activity){ + private void initAliPay(Activity activity){ if(mAliPay == null){ - mAliPay = new AliPay(activity); + synchronized (AppPay.class){ + if(mAliPay == null){ + mAliPay = new AliPay(activity); + } + } } } @Override - public void sendWXPayReq(@NonNull WXPayReq req) { + public void sendWXPayReq(WXPayReq req) { initWXPay(mActivity,req.getAppId()); mWXPay.sendReq(req); } @Override - public void sendAliPayReq(@NonNull AliPayReq req) { + public void sendAliPayReq(AliPayReq req) { initAliPay(mActivity); mAliPay.sendReq(req); } @Override - public void sendAliPayReq(@NonNull String orderInfo) { + public void sendAliPayReq(String orderInfo) { initAliPay(mActivity); mAliPay.sendReq(orderInfo); } @Override - public void checkAliAuth(@NonNull AliAuthReq req) { + public void checkAliAuth(AliAuthReq req) { initAliPay(mActivity); mAliPay.checkAuth(req); } @Override - public void checkAliAuth(@NonNull String authInfo) { + public void checkAliAuth(String authInfo) { initAliPay(mActivity); mAliPay.checkAuth(authInfo); } diff --git a/apppay/src/main/java/com/king/pay/apppay/IAppPay.java b/apppay/src/main/java/com/king/pay/apppay/IAppPay.java index 0dd7fbb..d018083 100644 --- a/apppay/src/main/java/com/king/pay/apppay/IAppPay.java +++ b/apppay/src/main/java/com/king/pay/apppay/IAppPay.java @@ -1,7 +1,5 @@ package com.king.pay.apppay; -import android.support.annotation.NonNull; - import com.king.pay.alipay.AliAuthReq; import com.king.pay.alipay.AliPayReq; import com.king.pay.wxpay.WXPayReq; @@ -15,29 +13,29 @@ public interface IAppPay { * 发送微信支付请求 * @param req */ - void sendWXPayReq(@NonNull WXPayReq req); + void sendWXPayReq(WXPayReq req); /** * 发送支付宝支付请求 * @param req */ - void sendAliPayReq(@NonNull AliPayReq req); + void sendAliPayReq(AliPayReq req); /** * 发送支付宝支付请求 * @param orderInfo */ - void sendAliPayReq(@NonNull String orderInfo); + void sendAliPayReq(String orderInfo); /** * 检测支付宝授权 * @param req */ - void checkAliAuth(@NonNull AliAuthReq req); + void checkAliAuth(AliAuthReq req); /** * 检测支付宝授权 * @param authInfo */ - void checkAliAuth(@NonNull String authInfo); + void checkAliAuth(String authInfo); } diff --git a/build.gradle b/build.gradle index 3597ee9..d71639d 100644 --- a/build.gradle +++ b/build.gradle @@ -20,6 +20,7 @@ allprojects { repositories { flatDir { dirs 'libs' + dirs '../alipaySdk' } addRepos(repositories) } diff --git a/versions.gradle b/versions.gradle index 358b6e6..3fa8ea6 100644 --- a/versions.gradle +++ b/versions.gradle @@ -1,7 +1,7 @@ //App def app_version = [:] -app_version.versionCode = 1 -app_version.versionName = "1.0.0" +app_version.versionCode = 2 +app_version.versionName = "1.0.1" ext.app_version = app_version //build version @@ -41,7 +41,7 @@ test.espresso = "com.android.support.test.espresso:espresso-core:$versions.espre deps.test = test //wechatpay -deps.wxpay = "com.tencent.mm.opensdk:wechat-sdk-android-with-mta:5.3.1" +deps.wxpay = "com.tencent.mm.opensdk:wechat-sdk-android-with-mta:5.4.0" ext.deps = deps diff --git a/wxpay/build.gradle b/wxpay/build.gradle index 912d2ac..907d15a 100644 --- a/wxpay/build.gradle +++ b/wxpay/build.gradle @@ -33,6 +33,5 @@ dependencies { androidTestImplementation deps.test.runner androidTestImplementation deps.test.espresso - compileOnly deps.support.appcompat api deps.wxpay } \ No newline at end of file diff --git a/wxpay/src/main/java/com/king/pay/wxpay/WXPay.java b/wxpay/src/main/java/com/king/pay/wxpay/WXPay.java index 928766b..16f0782 100644 --- a/wxpay/src/main/java/com/king/pay/wxpay/WXPay.java +++ b/wxpay/src/main/java/com/king/pay/wxpay/WXPay.java @@ -1,7 +1,6 @@ package com.king.pay.wxpay; import android.content.Context; -import android.support.annotation.NonNull; import com.tencent.mm.opensdk.modelbase.BaseReq; import com.tencent.mm.opensdk.modelpay.PayReq; @@ -16,7 +15,7 @@ public class WXPay { private IWXAPI mApi; - public WXPay(@NonNull Context context,@NonNull String appId){ + public WXPay(Context context,String appId){ mApi = WXAPIFactory.createWXAPI(context,appId); } @@ -25,7 +24,7 @@ public WXPay(@NonNull Context context,@NonNull String appId){ * 发送支付请求 * @param req */ - public void sendReq(@NonNull WXPayReq req){ + public void sendReq(WXPayReq req){ PayReq request = new PayReq(); request.appId = req.getAppId(); request.partnerId = req.getPartnerId(); @@ -41,7 +40,7 @@ public void sendReq(@NonNull WXPayReq req){ * 发送支付请求 * @param req */ - private void sendReq(@NonNull BaseReq req){ + private void sendReq(BaseReq req){ if(req.checkArgs()){ mApi.sendReq(req); } diff --git a/wxpay/src/main/java/com/king/pay/wxpay/wxapi/WXPayActivity.java b/wxpay/src/main/java/com/king/pay/wxpay/wxapi/WXPayActivity.java index 38eeb24..16b3f15 100644 --- a/wxpay/src/main/java/com/king/pay/wxpay/wxapi/WXPayActivity.java +++ b/wxpay/src/main/java/com/king/pay/wxpay/wxapi/WXPayActivity.java @@ -4,8 +4,6 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; import com.king.pay.wxpay.R; import com.tencent.mm.opensdk.constants.ConstantsAPI; @@ -28,7 +26,7 @@ public abstract class WXPayActivity extends Activity implements IWXAPIEventHandl private IWXAPI mApi; @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { + protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.wxpay_activity); @@ -73,7 +71,6 @@ public void onResp(BaseResp baseResp) { * 微信支付AppId (示例:wx****************) * @return */ - @NonNull public abstract String getAppId(); /**