kangna e9859aefc6 commit | %!s(int64=6) %!d(string=hai) anos | |
---|---|---|
README.md | %!s(int64=6) %!d(string=hai) anos | |
config.js | %!s(int64=6) %!d(string=hai) anos | |
congif.txt | %!s(int64=6) %!d(string=hai) anos | |
index.html | %!s(int64=6) %!d(string=hai) anos | |
main.js | %!s(int64=6) %!d(string=hai) anos | |
package.json | %!s(int64=6) %!d(string=hai) anos | |
sandbox_ali_public.pem | %!s(int64=6) %!d(string=hai) anos | |
sandbox_iobox_private.pem | %!s(int64=6) %!d(string=hai) anos |
本指南用于指导开发者为开发”支付宝接口”项目的过程,通过开发文档达到提高项目的质量,降低维护成本的目的
开发支付宝接口(老版)需要获取几个重要信息才能进行开发
###接口实例
请求参数是商户在与支付宝进行数据交互时,提供给支付宝的请求数据,以便支付宝根据这些数据进一步处理。
####基本参数(不可空参数)
查看蚂蚁金服文档[ https://docs.open.alipay.com/62/104743 ]
在你的项目中引入先把开发参数定义完成
// app.js
alipay.config({
seller_email: '121889866@qq.com',
partner: '2088102565988752',
key: 'vrabpv2qbyrz3o6uhby9xtepp12b80xa'
});
// index.js
var basicConfig = {
alipay_gateway: 'https://mapi.alipay.com/gateway.do?',
_input_charset: 'UTF-8',
sign_type: 'MD5',
service: 'alipay.wap.create.direct.pay.by.user'
};
参数说明:
seller_email
- 签约支付宝账号或卖家收款支付宝帐户partner
- 合作身份者ID,以2088开头由16位纯数字组成的字符串key
- 交易安全检验码,由数字和字母组成的32位字符串alipay_gateway
- 支付宝默认网关_input_charset
- 字符编码格式sign_type
- 签名加密方式讲订单参数单独分开定义
var json = {
service: 'create_direct_pay_by_user',
payment_type: '1',
_input_charset: basicConfig._input_charset,
notify_url: basicConfig.notify_url,
partner: basicConfig.partner,
return_url: basicConfig.return_url,
seller_email: basicConfig.seller_email
};
参数说明:
body
- 订单描述、订单详细、订单备注,显示在支付宝收银台里的“商品描述”里out_trade_no
- 你的网站订单系统中的唯一订单号匹配subject
- 订单名称显示在支付宝收银台里的“商品名称”里,显示在支付宝的交易管理的“商品名称”的列表里。total_fee
- 订单总金额,显示在支付宝收银台里的“应付总额”里service
- 支付方式(电脑支付create_direct_pay_by_user 手机支付alipay.wap.create.direct.pay.by.user)将排序后的参数与其对应值,组合成“参数=参数值”的格式,并且把这些参数用&字符连接起来,此时生成的字符串为待签名字符串。MD5签名的商户需要将key的值拼接在字符串后面,调用MD5算法生成sign;RSA签名的商户将待签名字符串和商户私钥带入SHA1算法中得出sign。以下为示例
项目中引入加密方法
var crypto = require('crypto');
var querystring = require('querystring');
先将订单的参数进行拼接之后再进行加密
var keys = Object.keys(json);
keys = keys.sort();
var map = {};
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
if (key !== 'sign' && key !== 'sign_type' && json[key]) {
map[key] = json[key];
}
}
var str = querystring.unescape(querystring.stringify(map)) + basicConfig.key;
console.log(crypto.createHash(basicConfig.sign_type).update(str, basicConfig._input_charset).digest('hex'))
return crypto.createHash(basicConfig.sign_type).update(str, basicConfig._input_charset).digest('hex');
return 出来的就是进行了MD5加密后的订单字符
##请求URL
签名计算好后就可以进行url拼接
basicConfig.alipay_gateway + querystring.stringify(json);
返回的值就是可以访问的url
至此,我们已经完成了支付宝支付的接入.
本文若有未涵盖到的部分,可参见 支付宝支付接入
文档自行查阅所需信息.
作者 [ kangna ] 2017 年 3月 31日