*一. 申请开发??
访问开发者中心https://openhome.alipay.com/platform/appDaily.htm?tab=info
进行认证后(真实姓名,绑定手机号和邮箱), 即可进入沙箱配置页

二. 配置密钥
1. 下载密钥生成工具
访问 https://docs.open.alipay.com/291/105971

下载AlipayDevelopmentAssistant-1.0.7.exe (支付宝开发平台开发助手)密钥工具 大约100多M 正常安装
2.使用工具生成公钥私钥

3.设置公钥
加签方式选择公钥

保存公钥,退款需要用到
三. NodeJS请求支付接口(koa)
1.保存私钥
新建app_private_key.pem文件

2.实现代码
支付参数
https://opendocs.alipay.com/apis/api_1/alipay.trade.page.pay
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| const moment = require('moment') const { nginx } = MAPP.proConfig const crypto = require('crypto') const { app_private_key } = MAPP.keys module.exports = { get: { '/test/alipay': [ async ctx => { const paramsMap = { app_id: '2021xxxxxxxx', method: 'alipay.trade.page.pay', format: 'JSON', charset: 'utf-8', sign_type: 'RSA2', timestamp: moment().format('YYYY-MM-DD HH:mm:ss'), version: '1.0', notify_url: `https://${nginx.server_name}/api-universal/test/aliay/callback`, biz_content: JSON.stringify({ product_code: 'FAST_INSTANT_TRADE_PAY', body: '订单回调内容', subject: '测试支付宝PC支付', out_trade_no: 'xxxxxxxxx', total_amount: 0.01 }) } let objParams = Object.keys(paramsMap) .sort() .map(key => { return key + '=' + paramsMap[key] }) .join('&') let encodeParams = Object.keys(paramsMap) .sort() .map(key => { return key + '=' + encodeURIComponent(paramsMap[key]) }) .join('&') let sign let signInit = crypto.createSign('RSA-SHA256') signInit.update(objParams, 'utf8') sign = signInit.sign(app_private_key, 'base64') let params = encodeParams + '&sign=' + encodeURIComponent(sign) const url = `https://openapi.alipaydev.com/gateway.do?${params}` ctx.info({ message: '创建支付参数成功', data: { url } }) }, { userAuth: false, }, ] }, post: { '/test/alipay/callback': [async ctx => { }, { userAuth: false, } ] } }
|
3.支付信息链接

4.支付界面
前台支付界面 https://opendocs.alipay.com/open/270/01arn8

5.生成二维码
api说明
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| '/test/alipay/qr': [ async ctx => { const paramsMap = { app_id: 'xxxxxx信', method: 'alipay.trade.precreate', format: 'JSON', charset: 'utf-8', sign_type: 'RSA2', timestamp: moment().format('YYYY-MM-DD HH:mm:ss'), version: '1.0', notify_url: `https://${nginx.server_name}/api-universal/test/aliay/callback`, biz_content: JSON.stringify({ subject: '支付宝二维码支付', out_trade_no: '1624678209672759', total_amount: 0.01 }) } let objParams = Object.keys(paramsMap) .sort() .map(key => { return key + '=' + paramsMap[key] }) .join('&') let sign let signInit = crypto.createSign('RSA-SHA256') signInit.update(objParams, 'utf8') sign = signInit.sign(app_private_key, 'base64') const gateway = 'https://openapi.alipaydev.com' paramsMap.sign = sign const server = MAPP.creatServer(gateway) const response = await server.get('/gateway.do', { params: paramsMap }) console.log(response.data) }, { userAuth: false, } ] },
|
注意:
显示:码已失效,请刷新二维码后重试
解决办法: 就是使用沙箱版本的支付宝APP扫描或者使用沙箱版本的支付宝账号密码登录付款即可。
打开开放平台, 沙箱工具中下载沙漏版钱包
https://open.alipay.com/platform/appDaily.htm?tab=tool