支付宝开发集成文档

申请开通支付宝商家服务

打开支付宝网站,进入商家服务,选择要申请的产品,比如申请即时到账产品,先填写签约申请表单,提交后等待订单审核,审核通过后就成功开通了即时到账产品服务。

商户自建网站或是手机客户端申请接口合作的基本申请条件:

1)、网站或手机客户端建设完好,产品或服务信息丰富;
2)、支付宝账户通过完整的实名认证(实名认证并且上传证件完成升级认证),个人或企业账户都可以申请接口,但具体的需要看产品的准入条件;

签约阶段涉及的时间点有:

1)、账户认证时间:银行卡认证3个工作日内,证件审核2天,即完整的实名认证时间3-5个工作日。

2)、升级认证时间:2天,即当您的账户做了认证但未上传身份证或营业执照信息时,需要进行升级认证。

3)、接口订单审核时间:5个工作日内。

4)、对于包量套餐,款项关联时间:线下银行汇款2个工作日到款(同名账户付款),线上订单付款2个工作小时到款

支付宝开发集成前准备

查找PID(partner)和密钥(key)

a、首先查询合作者身份ID和安全校验码KEY;

b、RSA加密方式:公私钥由商户技术人员生成。

(1)首先生成商户公钥、私钥

(2)其次上传生成的公钥,同时获取支付宝公钥。

网络环境的要求

支付宝提供的开发环境。

 (1).生产环境。用商户自己的账户做测试。

 (2).沙箱环境。提供资料沙箱环境网关地址、测试账号、密钥。

商户端开发环境:公网可访问的网络环境。

下载接口开发文档及配置开发环境

接口文档获取途径:登陆到支付宝账户产品商店即可下载到对应的接口文档。如所需其他接口文档可以由支付宝技术支持提供。

越诚云集成支付宝开发的驱动真实代码示例

(1).支付宝接通工具类驱动alipayUtil

//支付宝提供给商户的服务接入网关URL()

var ALIPAY_GATEWAY_NEW = "https://mapi.alipay.com/gateway.do?";

//安全校验码(Key)

var SAFE_VALID_KEY = "XXXXXXXYYYYYYYYYZZZZZ";

//合作者身份ID

var PARTNER = "111110000022222";

//参数编码字符集

var _INPUT_CHARSET = "utf-8";

//签名方式

var SIGN_TYPE = "MD5";

//服务器异步通知页面路径

var NOTIFY_URL = "http://www.xxxyyy.com/alipayNotify";

//页面跳转同步通知页面路径

var RETURN_URL = "http:// www.xxxyyy.com/alipayResultPage";

//支付类型

var PAYMENT_TYPE = "1";

//卖家账号

var SELLER_EMAIL = "demo@163.com";

//卖家seller_id

var SELLER_ID = "";

/**

 * 签名字符串

 * @param text 需要签名的字符串

 * @param key 密钥

 * @param input_charset 编码格式

 * @return 签名结果

 */

function sign(text, key, input_charset) {

   text = text + key;

    return _security.encryptSimpleMD5(text);

}

 

/**

 * 除去数组中的空值和签名参数

 * @param sArray 签名参数组

 * @return 去掉空值与签名参数后的新签名参数组

 */

function paraFilter(paramArray) {

    var result = _collectionTools.getMap();

    if (paramArray == null || paramArray.size() <= 0) {

        return result;

    }

   var keyArray = paramArray.keySet().toString().replace("[","").replace("]","").split(",");

   for(var i=0;i

      var key = keyArray[i].replace(" ","");

      var value = paramArray.get(key);

      if (value == null || value == ""

            || key.toLowerCase() == "sign"

               || key.toLowerCase() == "sign_type") {

            continue;

        }

        result.put(key, value);

   }

    return result;

}

/**

 * 把数组所有元素排序,并按照参数=参数值的模式用“&”字符拼接成字符串

 * @param params 需要排序并参与字符拼接的参数组

 * @return 拼接后字符串

 */

function createLinkString(params) {

   var keys = params.keySet().toString().replace("[","").replace("]","").split(",");

   var keyArray = new Array();

   for(var j=0;j

      keyArray.push(keys[j].replace(" ",""));

   }

   keyArray.sort();

    var prestr = "";

    for (var i = 0; i < keyArray.length; i++) {

        var key = keyArray[i].replace(" ","");

        var value = params.get(key);

        if (i == keyArray.length - 1) {//拼接时,不包括最后一个&字符

            prestr = prestr + key + "=" + value;

        } else {

            prestr = prestr + key + "=" + value + "&";

        }

    }

    return prestr;

}

 

/**

 * 生成签名结果

 * @param sPara 要签名的数组

 * @return 签名结果字符串

 */

function buildRequestMysign(sPara) {

   var prestr = createLinkString(sPara); //把数组所有元素,按照参数=参数值的模式用“&”字符拼接成字符串

    var mysign = "";

    if(SIGN_TYPE == "MD5") {

       mysign = sign(prestr, SAFE_VALID_KEY, _INPUT_CHARSET);

    }

    return mysign;

}

 

/**

 * 生成要请求给支付宝的参数数组

 * @param sParaTemp 请求前的参数数组

 * @return 要请求的参数数组

 */

function buildRequestPara(sParaTemp) {

    //除去数组中的空值和签名参数

    var sPara = paraFilter(sParaTemp);

    //生成签名结果

    var mysign = buildRequestMysign(sPara);

    //签名结果与签名方式加入请求提交参数组中

    sPara.put("sign", mysign);

    sPara.put("sign_type", SIGN_TYPE);

    return sPara;

}

 

/**

 * 建立请求,以表单HTML形式构造(默认)

 * @param sParaTemp 请求参数数组map结构

 * @param strMethod 提交方式。两个值可选:postget

 * @param strButtonName 确认按钮显示文字

 * @return 提交表单HTML文本

 */

function buildRequest(sParaTemp, strMethod, strButtonName) {

    //待请求参数数组

    var sPara = buildRequestPara(sParaTemp);

    var keys = sPara.keySet().toString().replace("[","").replace("]","").split(",");

    var sbHtml = "

+ ALIPAY_GATEWAY_NEW

 

                + "_input_charset=" + _INPUT_CHARSET + "\" method=\"" + strMethod

                + "\">";

    for (var i = 0; i < keys.length; i++) {

        var name = keys[i].replace(" ","");

        var value = sPara.get(name);

        sbHtml += " + name + "\" value=\"" + value + "\"/>";

    }

    //submit按钮控件请不要含有name属性

    sbHtml += " + strButtonName + "\" style=\"display:none;\">";

    sbHtml += "