Skip to content

Commit

Permalink
update wxpay
Browse files Browse the repository at this point in the history
  • Loading branch information
Jamling committed May 24, 2017
1 parent 472f14f commit 38f7fc4
Show file tree
Hide file tree
Showing 9 changed files with 144 additions and 108 deletions.
94 changes: 53 additions & 41 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,31 +4,33 @@
[![Bintray](https://img.shields.io/bintray/v/jamling/maven/af-pay.svg?maxAge=86400)](https://bintray.com/jamling/maven/af-pay)
[![Jitpack](https://jitpack.io/v/Jamling/af-pay.svg)](https://jitpack.io/#Jamling/af-pay)

Af-pay原为[QuickAF](一个快速的Android开发框架)中的支付组件,现已抽取出来作为一个单独的Android支付库, 支持支付宝,微信支付,并且同时支持客户端下单与服务端下单。

## 引入
**注:如果不想引入支付依赖的jar,请使用`pure`分支或版本**
af-pay原为[QuickAF](一个快速的Android开发框架)中的支付组件,现已抽取出来作为一个单独的Android支付库, 支持支付宝,微信支付,并且同时支持客户端下单与服务端下单。
af-pay有两个版本
- 完整版本:包含支付宝等支付平台的依赖jar
- 纯净版本:**包含支付宝等支付平台的依赖jar,以避免和其它库(如友盟分享库)冲突,需要你自己引入相关的jar,否则运行时将crash。

## 在gradle中引入
**再次提醒:如果不想引入支付依赖的jar,请使用`pure`分支或版本**
*`pure`版本不包含任何支付平台的相关jar包,如果您的工程中原来已经包含了如微信分享(libammsdk.jar)jar,则会出现冲突,导致打包失败。建议引入纯净版*

### 在Android中直接使用

- 引入完整版本,包含支付平台相关的jar包
```gradle
dependencies {
compile 'cn.ieclipse.af:af-pay:0.0.1'
compile 'cn.ieclipse.af:af-pay:0.0.2'
}
```
- 引入纯净版本
```gradle
dependencies {
compile 'cn.ieclipse.af:af-pay-pure:0.0.1'
compile 'cn.ieclipse.af:af-pay-pure:0.0.2'
}
```

### 使用jitpack.io仓库

1,要工程根目录中的build.gradle中添加jitpack仓库
1,在工程根目录中的build.gradle中添加jitpack仓库

```gradle
allprojects {
Expand Down Expand Up @@ -112,50 +114,60 @@ Af-pay原为[QuickAF](一个快速的Android开发框架)中的支付组件

### 微信支付
```java
private void doWxpay(String orderInfo) {
final Activity activity = this;
Wxpay wxpay = Wxpay.getInstance(activity);
wxpay.setPayListener(new cn.ieclipse.pay.wxpay.Wxpay.PayListener() {
@Override
public void onPaySuccess(BaseResp resp) {
showToast(activity, "支付成功:" + resp.errStr);
}

@Override
public void onPayCanceled(BaseResp resp) {
showToast(activity, "支付取消");
}

@Override
public void onPayFailure(BaseResp resp) {
showToast(activity, "支付失败:" + resp.errStr);
}
});
if (!TextUtils.isEmpty(orderInfo)) {
PayReq req = OrderInfoUtil.getPayReq(orderInfo);
wxpay.pay(req);
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, "支付成功");
}
else {
Wxpay.DEBUG = true;
Wxpay.Config.api_key = "";
Wxpay.Config.app_id = "";
Wxpay.Config.mch_id = "";
Wxpay.Config.notify_url = "app/pay/wxpay_notify.do";

Wxpay.DefaultOrderTask task = new Wxpay.DefaultOrderTask(wxpay);
String trans_order_id = OrderInfoUtil2_0.genOutTradeNo();
task.setParams(OrderInfoUtil.buildOrderParamMap(trans_order_id, "测试支付", "", "1", null, null, null));
task.execute();

@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密钥,在微信商户平台设置
Wxpay.Config.api_key = "32位的字串";
// APPID,在微信开放平台创建应用后生成
Wxpay.Config.app_id = "wx...";
// 商户ID,注册商户平台后生成
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();
}
}
```

## 说明

- 因本demo未申请支付宝支付和微信支付,所以在demo中无法支付成功
- 因本demo未申请支付宝支付和微信支付,所以在示例中无法支付成功
- 如果项目中已经包含或依赖的第三方库中已包含libammsdk.jar(微信sdk),在引入af-pay后,出现因jar版本不致导致编译不通过,建议引入`pure`分支版本。
- af-pay原来是包含在[QuickAF]中,建议使用[QuickAF]的同学们更新依赖。
- 日志tag为`pay_sdk`,可以设置`Wxpay.DEUBG = true``Alipay.DEUBG = true`来开启日志。
- 更多请加入![QQ群: 629153672](http://dl.ieclipse.cn/screenshots/quickaf_group.png)
- 0.0.2版本,微信依赖改为`com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+`

[QuickAF]: https://github.com/Jamling/QuickAF
67 changes: 38 additions & 29 deletions app/src/main/java/cn/ieclipse/pay/demo/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
import android.widget.TextView;
import android.widget.Toast;

import com.tencent.mm.sdk.modelbase.BaseResp;
import com.tencent.mm.sdk.modelpay.PayReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.modelpay.PayReq;

import java.util.Map;

Expand All @@ -26,26 +26,26 @@ public class MainActivity extends Activity implements View.OnClickListener {
private EditText et1;
private Button tv3;
private Button tv4;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tv1 = (TextView) findViewById(R.id.tv1);
tv2 = (TextView) findViewById(R.id.tv2);
et1 = (EditText) findViewById(R.id.et1);
tv3 = (Button) findViewById(R.id.tv3);
tv4 = (Button) findViewById(R.id.tv4);

tv1.setOnClickListener(this);
tv2.setOnClickListener(this);
tv3.setOnClickListener(this);
tv4.setOnClickListener(this);

setTitle("支付示例");
}

@Override
public void onClick(View v) {
if (v == tv1) {
Expand All @@ -63,95 +63,104 @@ else if (v == tv4) {
doWxpay(info);
}
}

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)) {
// set v1 config
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 cn.ieclipse.pay.wxpay.Wxpay.PayListener() {
// 设置支付回调监听
wxpay.setPayListener(new Wxpay.PayListener() {
@Override
public void onPaySuccess(BaseResp resp) {
showToast(activity, "支付成功:" + resp.errStr);
showToast(activity, "支付成功");
}

@Override
public void onPayCanceled(BaseResp resp) {
showToast(activity, "支付取消");
}

@Override
public void onPayFailure(BaseResp resp) {
showToast(activity, "支付失败:" + resp.errStr);
showToast(activity, "支付失败");
}
});
// 这里是服务端下单,内容是统一下单返回的xml
if (!TextUtils.isEmpty(orderInfo)) {
PayReq req = OrderInfoUtil.getPayReq(orderInfo);
wxpay.pay(req);
}
else {
Wxpay.DEBUG = true;
else { // 客户端下单
Wxpay.DEBUG = true; // 开启日志
// API密钥,在微信商户平台设置
Wxpay.Config.api_key = "";
// APPID,在微信开放平台创建应用后生成
Wxpay.Config.app_id = "";
// 商户ID,注册商户平台后生成
Wxpay.Config.mch_id = "";
Wxpay.Config.notify_url = "app/pay/wxpay_notify.do";

// 支付结果异步通知接口,由后台开发提供
Wxpay.Config.notify_url = "http://www.ieclipse.cn/app/pay/wxpay_notify.do";
// 创建统一下单异步任务
Wxpay.DefaultOrderTask task = new Wxpay.DefaultOrderTask(wxpay);
String trans_order_id = OrderInfoUtil2_0.genOutTradeNo();
task.setParams(OrderInfoUtil.buildOrderParamMap(trans_order_id, "测试支付", "", "1", null, null, null));
// 这个商户订单号,由后台返回,在这里随便生成一个
String outTradeNo = OrderInfoUtil2_0.genOutTradeNo();
// 设置统一下单的请求参数
task.setParams(OrderInfoUtil.buildOrderParamMap(outTradeNo, "测试支付", "", "1", null, null, null));
task.execute();
}
}

private void showToast(Activity activity, String msg) {
Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
}
Expand Down
16 changes: 10 additions & 6 deletions library/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,16 @@ ext {
}

dependencies {
if (pure)
if (pure) {
provided fileTree(include: ['*.jar'], dir: 'libs')
else
provided 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
} else {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}
}

tasks.withType(org.gradle.api.tasks.javadoc.Javadoc){
tasks.withType(org.gradle.api.tasks.javadoc.Javadoc) {
options {
links "http://docs.oracle.com/javase/7/docs/api/"
linksOffline "http://d.android.com/reference", "${android.sdkDirectory}/docs/reference"
Expand All @@ -60,17 +63,18 @@ tasks.withType(org.gradle.api.tasks.javadoc.Javadoc){
}
}

// ./gradlew clean library:build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false
publish {
userOrg = 'jamling'
groupId = 'cn.ieclipse.af'
artifactId = pure ? "af-pay-pure" : 'af-pay'
publishVersion = '0.0.1'
publishVersion = '0.0.2'
desc = 'An Android pay sdk'
website = 'https://github.com/Jamling/af-pay'
bintrayUser = 'jamling'
bintrayKey = '832bbe2d2e86f4644c948dc82aa69cc4fa30c16f'
dryRun = true
}
task hello(){
println (pure)
task hello() {
println(pure)
}
4 changes: 2 additions & 2 deletions library/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ systemProp.socksProxyHost=127.0.0.1
systemProp.socksProxyPort=1080

# artifact
ART_VER=1.0.1
ART_VER=0.0.2
ART_GROUP=cn.ieclipse.af
ART_ARTIFACT=af-pay
ART_ARTIFACT_PURE=af-pay-pure
Expand All @@ -30,7 +30,7 @@ LIC_DESC=
SCM_URL=https://github.com/Jamling/af-pay
SCM_REPO=https://github.com/Jamling/af-pay.git
SCM_DEV=git@github.com:Jamling/af-pay.git
SCM_TAG=
SCM_TAG=v0.0.2

# MAVEN DEV
DEV_NAME=QuickAF Project
Expand Down
Binary file removed library/libs/libammsdk.jar
Binary file not shown.
4 changes: 2 additions & 2 deletions library/src/main/java/cn/ieclipse/pay/wxpay/AppRegister.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import android.content.Context;
import android.content.Intent;

import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.WXAPIFactory;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;

public class AppRegister extends BroadcastReceiver {

Expand Down
Loading

0 comments on commit 38f7fc4

Please sign in to comment.