无认证接入

无认证接入适用于没有账号体系的应用。

注册有豆包后获取到AppID,http://mall.udoubao.com/app/{appid} 为商城的首页。这种接入方式下用户下单时需要通过手机号登录。


认证接入

认证接入适用于希望无缝对接的应用。

* 在微信公众号中打开会自动与微信对接,不需要进行额外的对接。


认证方式

注册有豆包后获取到AppID和AppSecret,请求 http://mall.udoubao.com/app/{appid}/login


参数名

uid 必填 用户id,必须全局唯一,字母或者数字1到20位
telephone
选填 手机号
gender
选填
1男, 2女
username
选填
用户昵称
avatar
选填
用户头像(完整URL不带参数)
href 选填 认证后跳转位置,为空跳首页
time
必填
时间戳(1小时间以内有效)
sign
必填
签名(小写字符串)

签名方式

将除sign之外的所有参数按字母序排序, 组合成一个字符串为S, 然后用取AppSecret拼接S之后的sha1做为sign。

示例:uid=1234&telephone=13800000000&gender=1&username=bunny&time=1472720552&sign=xxxx

sign的值为  ({Appsecret}{11380000000014727205521234bunny}).sha1

注意事项:

URL中如果字段为空,可以不填或者填空,对结果没有影响。

头像URL中不能带参数,如果URL同时支持http和https协议请用//开头,省略协议部分(如 //s.udoubao.com/img/udoubao_c/style2/doubao_home_home.png)浏览器会自动适配根据当前页面选择对应的协议。如果只支持一种协议请使用完整URL。


跳转规则

如果href为空, 认证后直接跳首页 http://mall.udoubao.com/app/{appid}

如果href不为空, 认证后跳转到 http://mall.udoubao.com/app/{appid}/{href} (注意此处带有/)


支付渠道


微信公众号

微信公众号支持微信支付,接入方不需要做任何额外的开发。


iOS

iOS客户端接入目前支持支付宝App支付 支付宝网页支付 微信支付

对于iOS10以下的用户,接入方不需要做任何额外的开发。

对于iOS10及以上的用户,接入方需要在Info.plist中的LSApplicationQueriesSchemes注册scheme。支付宝的Scheme为:alipay 微信的Scheme为:weixin

scheme注册方法参考http://stackoverflow.com/questions/39323450/ios-10-webview-doesnt-open-the-app-scheme

接入方可以在配置中心修改AppScheme从而让支付宝App支付完成后跳回自己的App。微信支付由于微信限制,支付完成后不能跳到指定App。


Android

Android客户端接入目前支持支付宝网页支付 微信支付

接入方可以通过下面的方式让支付宝网页支付变成支付宝App支付:


1. 引入支付宝SDK(如果已经集成了,可以跳过这一步)

去支付宝官网下载SDK, 解包之后将Android SDK中的alipaySdk-xxxx.jar导入到自己的项目中


2. 加入支持代码

在需要支持的webView里重写shouldOverrideUrlLoading, 以下是支付宝SDK Demo中的用法(自行接入的时候注意H5PayDemoActivity要换成当前Activity)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import com.alipay.sdk.app.PayTask;
import com.alipay.sdk.util.H5PayResultModel;
 
@Override
public boolean shouldOverrideUrlLoading(final WebView view, String url) {
    if (!(url.startsWith("http") || url.startsWith("https"))) {
        if (url.startsWith("weixin://")) {
            // 重写shouldOverrideUrlLoading后需要自行处理微信支付
            Intent it = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            H5PayDemoActivity.this.startActivity(it);
        }
        return true;
    }
 
    final PayTask task = new PayTask(H5PayDemoActivity.this);
    final String ex = task.fetchOrderInfoFromH5PayUrl(url);
    if (!TextUtils.isEmpty(ex)) {
        new Thread(new Runnable() {
            public void run() {
                final H5PayResultModel result = task.h5Pay(ex, true);
                if (!TextUtils.isEmpty(result.getReturnUrl())) {
                    H5PayDemoActivity.this.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            view.loadUrl(result.getReturnUrl());
                        }
                    });
                }
            }
        }).start();
    else {
        view.loadUrl(url);
    }
    return true;
}

安卓图片上传问题

由于商城中部分功能和定制商品需要上传图片,而对安卓来说通过webView直接调用系统相册需要对webView进行适配。适配过程代码较多,建议接入方通过搜索引擎找到适合自己的适配代码。

参考文章:
http://blog.isming.me/2015/12/21/android-webview-upload-file/
https://thenewboston.com/forum/topic.php?id=12118