Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
/ EasyPay Public

简化Android平台微信支付宝支付方式

Notifications You must be signed in to change notification settings

ZQ7/EasyPay

Repository files navigation

EasyPay

[ ](https://jitpack.io/#ZQ7/EasyPay)

对微信支付和支付宝支付的App端SDK进行二次封装,对外提供一个较为简单的接口和支付结果回调

相关文档

  1. 支付宝APP支付文档: https://docs.open.alipay.com/204

  2. 微信APP支付文档: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_1

1. 如何添加

在app目录下的build.gradle中添加依赖(微信支付宝SDK版本号请查询文档自行添加)

implementation 'com.github.ZQ7:EasyPay::1.1.0'

2. Android Manifest配置

注册activity

 <!-- 微信支付(不需要创建WXPayEntryActivity) -->
 <activity-alias
 android:name="微信支付注册时的包名.wxapi.WXPayEntryActivity"
 android:exported="true"
 android:launchMode="singleTop"
 android:targetActivity="com.yi2580.easypay.wechat.WechatPayCallbackActivity" />

全局初始化AppId及相关(也可以在发起支付的时候设置)

//支付宝AppId和通知回调地址
EasyPay.ALI_PAY_APP_ID = ConstantValue.ALI_APP_ID;
EasyPay.ALI_PAY_NOTIFY_URL = ConstantValue.ALI_NOTIFY_URL;
//微信AppId和商户号
EasyPay.WECHAT_PAY_APP_ID = ConstantValue.WX_APP_ID;
EasyPay.WECHAT_PAY_PARTNER_ID = ConstantValue.WX_MCH_ID;

3. 发起支付

3.1 微信支付(包含部分参数简介)

 //微信请求参数文档https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_12&index=2
 WechatPayReq req = new WechatPayReq.Builder()
 .with(mActivity)
 .setPrepayId("预支付交易会话ID")
 //如果没有设置签名后的字符串,可以设置私钥,自动完成签名(签名一般由服务端完成)
 .setSign("")
 .setPrivateKey(ConstantValue.WX_API_KEY)
 .create();
 req.setWechatPayResultCallBack(new WechatPayResultCallBack() {
 @Override
 public void onSuccess() {
 Toast.makeText(getApplication(), "支付成功", Toast.LENGTH_SHORT).show();
 }
 @Override
 public void onError(int errorCode, String message) {
 //错误码参考:https://docs.open.alipay.com/204/105301/
 Toast.makeText(getApplication(), "支付失败", Toast.LENGTH_SHORT).show();
 }
 @Override
 public void onCancel() {
 Toast.makeText(getApplication(), "取消支付", Toast.LENGTH_SHORT).show();
 }
 });
 EasyPay.getInstance().sendPayRequest(req);
{
 //微信支付AppID
 private String appId = EasyPay.WECHAT_PAY_APP_ID;
 //微信支付商户号
 private String partnerId = EasyPay.WECHAT_PAY_PARTNER_ID;
 //预支付码(重要)
 private String prepayId;
 //"Sign=WXPay"
 private String packageValue = "Sign=WXPay";
 private String nonceStr;
 //时间戳
 private String timeStamp;
 //签名
 private String sign;
 //API密钥,在商户平台设置
 private String privateKey;
}

3.2 支付宝支付(包含部分参数简介)

 //支付宝请求参数文档https://docs.open.alipay.com/204/105465/
 AliBizContent bizContent = new AliBizContent("订单号", "价格", "商品名称", "交易具体描述信息");
 //PayReq中可根据自己需求设置字段
 AliPayReq req = new AliPayReq.Builder()
 .with(mActivity)
 .setBizContent(bizContent)
 //如果没有设置签名后的字符串,可以设置私钥,自动完成签名(签名一般由服务端完成)
 .setSign("")
 .setPrivateKey(ConstantValue.ALI_PRIVATE_KEY)
 .create();
 req.setResultCallBack(new 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(String resultStatus, String message) {
 //错误码参考:https://docs.open.alipay.com/204/105301/
 Toast.makeText(getApplication(), "支付失败", Toast.LENGTH_SHORT).show();
 }
 @Override
 public void onCancel() {
 Toast.makeText(getApplication(), "取消支付", Toast.LENGTH_SHORT).show();
 }
 });
 EasyPay.getInstance().sendPayRequest(req);
{
 //支付宝分配给开发者的应用ID
 private String appId = EasyPay.ALI_PAY_APP_ID;
 //支付宝服务器主动通知商户服务器里指定的页面http/https路径。建议商户使用https
 private String notifyUrl = EasyPay.ALI_PAY_NOTIFY_URL;
 //发送请求的时间,格式"yyyy-MM-dd HH:mm:ss"
 private String timestamp;
 //接口名称
 private String method = "alipay.trade.app.pay";
 //商户请求参数的签名串
 private String sign;
 //pkcs8 格式的商户私钥。
 private String privateKey;
 //商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2
 private String signType = "RSA2";
 //仅支持JSON
 private String format = "JSON";
 //调用的接口版本,固定为:1.0
 private String version = "1.0";
 //请求使用的编码格式,如utf-8,gbk,gb2312等
 //private String charset = ALiPayUtils.DEFAULT_CHARSET;
 private String charset = "utf-8";
 private AliBizContent bizContent;
 private String bizContentStr;
 
 
 public class AliBizContent {
 /**
 * 商户网站唯一订单号
 */
 private String out_trade_no;
 /**
 * 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
 */
 private String total_amount;
 /**
 * 商品的标题/交易标题/订单标题/订单关键字等。
 */
 private String subject;
 /**
 * 对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。
 */
 private String body;
 /**
 * 该笔订单允许的最晚付款时间,逾期将关闭交易。
 * 取值范围:1m〜15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。
 * 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
 * 注:若为空,则默认为15d。
 */
 private String timeout_express = "15d";
 /**
 * 销售产品码,商家和支付宝签约的产品码,为固定值QUICK_MSECURITY_PAY
 */
 private String product_code = "QUICK_MSECURITY_PAY";
 /**
 * 商品主类型:0—虚拟类商品,1—实物类商品
 * 注:虚拟类商品不支持使用花呗渠道
 */
 private int goods_type;
 
 }
}
 

About

简化Android平台微信支付宝支付方式

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /