步骤

官网:http://www.71pay.cn/

1、导入Jar包----将HeepayPlugin.jar,HftJuhePay.jar 包放入工程指定的libs目录。

2、配置清单文件----添加权限,添加activity等组件
3、编码接入----支付参数传递,支付结果回调
4、其他请参考说明文档



演示代码

public class MainActivity extends Activity {

    private static String TAG = "bqt";
    private Context mContext;
    private RadioGroup mRgPayType;//支付方式
    private RadioButton mRBtnWeChat;//微信
    private RadioButton mRBtnAlipay;//支付宝
    private ClearEditText mEtPayAmount;//金额
    private Button mBtnPay;//支付
    private String mStrPayMode = "1";// 支付方式:微信=1,支付宝=2
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mContext = this;
        setContentView(R.layout.activity_main);
        findViews();
        setLitener();
    }
    private void findViews() {
        mRgPayType = (RadioGroup) findViewById(R.id.rg_pay_way);
        mRBtnWeChat = (RadioButton) findViewById(R.id.rb_wechat_pay);
        mRBtnAlipay = (RadioButton) findViewById(R.id.rb_alipay);
        mEtPayAmount = (ClearEditText) findViewById(R.id.activity_main_et_pay_amount);
        mBtnPay = (Button) findViewById(R.id.activity_main_btn_pay);
    }
    private void setLitener() {
        mRgPayType.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                if (checkedId == mRBtnWeChat.getId()) mStrPayMode = "1";
                if (checkedId == mRBtnAlipay.getId()) mStrPayMode = "2";
            }
        });
        mBtnPay.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (TextUtils.isEmpty(mEtPayAmount.getText().toString().trim())) {
                    Toast.makeText(mContext, "请输入金额", Toast.LENGTH_SHORT).show();
                    return;
                }
                HashMap<String, String> params = new HashMap<String, String>();
                params.put("pay_mode", mStrPayMode); // 支付方式:微信=1,支付宝=2
                params.put("order_id", getAppKey(mContext) + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())); // 订单号
                params.put("pay_amt", mEtPayAmount.getText().toString().trim()); // 支付金额
                params.put("notify_url", "www.baidu.com"); // 通知地址
                params.put("goods_name", "虚拟测试产品"); // 商品名称
                params.put("goods_note", "虚拟测试产品0.01元"); // 商品价格信息,可为空
                params.put("extends_info", "无"); // 标记
                params.put("goods_num", "1"); // 商品数量
                HftJuhePay.getInstance().pay(mContext, params, new OnPayFinishedListener() {
                    @Override
                    public void onPaySuccess(Map params) {
                        printLog(params, "支付成功---");
                    }
                    @Override
                    public void onPayFail(Map params, int errorInt) {
                        printLog(params, "支付失败---");
                    }
                    @Override
                    public void onPayCancel(Map params) {
                        printLog(params, "支付取消---");
                    }
                    @Override
                    public void onPayProcess(Map params) {
                        printLog(params, "支付处理中---");
                    }
                });
            }
        });
    }
    private void printLog(Map params, String toast) {
        Toast.makeText(mContext, toast + params, Toast.LENGTH_LONG).show();
        Log.i(TAG, "params=" + params.toString());
        //goods_name=虚拟测试产品, total_amt=0.5, extends_info=无, goods_num=1,
        //order_id=S4LjqtXxozaVYDqSDMh1MliO20160317183136, goods_note=虚拟测试产品0.01元
        String mStrOrderId = ((Map<String, String>) params).get("order_id");//订单号
        String mStrTotalAmount = ((Map<String, String>) params).get("total_amt");//支付总金额
        String mStrGoodsName = ((Map<String, String>) params).get("goods_name");//商品名称
        String mStrGoodsNote = ((Map<String, String>) params).get("goods_note");//商品说明
        String mStrGoodsNum = ((Map<String, String>) params).get("goods_num");//商品数量
        String mStrExtendsInfo = ((Map<String, String>) params).get("extends_info");//扩展信息
    }
    /** 获取App_Key */
    public static String getAppKey(Context context) {
        return getStringMetaData(context, "HFT_APP_KEY");
    }
    private static String getStringMetaData(Context context, String key) {
        Bundle metaData = getMetaData(context);
        String strVal = metaData != null ? metaData.getString(key) : null;
        return strVal != null ? strVal : "";
    }
    private static Bundle getMetaData(Context context) {
        if (context == null) return null;
        PackageManager pm = context.getPackageManager();
        try {
            ApplicationInfo appInfo = pm.getApplicationInfo(context.getPackageName(), 128);
            if (appInfo != null) return appInfo.metaData;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }

}


附件列表

