支付宝PC端支付接口流程

1、前端点击支付按钮,向后端发起一个ajax请求(get请求,带order_id)

2、后端收到order_id,根据支付宝的规则生成支付的url,返回前端

3、ajax收到成功的响应,从响应中取出url,并向这个url发起请求

4、支付宝的服务器收到请求,返回一个支付页面

5、买家登录账号或扫码进行支付

6、支付宝回调前端的success页面(访问前端的http://127.0.0.1:8080/success?xxx=xx&yy=yy),

这时请求中会携带本次支付结果的相关信息

7、这个success页面获取请求中携带的参数,同时采用ajax的方式向后端发起get请求,携带获取的参数

8、后端验证支付结果,修改订单状态,返回success页面需要的data数据

9、success页面加载数据,展示支付结果

10、为了防止用户在支付之后将页面关掉,支付宝服务器会再隔一段时间向后端发送一个携带支付结果的post请求,

以保证后端能拿到结果,修改订单状态。

一、登录支付宝开放平台,并进入沙箱环境

1.登录

2.进入我的控制台

3.进入开发者中心

4.点击研发服务,进入沙箱环境

PS:若您只是用于个人项目演示,千万不要选择“我的应用”里的“创建应用”,创建完成后(并且审核通过后),产品签约是需要营业执照的,并且应用一旦上线,是无法删除的;

二、创建Node项目

这里使用的是Egg.js

直接使用脚手架,即可快速生成项目

$ mkdir egg-example && cd egg-example
$ npm init egg --type=simple
$ npm i

三、Coding

(1) 设置RSA2密钥

1.1 下载支付宝密钥生成器

1.2 选择密钥格式和长度后,生成密钥

1.3 将生成的公钥填入到沙箱环境的RSA2中

1.4 保存后点击查看,支付宝公钥

(2)Coding

2.1  创建app/controller/alipay.js 和 config/pem/

config/pem/alipay_public_key.pem : 支付宝公钥

config/pem/public_key.pem : 应用公钥

config/pem/private_key.pem : 应用私钥


【注意】将支付宝公钥 alipay_public_key.pem,将上述生成的字符串添加到该文件,并且字符串前后加上秘钥所需描述:“-----BEGIN PUBLIC KEY-----”、“-----END PUBLIC KEY-----”

2.2 router.js

"use strict";/*** @param {Egg.Application} app - egg application*/
module.exports = app => {const { router, controller } = app;router.get("/", controller.home.index);router.get("/alipay", controller.alipay.index);
};

2.3 alipay.js

"use strict";const fs = require("fs");
const path = require("path");const AlipaySDK = require("alipay-sdk").default;
const AlipayFormData = require("alipay-sdk/lib/form").default;const Controller = require("egg").Controller;class AlipayController extends Controller {async index() {const { ctx } = this;const alipaySdk = new AlipaySDK({appId: "2**********9", // 你自己的沙箱黄环境的appIdprivateKey: fs.readFileSync(path.join(__dirname, "../../config/pem/app_private_key.pem"),"ascii"), // 私钥signType: "RSA2", // 签名类型alipayPublicKey: fs.readFileSync(path.join(__dirname, "../../config/pem/alipay_public_key.pem"),"ascii"), // 支付宝公钥(不是应用公钥)gateway: "https://openapi.alipaydev.com/gateway.do", // 网关地址timeout: 5000, // 网关超时时间camelcase: true // 是否把网关返回的下划线 key 转换为驼峰写法});/*** 返回支付链接(PC支付接口)*/const formData = new AlipayFormData();formData.setMethod("get");formData.addField("appId", "2**************9");formData.addField("charset", "utf-8");formData.addField("signType", "RSA2");formData.addField("bizContent", {outTradeNo: "1569380127322",// 【必选】商户订单号:64个字符内,包含数字,字母,下划线;需要保证在商户端不重复productCode: "FAST_INSTANT_TRADE_PAY",// 【必选】销售产品码,目前仅支持FAST_INSTANT_TRADE_PAYtotalAmount: "0.01",// 【必选】订单总金额,精确到小数点后两位subject: "test",// 【必选】 订单标题body: "test" // 【可选】订单描述});/*** exec对应参数:* method(调用支付宝api)* params(api请求的参数(包含“公共请求参数”和“业务参数”))* options(validateSign,formData,log)*/const result = await alipaySdk.exec("alipay.trade.page.pay",{},{ formData });console.log(result); // result为可以跳转到支付连接的urlctx.body = result;}
}module.exports = AlipayController;

业务参数

2.4 运行项目

npm run dev

打开 http://127.0.0.1:7001/alipay ,将 result 的结果的链接打开,就可以支付喽

PS:下载沙箱环境里的沙箱版支付宝,登录买家账号,进行支付


Vue node.js实现支付宝支付(沙箱测试)

蚂蚁金服开放平台 node sdk

Node实现支付宝网页支付流程(沙箱环境)相关推荐

  1. java后端实现集成支付宝APP支付(沙箱环境)

    沙箱环境集成支付宝APP支付后端实现 前言 获取支付宝相关信息 整体开发流程 1.获取核心参数 2.将支付宝SDK集成到项目中 3.后台使用支付宝SDK与支付宝进行交互逻辑 1.将支付宝公共信息参数写 ...

  2. Node接入支付宝开放平台的沙箱实现支付功能

    一些重要的支付宝沙箱文档及网址 支付宝开放平台:https://open.alipay.com/ 简单介绍:https://www.yuque.com/chenqiu/alipay-node-sdk/ ...

  3. 支付宝网页支付交互流程 nest 版

    自己整理了一份支付宝网页支付的交互流程 , 完全按交互流程响应步骤介绍的代码,效果图.因为平时主要用node开发,所以服务端用的node,框架是 nest. 用最精简的代码实现支付功能 1,流程图 为 ...

  4. Python实现支付宝二维码支付(沙箱环境)

    Python实现支付宝二维码支付 一.沙箱环境配置 1.登陆蚂蚁金融开放平台:https://openhome.alipay.com 2.选择进入我的开放平台.寻找开发中心的研发服务. 3.点击沙箱环 ...

  5. SpringBoot - 支付宝支付之沙箱环境简单使用

    一.创建应用 使用沙箱环境,可以直接忽略这里,这里只是顺带介绍如何创建应用. 1.进入支付宝开放平台 支付宝开放平台 2.完善信息 3.接入应用 支付宝使用的加密方式 1.对称加密 - 不安全 即加密 ...

  6. 【SpringBoot深入浅出系列】SpringBoot之实现支付宝扫码支付(沙箱环境编码实现)

    目录 一.准备工作 1.应用 APPID 2.商户私钥,即应用私钥 3.支付宝公钥 4.签名方式 5.字符编码格式 6.支付宝网关 二.沙箱环境编码实现 1.项目说明 2.创建 Spring Init ...

  7. 支付宝支付(2) 电脑网站支付(SpringBoot+沙箱环境+Alipay Easy SDK)

    一.前言 支付宝支付(1) 电脑网站支付(SpringBoot+沙箱环境) Alipay Easy SDK 文档 Alipay Easy -> https://github.com/alipay ...

  8. 项目场景:对接支付宝支付,沙箱环境提示:支付存在钓鱼风险!防钓鱼网站的方法

    项目场景:对接支付宝支付,沙箱环境提示:支付存在钓鱼风险!防钓鱼网站的方法 问题描述: 对接中遇到的问题: 原因分析: 提示:浏览器的锅 解决方案: 关闭所有窗口,只打开那个支付页面窗口就可以 转载h ...

  9. 对接支付宝支付,沙箱环境提示:支付存在钓鱼风险!防钓鱼网站的方法

    项目场景:对接支付宝支付,沙箱环境提示:支付存在钓鱼风险!防钓鱼网站的方法 问题描述: 对接中遇到的问题: 原因分析: 提示:浏览器的锅 解决方案:   关闭所有窗口,只打开那个支付页面窗口就可以

  10. 移动网页支付(微信H5支付和支付宝网页支付)

    支付宝网页支付: 1.前端发送(流水号,手机号,产品ID,金额,回调地址,取消地址,支付类型)支付信息给后端, 2.后端组装数据,通过SDK向支付宝发起请求,返回数据给前端. let loc =&qu ...

最新文章

  1. [BZOJ 2756] 奇怪的游戏
  2. 程序员的身体一定要好
  3. 上下文保存 中断_Linux内核中断顶半部和底半部的理解
  4. App的selenium,Appium爬App!
  5. java.securti_springboot集成springsecurity 使用OAUTH2做权限管理的教程
  6. UVALive 4725 Airport(二分)
  7. Freeswitch视频会议远超Telepresence
  8. vue 一直显示数据加载中的解决方案之一
  9. 029--PM话术模板
  10. Anaconda更新PIP
  11. zotero中的标准和规范应该用什么类型
  12. openGauss 训练营第三期结营啦!PPT 85个FAQ大放送!文末附51位结营学员名单
  13. 修改系统默认 alert 弹框样式
  14. jsp实现简单用户登录(用户7天内免登录)
  15. MySQL之mysqlcheck、check、optimize和analyze
  16. 「Hudi系列」Hudi查询写入常见问题汇总
  17. rhel7配置smba
  18. 全球首个3万亿美元公司!苹果实现全球最高市值里程碑
  19. CBM 业务模型是什么和为什么?
  20. 模拟电磁曲射炮_H题 方案分析【2019年电赛】【刘新宇qq522414928】

热门文章

  1. CPU性能排行与评分
  2. win10的ie保存html文件夹,win10系统IE缓存文件夹在哪里,详细教您IE缓存文件在哪里...
  3. [WPF] 读取ini中中文字符乱码的解决
  4. JAVA查询银行卡信息
  5. C#System.Text.RegularExpressions.Regex使用
  6. 斯蒂夫乔布斯传札记:第八波
  7. word文档怎么到下一页去写_word文档怎么插入下一页
  8. 基于Android手机酒店客房预订系统
  9. 最新可用ip地址查询接口
  10. 【趣味实践】Stable Diffusion绘制中秋美景