From 4cccb0f46bdd4c0085f4a0f94323fe852b3fbb30 Mon Sep 17 00:00:00 2001 From: tangsiyuan Date: Fri, 9 Dec 2016 10:56:34 +0800 Subject: [PATCH] add PayDemo --- .gitignore | 7 + app/.gitignore | 1 + app/build.gradle | 28 +++ app/proguard-rules.pro | 17 ++ .../com/tsy/paydemo}/ApplicationTest.java | 2 +- app/src/main/AndroidManifest.xml | 51 +++++ .../java/com/tsy/paydemo/MainActivity.java | 180 ++++++++++++++++++ app/src/main/res/layout/activity_main.xml | 129 +++++++++++++ .../main/res/layout/activity_wxpay_entry.xml | 12 ++ app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3418 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2206 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4842 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7718 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10486 bytes app/src/main/res/values-w820dp/dimens.xml | 6 + app/src/main/res/values/colors.xml | 6 + app/src/main/res/values/dimens.xml | 5 + app/src/main/res/values/strings.xml | 3 + app/src/main/res/values/styles.xml | 11 ++ .../com/tsy/paydemo}/ExampleUnitTest.java | 2 +- build.gradle | 23 +++ gradle.properties | 18 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53636 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 160 ++++++++++++++++ gradlew.bat | 90 +++++++++ pay_android_sdk/build.gradle | 21 +- .../java/com/tsy/sdk/pay/ApplicationTest.java | 13 ++ pay_android_sdk/src/main/AndroidManifest.xml | 2 +- .../service => tsy/sdk}/pay/PayUtils.java | 2 +- .../sdk}/pay/alipay/Alipay.java | 2 +- .../sdk}/pay/alipay/AlipayResult.java | 2 +- .../service => tsy/sdk}/pay/weixin/WXPay.java | 2 +- .../pay/weixin/WXPayCallbackActivity.java | 4 +- .../java/com/tsy/sdk/pay/ExampleUnitTest.java | 15 ++ settings.gradle | 1 + 36 files changed, 795 insertions(+), 26 deletions(-) create mode 100644 .gitignore create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro rename {pay_android_sdk/src/androidTest/java/com/ci123/service/pay => app/src/androidTest/java/com/tsy/paydemo}/ApplicationTest.java (91%) create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/java/com/tsy/paydemo/MainActivity.java create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/layout/activity_wxpay_entry.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/values-w820dp/dimens.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml rename {pay_android_sdk/src/test/java/com/ci123/service/pay => app/src/test/java/com/tsy/paydemo}/ExampleUnitTest.java (90%) create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 pay_android_sdk/src/androidTest/java/com/tsy/sdk/pay/ApplicationTest.java rename pay_android_sdk/src/main/java/com/{ci123/service => tsy/sdk}/pay/PayUtils.java (97%) rename pay_android_sdk/src/main/java/com/{ci123/service => tsy/sdk}/pay/alipay/Alipay.java (98%) rename pay_android_sdk/src/main/java/com/{ci123/service => tsy/sdk}/pay/alipay/AlipayResult.java (97%) rename pay_android_sdk/src/main/java/com/{ci123/service => tsy/sdk}/pay/weixin/WXPay.java (98%) rename pay_android_sdk/src/main/java/com/{ci123/service => tsy/sdk}/pay/weixin/WXPayCallbackActivity.java (95%) create mode 100644 pay_android_sdk/src/test/java/com/tsy/sdk/pay/ExampleUnitTest.java create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5f94008 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +*.iml +.gradle +/local.properties +/.idea +.DS_Store +/build +/captures diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..bc16ad5 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,28 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 24 + buildToolsVersion "24.0.3" + + defaultConfig { + applicationId "com.tsy.paydemo" + minSdkVersion 11 + targetSdkVersion 23 + versionCode 1 + versionName "1.0" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile fileTree(include: ['*.jar'], dir: 'libs') + testCompile 'junit:junit:4.12' + compile 'com.android.support:appcompat-v7:24.2.1' + + compile project(':pay_android_sdk') +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..b253438 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /Users/tsy/Library/Android/sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/pay_android_sdk/src/androidTest/java/com/ci123/service/pay/ApplicationTest.java b/app/src/androidTest/java/com/tsy/paydemo/ApplicationTest.java similarity index 91% rename from pay_android_sdk/src/androidTest/java/com/ci123/service/pay/ApplicationTest.java rename to app/src/androidTest/java/com/tsy/paydemo/ApplicationTest.java index 4cb5e84..e81c514 100644 --- a/pay_android_sdk/src/androidTest/java/com/ci123/service/pay/ApplicationTest.java +++ b/app/src/androidTest/java/com/tsy/paydemo/ApplicationTest.java @@ -1,4 +1,4 @@ -package com.ci123.service.pay; +package com.tsy.paydemo; import android.app.Application; import android.test.ApplicationTestCase; diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..e9fc393 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/tsy/paydemo/MainActivity.java b/app/src/main/java/com/tsy/paydemo/MainActivity.java new file mode 100644 index 0000000..e584741 --- /dev/null +++ b/app/src/main/java/com/tsy/paydemo/MainActivity.java @@ -0,0 +1,180 @@ +package com.tsy.paydemo; + +import android.content.ClipboardManager; +import android.content.Context; +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.text.TextUtils; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import com.tsy.sdk.pay.PayUtils; +import com.tsy.sdk.pay.alipay.Alipay; +import com.tsy.sdk.pay.weixin.WXPay; + +public class MainActivity extends AppCompatActivity implements View.OnClickListener { + + private EditText editWXParam, editAlipayParam; + private Button btnWXPay, btnAlipay, btnWXClear, btnWXPaste, btnAliPayClear, btnAliPayPaste, btnGetIp; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + editAlipayParam = (EditText)findViewById(R.id.editAlipayParam); + editWXParam = (EditText)findViewById(R.id.editWXParam); + btnAlipay = (Button)findViewById(R.id.btnAliPay); + btnWXPay = (Button)findViewById(R.id.btnWXPay); + btnWXClear = (Button)findViewById(R.id.btnWXClear); + btnWXPaste = (Button)findViewById(R.id.btnWXPaste); + btnAliPayClear = (Button)findViewById(R.id.btnAliPayClear); + btnAliPayPaste = (Button)findViewById(R.id.btnAliPayPaste); + btnGetIp = (Button)findViewById(R.id.btnGetIp); + + btnAlipay.setOnClickListener(this); + btnWXPay.setOnClickListener(this); + btnWXClear.setOnClickListener(this); + btnWXPaste.setOnClickListener(this); + btnAliPayClear.setOnClickListener(this); + btnAliPayPaste.setOnClickListener(this); + btnGetIp.setOnClickListener(this); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.btnWXPay: + String wx_pay_param = editWXParam.getText().toString(); + if(TextUtils.isEmpty(wx_pay_param)) { + Toast.makeText(getApplication(), "请输入参数", Toast.LENGTH_SHORT).show(); + return; + } + doWXPay(wx_pay_param); + break; + + case R.id.btnWXClear: + editWXParam.setText(""); + break; + + case R.id.btnWXPaste: + ClipboardManager cbm=(ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE); + editWXParam.setText(cbm.getText()); + break; + + case R.id.btnAliPay: + String alipay_pay_param = editAlipayParam.getText().toString(); + if(TextUtils.isEmpty(alipay_pay_param)) { + Toast.makeText(getApplication(), "请输入参数", Toast.LENGTH_SHORT).show(); + return; + } + doAlipay(alipay_pay_param); + break; + + case R.id.btnAliPayClear: + editAlipayParam.setText(""); + break; + + case R.id.btnAliPayPaste: + ClipboardManager cbm2=(ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE); + editAlipayParam.setText(cbm2.getText()); + break; + + case R.id.btnGetIp: + String ip = PayUtils.getIpAddress(); + if(ip != null) { + Toast.makeText(getApplication(), ip, Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(getApplication(), "获取ip失败", Toast.LENGTH_SHORT).show(); + } + + default: + break; + } + } + + /** + * 支付宝支付 + * @param pay_param 支付服务生成的支付参数 + */ + private void doAlipay(String pay_param) { + new Alipay(this, pay_param, new Alipay.AlipayResultCallBack() { + @Override + public void onSuccess() { + Toast.makeText(getApplication(), "支付成功", Toast.LENGTH_SHORT).show(); + } + + @Override + public void onDealing() { + Toast.makeText(getApplication(), "支付处理中...", Toast.LENGTH_SHORT).show(); + } + + @Override + public void onError(int error_code) { + switch (error_code) { + case Alipay.ERROR_RESULT: + Toast.makeText(getApplication(), "支付失败:支付结果解析错误", Toast.LENGTH_SHORT).show(); + break; + + case Alipay.ERROR_NETWORK: + Toast.makeText(getApplication(), "支付失败:网络连接错误", Toast.LENGTH_SHORT).show(); + break; + + case Alipay.ERROR_PAY: + Toast.makeText(getApplication(), "支付错误:支付码支付失败", Toast.LENGTH_SHORT).show(); + break; + + default: + Toast.makeText(getApplication(), "支付错误", Toast.LENGTH_SHORT).show(); + break; + } + + } + + @Override + public void onCancel() { + Toast.makeText(getApplication(), "支付取消", Toast.LENGTH_SHORT).show(); + } + }).doPay(); + } + + /** + * 微信支付 + * @param pay_param 支付服务生成的支付参数 + */ + private void doWXPay(String pay_param) { + String wx_appid = "wx6b69bdbf2adca4f8"; //替换为自己的appid + WXPay.init(getApplicationContext(), wx_appid); //要在支付前调用 + WXPay.getInstance().doPay(pay_param, new WXPay.WXPayResultCallBack() { + @Override + public void onSuccess() { + Toast.makeText(getApplication(), "支付成功", Toast.LENGTH_SHORT).show(); + } + + @Override + public void onError(int error_code) { + switch (error_code) { + case WXPay.NO_OR_LOW_WX: + Toast.makeText(getApplication(), "未安装微信或微信版本过低", Toast.LENGTH_SHORT).show(); + break; + + case WXPay.ERROR_PAY_PARAM: + Toast.makeText(getApplication(), "参数错误", Toast.LENGTH_SHORT).show(); + break; + + case WXPay.ERROR_PAY: + Toast.makeText(getApplication(), "支付失败", Toast.LENGTH_SHORT).show(); + break; + } + } + + @Override + public void onCancel() { + Toast.makeText(getApplication(), "支付取消", Toast.LENGTH_SHORT).show(); + } + }); + } + + +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..3104628 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + +