文档中心 > 移动支付

接口调用

更新时间:2016/05/03 访问次数:32665

说明

SDK中提供了若干接口,H5转Native支付只用到其中一部分,本文未提到的接口无需关注。

如何实现H5转Native支付?

步骤一: 在接入方App中拦截H5的URL;
步骤二: 调用SDK提供的“获取订单信息接口(fetchOrderInfoFromH5PayUrl)”对拦截的URL进行处理:

  • 如果返回空字符串则不作任何处理
  • 反之则调用“支付接口(h5Pay)”进行订单支付,并拦截URL

获取订单信息接口

接口说明

接口原型

/**
 * 获取H5native支付的信息
 * @param h5PayUrl
 * @return
 */
public synchronized String fetchOrderInfoFromH5PayUrl(String h5PayUrl)

接口功能

从拦截的URL中获取支付请求相关信息,封装成新的订单信息字符串作为返回值。如果该URL不是有效的支付宝支付URL,则返回空字符串。

参数说明

参数名称 类型 说明
h5PayUrl String H5支付的请求URL

返回值说明

返回值类型 说明
String 1.如果是有效的支付宝支付URL,则返回非空字符串(订单信息字符串)
2.如果是无效的支付宝支付URL,则返回空字符串

接口使用方式

调用本接口对拦截的URL进行处理,如果返回值为空字符串则不拦截该URL;如果返回值为非空字符串,则调用SDK提供的支付接口进行支付,使用示例如下:

@Override
public boolean shouldOverrideUrlLoading(final WebView view, String url) {
    final PayTask task = new PayTask(H5PayDemoActivity.this);

    //处理订单信息
    final String ex = task.fetchOrderInfoFromH5PayUrl(url); 
        if (!TextUtils.isEmpty(ex)) {
            //调用支付接口进行支付
        } else {
            view.loadUrl(url);
        }
        return true;
    }
}

支付接口

接口说明

接口原型

/**
  * H5支付
  * @param h5PayInfo 订单信息
  * @param isShowPayLoading 是否显示loading图标
  * @return
  */
public synchronized H5PayResultModel h5Pay(String h5PayInfo, boolean isShowPayLoading)

接口功能

完成订单支付并返回支付结果。

参数说明

参数名称 类型 说明
h5PayInfo String 调用fetchOrderInfoFromH5PayUrl接口返回的订单信息字符串
isShowPayLoading boolean 是否显示loading界面

返回值说明

返回值类型为H5PayResultModel类,包含下述2个成员变量:

参数名称 类型 说明
resultCode String 返回码,标识支付状态,含义如下:
9000——订单支付成功
8000——正在处理中
4000——订单支付失败
5000——重复请求
6001——用户中途取消
6002——网络连接出错
returnUrl String 支付结束后应当跳转的url地址

接口使用方式

调用本接口进行支付。如果返回的resultCode为9000,接入方可以提示用户支付成功;返回结果不是9000的情况,无需做任何处理。如果returnUrl不为空,建议接入方跳转到该returnUrl。

public boolean shouldOverrideUrlLoading(final WebView view, String url) {
    final PayTask task = new PayTask(H5PayDemoActivity.this);
    //处理订单信息
    final String ex = task.fetchOrderInfoFromH5PayUrl(url); 
    if (!TextUtils.isEmpty(ex)) {
        //调用支付接口进行支付
        new Thread(new Runnable() {
            public void run() {
                H5PayResultModel result = task.h5Pay(ex, true);
                //处理返回结果
                if (!TextUtils.isEmpty(result.getReturnUrl())) {
                    view.loadUrl(result.getReturnUrl());
                }
            }
        }).start();
    } else {
        view.loadUrl(url);
    }
    return true;
}

FAQ

关于此文档暂时还没有FAQ
返回
顶部