支付宝之手机网站支付接口

2015-01-12 11:45:48

  近期接到一个任务就是接入手机网站支付接口

  看文档比之前的支付宝接口多了一步授权接口  发起请求过程为

  1.  获取授权码

  2.  发起交易请求

  文档里有几个坑 在这里我重要提醒下

  1. 请求顺序  普通post 请求是不在乎顺序的 参数在前在后 都无所谓 但支付宝接口必须按照特定的顺序
顺序错了 会提示sign 错误  这个挺坑人的  废话不多说  上代码

function buildRequestParaToString(para_temp) {
    //待请求参数数组
    var para = core_funcs.argSort(buildRequestPara(para_temp));
    //把参数组中所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并对字符串做urlencode编码
    var request_data = 'req_data=' + qs.escape(para.req_data) + '&service=' + qs.escape(para.service) + '&sec_id=MD5&partner=' + para.partner + '&req_id=' + para.req_id + '&sign=' + para.sign + '&format=xml&v=2.0';

    return request_data;
}

  
请求顺序必须是这样的才可以 否则支付宝不认


2 . 获取授权码 支付宝这点做的挺坑人的 一大串字符 去解开 然后再解析xml  要换成json 会一劳永逸
 本人采用了比较偷懒的做法

var xml2js1 = require("xml2js");
 var body1 = unescape(r.body.split('&')[0].toString().replace('res_data=', ''));

 var parseString = xml2js1.parseString;
 var json1 = parseString(body1, function (e, v) {
         console.log(e,v) ;
         callback(e, v.direct_trade_create_res.request_token[0])
     }
 );

 至此两大坑解决了 剩下的 就是自己业务逻辑的事情了

3 . 发起交易请求 如一所示 那样的顺序才可以 否则故障依然


支付宝之业务通知接口

  验证接口:

function create_direct_pay_by_user_return(_get)
{
    var prestr='service=alipay.wap.trade.create.direct&v=1.0&sec_id=MD5&notify_data='+_get["notify_data"];
    var  md5 =md5_f.md5Sign(prestr,alipay_config.key);

    if(_get["sign"]==md5)
    {
        return  true ;
    }
    else
    {
        return false ;
    }

}

_get 为post 回来的所有参数

验证完 就是用上面2 的方法 将参数转换为json  之后便是自己业务逻辑处理的问题了   


总结:

        在nodejs里只要转换成Json  任何数据都比较好处理


  大家有什么问题 可以发邮件给我

        niefengjun@niefengjun.cn

      

       

你打算打赏多少钱呢?

打赏
(微信扫一扫)