支付SDK接口

1.  集成准备

  1. 1.1  获得KEY
  2. 访问地址:https://pay.dangbei.com/open,注册并添加应用后,系统会自动生成DBKEY和APPKEY,也可在配置页面查看
  3. 1.2  下载SDK
  4. 请联系当贝商务获得 SDK 或者直接在官网下载 https://pay.dangbei.com/index.html
  5. 1.3 配置
  6. 回调接口:请在后台配置页面填写回调接口; 支付方式:微信支付(必选)、支付宝(必选)、短信支付(非必选,金额只能为:1,2,4,5,6,8,10,12,15,20,25,30中的一个,目前仅支持电信运营商,请根据实际情况勾选)。
  7. 1.4  导入SDK
  8. 1.4.1 Eclipse导入SDK
  9. 将下载包中的aar文件解压,将解压得到的jar(最好将class.jar重命名,例如:libDangbeiPay_v1.9.0.jar)以及googlezxing-3.1.1.jar合并到本地工程libs子目录下;在Eclipse中右键工程根目录,选择Properties -> Java Build Path -> Libraries,然后点击Add External JARs... 选择指向jar的路径,点击OK,即导入成功。(ADT17及以上不需要手动导入)。
  10. 1.4.2 Android Studio导入SDK
  11. 将下载包中的aar以及googlezxing-3.1.1.jar合并到本地工程libs子目录下,添加
    repositories {
        flatDir {
            dirs 'libs'
        }
    }
    
    通过如下方式在dependencies导入,注意路径与名称是否正确:
    compile files('libs/googlezxing-3.1.1.jar')
    compile(name:'edeviceid-1.0.8', ext:'aar')
    compile(name:'libDangbeiPay', ext:'aar')