话付通SDK 聚合支付的更多相关文章

  1. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_6-1.常用的第三方支付和聚合支付介绍

    笔记 第六章 开发在线教育视频站点核心业务之从零基础接入 微信扫一扫网页支付 1.常用的第三方支付和聚合支付介绍     简介:介绍常用的第三方支付和聚合支付 1.什么是第三方支付         第 ...

  2. 教你快速高效接入SDK——服务器端支付回调的处理方式

    转载自:http://blog.csdn.net/chenjie19891104/article/details/48321427今天着重把之前渠道服务器端SDK的时候,遇到的一个蛋疼的问题给解决了. ...

  3. 基于ping++聚合支付进行微信红包开发

    1.微信方面的开发,一定要详细的阅读微信支付的开发文档. https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13 ...

  4. C#实现盛大盛付通充值卡状态查询

    今天有这样一需求,要求能够查询盛付通卡的状态,官网如下 http://www.801335.com/status/index.htm 刚一打开网址,发现两个输入框加一个验证码,心中一喜不是小  cas ...

  5. ASP.NET Core 2.0 支付宝当面付之扫码支付

    前言 自从微软更换了CEO以后,微软的战略方向有了相当大的变化,不再是那么封闭,开源了许多东西,拥抱开源社区,.NET实现跨平台,收购xamarin并免费提供给开发者等等.我本人是很喜欢.net的,并 ...

  6. 从支付宝SDK的支付流程理解什么是公钥和私钥,什么是加密和数字签名

    ------------------- 这是自己总结: 支付宝SDK支付用到的公钥与私钥整理如下: 1.商户应用公钥    2.商户应用私钥 3.支付宝公钥 4.支付宝私钥   商户应用的公钥与私钥生 ...

  7. asp.net mvc4 运用 paypal sdk实现支付

    1.https://developer.paypal.com/ 注册账号,并且申请一个app,获得 client id,secret等数据   2.点击页面中"Sandbox Account ...

  8. 微信支付开发 c# SDK JSAPI支付开发的流程和微信大坑

    微信支付开发流程 1. 开通微信支付功能 省略 2. 下载微信的C#版的微信SDK 下载连接:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chap ...

  9. iOS:使用集成的支付宝SDK的支付流程

    基本步骤: 1.先与支付宝签约,获得商户的ID(partner)和账号ID(seller),这一部分主要是又公司负责: 2.下载相应的公钥私钥文件,用来给签名进行加密: 3.下载支付宝集成的SDK,网 ...

随机推荐

  1. delphi服务程序(service)的调试方法

    方法一: 1.调试delphi 写的服务程序,有这么一个办法.原来每次都是用attach to process方法,很麻烦.并且按照服务线程的执行线路,可能会停不到想要的断点.笨办法是,在proced ...

  2. springmvc数组参数传递

    在开发中遇到将form中的name值一样的多个input元素传递到后台,我用的是springmvc. 刚开始的时候老是报400的请求错误.后来查了下资料,其实解决方案挺简单的. 我的后台control ...

  3. POJ2299 Ultra-QuickSort(归并排序求逆序数)

    归并排序求逆序数   Time Limit:7000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u   Descri ...

  4. Spring ApplicationContext的事件机制

    ApplicationContext的事件机制是观察者设计模式的实现,通过 ApplicationEvent 类和 ApplicationListener 接口,可以实现 ApplicationCon ...

  5. 转:Mongodb中随机的查询文档记录

    简述,摘要:在实际应用场景中,几乎都会有随机获取数据记录的需求.而这个需求在Mongodb却不是很好实现,就目前而言,大致上有三种解决方案:1. 先计算出一个从0到记录总数之间的随机数,然后采用ski ...

  6. h.264 Bi-Predictive Motion Search

    在做B帧的运动预测时,有两组参考图像列表(refList0, refList1),需要进行分别前向预测.后向预测.传统的预测方式是: 对refList0进行前向预测,得到最佳前向ref与mv. 对re ...

  7. 可重入与线程安全(Reentrancy and Thread-Safety)

    http://blog.csdn.net/zzwdkxx/article/details/49338067 http://blog.csdn.net/zzwdkxx/article/details/4 ...

  8. java.lang.NoClassDefFoundError: javax/servlet/ServletContext

    方法1:把SpringBoot中main方法所在的class不再继承org.springframework.boot.context.web.SpringBootServletInitializer即 ...

  9. 【HDOJ】1423 Greatest Common Increasing Subsequence

    LCIS /* 1423 */ #include <cstdio> #include <cstring> #include <cstdlib> #define MA ...

  10. thickbox 关于动态生成 无法跳出弹出框的问题

    问题描述: 用jQuery动态生成thickbox的连接代码,发现没有效果. 原因: thickbox在页面加载后,会给a,input,area等绑定弹出事件. 通过tb_init(’a.thickb ...