JPay

微信和支付宝支付的二次封装
授权协议 Apache
开发语言 Java
所属分类 手机/移动开发、 微信开发/微信公众号开发
软件类型 开源软件
地区 国产
投 递 者 赫连永怡
操作系统 Android
开源组织
适用人群 未知
 软件概览

JPay

对微信App支付、支付宝App支付的二次封装,对外提供一个相对简单的接口以及支付结果的回调

 


使用方法

1、引入

 

compile 'com.javen205.jpay:jpaysdk:latest.release.here'


2. Android Manifest配置

2.1权限声明

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2.2注册activityapplication节点添加如下类容

<!-- 微信支付 -->
        <activity
            android:name="com.javen205.jpay.weixin.WXPayEntryActivity"
            android:configChanges="orientation|keyboardHidden|navigation|screenSize"
            android:launchMode="singleTop"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
        <activity-alias
            android:name=".wxapi.WXPayEntryActivity"
            android:exported="true"
            android:targetActivity="com.javen205.jpay.weixin.WXPayEntryActivity" />
        <!-- 微信支付 end -->


        <!-- alipay sdk begin -->

        <activity
            android:name="com.alipay.sdk.app.H5PayActivity"
            android:configChanges="orientation|keyboardHidden|navigation|screenSize"
            android:exported="false"
            android:screenOrientation="behind"
            android:windowSoftInputMode="adjustResize|stateHidden" >
        </activity>
        <activity
            android:name="com.alipay.sdk.app.H5AuthActivity"
            android:configChanges="orientation|keyboardHidden|navigation"
            android:exported="false"
            android:screenOrientation="behind"
            android:windowSoftInputMode="adjustResize|stateHidden" >
        </activity>

        <!-- alipay sdk end -->


 3. 发起支付

3.1 微信支付

JPay.getIntance(mContext).toPay(JPay.PayMode.WXPAY, payParameters, 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();
            }

            @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();
            }

            @Override
            public void onPayCancel() {
                Toast.makeText(mContext, "取消了支付", Toast.LENGTH_SHORT).show();
            }
        });


3.2 支付宝支付

 

JPay.getIntance(mContext).toPay(JPay.PayMode.ALIPAY, orderInfo, 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();
            }

            @Override
            public void onPayCancel() {
                Toast.makeText(mContext, "取消了支付", Toast.LENGTH_SHORT).show();
            }
        });

或者

 

Alipay.getInstance(mContext).startAliPay(orderInfo, new JPay.JPayListener() {
            @Override
            public void onPaySuccess() {

            }

            @Override
            public void onPayError(int error_code, String message) {

            }

            @Override
            public void onPayCancel() {

            }
        });

4.案例的使用


 appId以及相关的key我们都从服务端获取

4.1 客户端使用说明
 1. 将`AndroidManifest.xml` 的包名修改为申请应用的包名
 2. 将应用中的`build.gradle`的 `applicationId`修改为申请应用的包名
 3. 测试的时候修改默认的签名key

将key复制到项目的根目录(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 服务端使用说明

1. 开源项目地址weixin_guide
2. 开源项目如何下载、如何导入到IDE 参考之前写的文章微信公众号之项目导入
3. 微信支付服务端具体实现在`com.javen.weixin.controller.WeixinPayController.java` 类中的`appPay()`
4. 支付宝支付服务端具体实现在`com.javen.alipay.AliPayController.java` 类中的`appPay()`


4.3 参考资料

微信、支付宝APP支付详细介绍参考资料 博客地址


[Android版-微信APP支付]

[Android版-支付宝APP支付]

[支付宝Wap支付你了解多少?]

 相关资料
  • laravel框架封装微信支付和支付宝支付

  • 本文向大家介绍iOS实现H5支付(微信、支付宝)原生封装,包括了iOS实现H5支付(微信、支付宝)原生封装的使用技巧和注意事项,需要的朋友参考一下 前言 支付分APP支付、H5支付、扫码支付等。app支付一般在app中使用,并且需要集成相应的支付SDK,H5支付多用于网页。如果你的APP不想集成支付SDK,又想实现支付功能,你可以在项目中使用H5支付。本文主要讲述如何将H5支付封装成一个原生可调用

  • wx.BaaS.pay(OBJECT) OBJECT 参数说明 参数 类型 必填 参数描述 totalCost Number Y 支付总额 merchandiseDescription String Y 微信支付凭证-商品详情的内容 merchandiseSchemaID Integer N 商品表 ID,可用于定位用户购买的物品 merchandiseRecordID String N 商品记录

  • 本文向大家介绍Android支付宝支付封装代码,包括了Android支付宝支付封装代码的使用技巧和注意事项,需要的朋友参考一下 在做Android支付的时候肯定会用到支付宝支付, 根据官方给出的demo做起来非常费劲,所以我们需要一次简单的封装。 封装的代码也很简单,就是将官网给的demo提取出一个类来方便使用。 前面的几个常量是需要去支付宝官网获取的,获取后直接替换就ok, 其他的代码基本都是从

  • 用户可能在使用App过程中可能会出现不能正常唤起支付宝的情况。 处理方式:请在webview中设置允许打开alipays或alipay协议。 示例代码: - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler

  • 由于变现猫接入的支付宝支付类型为支付宝手机网站支付,如果app(安卓)没有接入过支付宝支付,可能存在在app中无法唤起支付宝客户端问题,如果出现这种情况则: 在客户端加入以下代码,重写webview加载方法,以下代码为安卓处理方式: //android WebView相关设置 mWebView.setWebViewClient(new PayWebViewClient()); //实现代码 cla

  • 本文向大家介绍php实现微信和支付宝支付的示例代码,包括了php实现微信和支付宝支付的示例代码的使用技巧和注意事项,需要的朋友参考一下 php实现微信支付 微信支付文档地址:https://pay.weixin.qq.com/wiki/doc/api/index.html 在php下实现微信支付,这里我使用了EasyWeChat 这里我是在Yii框架实现的,安装EasyWeChat插件 一:配置E

  • 本文向大家介绍Python提取支付宝和微信支付二维码的示例代码,包括了Python提取支付宝和微信支付二维码的示例代码的使用技巧和注意事项,需要的朋友参考一下 支付宝或者微信支付导出的收款二维码,除了二维码部分,还有很大一块背景图案,例如下面就是微信支付的收款二维码: 有时候我们仅仅只想要图片中间的方形二维码部分,为了提取出中间部分,我们可以使用图片处理软件,但图片处理软件不利于批处理,且学习也需