2.  基本功能集成

  1. 2.1 支付流程图
  2. 2.2  配置manifest
  3. //连接互联网权限
    <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" />
    
  4. 2.3 DBKEY&APPKEY填写
  5. 将中的yourDBKEY替换为您的应用DBKEY,APPKEY同理,标签在application下,其他部分不需改动。配置文件如下所示
    <application>
    <meta-data
              android:name="DANGBEI_APPKEY"
              android:value="yourDBKEY" >
    </meta-data>
    <meta-data
            android:name="DANGBEI_PAY_APPKEY"
            android:value="yourAPPKEY" >
    </meta-data>
    <activity
            android:name="com.dangbei.dangbeipaysdknew.DangBeiPayActivity"
            android:theme="@android:style/Theme.Translucent"
            android:screenOrientation="landscape" >
    </activity>
    </application>
      
    *注意:为避免重名冲突,原本的APPKEY修改为DANGBEI_PAY_APPKEY。对接无UI页面方式调用sdk,不需要配置以上信息
  6. 2.4  对接方式一:页面的调用
  7. Intent intent = new Intent();intent.setClass(MainActivity.this, DangBeiPayActivity.class);intent.putExtra("PID","String类型"); //商品id,最大长度为40个字符,必填
    intent.putExtra("Pname","String类型"); //商品名称,最大长度为60个字符,必填
    intent.putExtra("Pprice",“String类型"); //商品价格,必填
    intent.putExtra("Pdesc",“String类型"); //商品描述,最大长度为60个字符,必填
    intent.putExtra("Pchannel",“String类型"); //渠道号
    intent.putExtra("order","string类型"); //order为订单号,可选
    intent.putExtra("extra",“String类型"); //extra为备用字段,可选
    intent.putExtra("isContract", "1");//是否自动续费,可选 1表示自动续费,其他表示不是
    startActivityForResult(intent, 0);
    
    *注意:渠道号配置可以在调用SDK传参的intent中设置,也可以在清单文件中meta-data节点中配置,必须以DANGBEI_CHANNEL命名,两者当中至少选一项,SDK会优先使用intent中设置的渠道参数,具体配置的渠道,请参照https://pay.dangbei.com/channel.php进行设置.
  8. 2.5 对接方式二:无页面sdk数据的调用
  9. DangBeiPayManager.getPayQRInfo(String order,String pid,String pname,String pdesc,String appidkey,String return_url,String is_contract,String price,String extra,String channel, String usernick,String dbkey,new DangBeiPayQRInterface() {
                @Override
                public void onCallBack(final String url) {
                   //url为需要生成的二维码地址
                }
    ​
                @Override
                public void onCallError(final String error) {
                    Log.e(TAG, "onCallError: " + error);
                }
        });
                          

    参数说明

    参数 说明
    order 订单号
    pid 商品id
    pname 商品名称
    pdesc 商品描述
    pdesc 商品描述
    appidkey
    return_url 支付成功跳转地址(http://开头)
    is_contract 是否自动续费
    price 商品价格
    extra 额外参数可为空
    channel 渠道
    usernick 支付者
    dbkey
    DangBeiPayQRInterface 支付返回信息回调
    appidkey与dbkey 为申请时提供的值 两种方式可以根据需要选择一种对接,无UI页面方式返回需要支付的二维码地址,需要自行设计支付页面和生成二维码
  10. 2.5.1 获得返回值的方法
  11. protected void onActivityResult(intrequestCode, intresultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 0 &&resultCode == Activity.RESULT_OK) {
            Bundle bundle = data.getExtras();
            int back =  bundle.getInt("back");//back为返回值
            String Out_trade_no=  bundle.getString("Out_trade_no");
            // Out_trade_no为订单号
        }
    }
    

    说明

    返回值 返回状态
    0 默认值(调起支付前返回)
    1 支付成功
    2 支付失败
    3 订单信息获取失败(PID为空或不正确)
  12. 2.6 回调接口
  13. 要求接入方提供回调地址,SDK服务端即时推送支付状态至接入方,接入方根据SDK服务端的支付状态以及SDK客户端的支付状态进行二次确认判断,可在该应用的配置页面填写回调接口。

    2.6.1 回调接口返回信息

    [datastr]=> %7b%22mtime%22%3a%222016-08-16+09%3a22%3a38%22%2c%22start%22%3a%22success%22%2c%22Total_fee%22%3a%2251.00%22%2c%22Out_trade_no%22%3a%22123028300220160816092237867%22%2c%22User_no%22%3a%221471282278611%22%2c%22Pay_user%22%3a%22o_7yAuLV3zuC6nHGqMZ2e5Qq1SD0%22%2c%22Pay_type%22%3a%221%22%2c%22extra%22%3a%221471282278611%22%2c%22pid%22%3a%228741%22%7d
    [sign] => b99a4addae122ddd1dfe5c17037bada1
    

    2.6.2 回调接口参数说明

    1)datastr 是支付信息,urldecode解码后信息如下所示

    {"mtime":"2016-08-16 09:22:38","start":"success","Total_fee":"51.00","Out_trade_no":"123028300220160816092237867","User_no":"1471282278611","Pay_user":"o_7yAuLV3zuC6nHGqMZ2e5Qq1SD0","Pay_type":"1","extra":"1471282278611","pid":"8741"}
    
    说明
    字段 描述
    mtime 支付时间
    start 支付状态
    Total_fee 支付金额
    Out_trade_no 订单号
    User_no 商户订单号
    Pay_user 支付标识
    Pay_type 支付方式
    extra 备用字段
    pid 商品ID

    2)sign 是签名,用来校验信息是否正确

    加密算法:md5(Out_trade_no + appkey + openid + sign_85445221145)

    以上加密字段不包含特殊符号分别为订单号(Out_trade_no)、应用appkey、支付标识(Pay_user)、固定字符串

    2.6.3回调接口返回说明

    支付成功之后当贝支付服务端会回调接入方的回调地址,将支付信息传给接入方,接入方收到回调信息之后,返回字符串success即可。

    特别说明:如果遇到特殊情况,导致接入方的回调接口不可用,第一次回调失败之后,当贝支付会进行三次回调。回调返回信息后台展示

    2.6.4 支付状态查询接口

    为了防止漏单(接入方回调接口调用失败),当贝支付提供支付状态查询接口

    接口链接:https://pay.dangbei.com/openapi/getOrderStatus.php

    请求方式:POST

    请求参数

    字段 描述 示例值
    dbkey 当贝key daebb9ee52fba3e75c5e4696c1d2b0de
    orderno 订单号 147831417983235
    timestamp 时间戳 1478782659
    salt 盐值 Paydangbei2016#$%
    sign 签名 0c2d5d61a5801860786a49acd6895218

    签名算法示例

    sign = md5("dbkey=daebb9ee52fba3e75c5e4696c1d2b0de&orderno=147831417983235&timestamp=1478782659&salt=Paydangbei2016#$%")

    返回信息

    {
      "order_no": "147831417983235",
      "result": 1
    }
    

    说明order_no:订单号 result:1 支付成功0不存在或未支付

  14. 2.7 特殊情况说明
  15. 若以上步骤中,用户将当贝支付SDK关闭后再进行支付,则当贝SDK是无法返回支付结果到接入方的APP,需要接入方自行和APP服务器进行支付确认,否则可能造成无法发放奖品,造成用户投诉。

3.支付流程

4.  技术支持

商务QQ:1733812055

商务QQ:172155189

产品QQ:466933040

客服邮箱:pay@znds.com