目录

前言

  1. alipayApp支付产品介绍快速接入
  2. 调用接口图解

一 前台aplipay实现

1.1 安装0x5e/react-native-alipay

npm i @0x5e/react-native-alipay

1.2. 配置

ios 配置参考文档

android 配置参考文档

1.3. Alipay.pay(orderStr)

Returns object with following fields:

field type description
resultStatus String See Response code description
result String Result data in json string format
memo String Reserved field, nothing

The result data has following fields:

field type description
code String 结果码,具体见公共错误码
msg String 处理结果的描述,信息来自于code返回结果的描述
app_id String 支付宝分配给开发者的应用Id
out_trade_no String 商户网站唯一订单号
trade_no String 该交易在支付宝系统中的交易流水号
total_amount String 该笔订单的资金总额,单位为RMB-Yuan
seller_id String 收款支付宝账号对应的支付宝唯一用户号
charset String 编码格式
timestamp String 时间

Example code:

import Alipay from '@0x5e/react-native-alipay';

// APP支付
try {
let orderStr = 'app_id=xxxx&method=alipay.trade.app.pay&charset=utf-8&timestamp=2014-07-24 03:07:50&version=1.0&notify_url=https%3A%2F%2Fapi.xxx.com%2Fnotify&biz_content=%7B%22subject%22%3A%22%E5%A4%A7%E4%B9%90%E9%80%8F%22%2C%22out_trade_no%22%3A%22xxxx%22%2C%22total_amount%22%3A%229.00%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%7D&sign_type=RSA2&sign=xxxx'; // get from server, signed
let response = await Alipay.pay(orderStr);
console.info(response); let { resultStatus, result, memo } = response;
let { code, msg, app_id, out_trade_no, trade_no, total_amount, seller_id, charset, timestamp } = JSON.parse(result); // TODO: ... } catch (error) {
console.error(error);
}

1.3.1 orderStr是带签名的字符串

参考aplipay => App支付请求参数说明请求示例

1.3.2 同步通知+异步通知

服务器同步/异步通知参数说明

二 后端

2.1 服务端sdk下载

node版本

npm i alipay-sdk

2.2 实例化sdk

2.3 生成带签名的string

代码参考

const fs = require('fs');
const AlipaySdk = require('alipay-sdk').default;
const util_1 = require('alipay-sdk/lib/util'); const APP_ID = '';//替换自己的APP_ID
const privateKey = fs.readFileSync('./private-key.pem', 'ascii');
const alipayPublicKey = fs.readFileSync('./public-key.pem', 'ascii');
const alipaySdk = new AlipaySdk({
appId: APP_ID,
privateKey,
alipayPublicKey,
}); // 签名并加密
exports.signOrder = (data) => {
const params = {
bizContent: {
...data,
notifyUrl: '', //替换异步通知的url
},
};
const config = alipaySdk.config;
const signData = util_1.sign('alipay.trade.app.pay', params, config);
const { url, execParams } = alipaySdk.formatUrl('', signData);
const resultUrl = (url + '&biz_content=' + encodeURIComponent(execParams.biz_content)).substr(1);
return Promise.resolve({ url: resultUrl });
}; //获取App支付的同步通知, POST, https://docs.open.alipay.com/204/105301
exports.confirmOrder = (dataString) => {
if (alipaySdk.checkResponseSign(dataString, 'alipay_trade_app_pay_response')) {
// check 1/2/3/4 out_trade_no, total_amount, seller_id, app_id..
return dataString;
} else {
return {
error: true,
message: 'Payment not verified.'
};
}
}; //获取支付宝的异步通知, POST
exports.notifyOrder = (dataObject) => {
if (alipaySdk.checkNotifySign(dataObject)) {
return 'success';
} else {
return 'failure';
}
};

aplipay支付-app支付之前后端实现的更多相关文章

  1. 支付宝支付-APP支付服务端详解

    支付宝APP支付服务端详解 前面接了微信支付,相比微信支付,支付宝APP支付提供了支付分装类,下面将实现支付宝APP支付.订单查询.支付结果异步通知.APP支付申请参数说明,以及服务端返回APP端发起 ...

  2. 支付宝集成+网站支付+APP支付+手机网站支付

    网站支付宝 1.申请签约后获得相应的pid:208***开头和key 这里说明下pc网站支付采用md5加密所以这里只需要提供pid和key不需要上传公钥. 2.下载即时到账demo http://do ...

  3. 微信支付(APP支付)-服务端开发(一)

    微信支付,首先需要注册一个商户平台公众账号,(网址:https://pay.weixin.qq.com/index.php/home/d_login) 目前微信支付的接入方式有四种方式:公众号支付,A ...

  4. uni-app - 支付(app支付、小程序支付、h5(微信端)支付)

    App支付.小程序支付.h5(微信端)支付 APP支付(内置) appPay.js /** * 5+App支付,仅支持支付宝以及微信支付 * * 支付宝Sdk集成,微信sdk未集成 * * @para ...

  5. php支付走过的坑(微信篇 包含h5支付和app支付 注册 秘钥 环境等等配置)

    支付这东西,说容易也容易,说难也难 代码这玩意还比较好说 但是 如果没有demo 直接去看官方文档 十有八九一脸懵逼 今天就整理一下 支付这块走过的坑 涉及 微信h5支付 支付宝h5支付 (api文档 ...

  6. 微信App支付接入步骤&支付中前后端交互流程

    最近对微信App支付(App端集成微信支付SDK)申请步骤,以及终端在进行微信支付时商户App.商户Server.微信App.微信支付Server的交互流程进行了简单了解.这篇文章应该算是学习笔记,分 ...

  7. nodejs 支付宝app支付

    [链接]单笔转账到支付宝账户产品介绍更新时间:https://docs.open.alipay.com/309 const crypto = require('crypto') const momen ...

  8. 微信支付(公众号支付APIJS、app支付)服务端统一下单接口java版

    一.微信公众号支付APIJS: 要完整的实现微信支付功能,需要前后端一起实现,还需要微信商户平台的配置.这里只是涉及服务端的代码. jar包:pom.xml <!-- ↓↓↓↓↓↓↓↓ 支付相关 ...

  9. 支付宝H5、APP支付服务端的区别(php)

    php支付宝H5和APP支付1.准备工作需要前往 蚂蚁金服开放平台申请https://openhome.alipay.com/developmentDocument.htm 2.大致流程1.用户添加商 ...

随机推荐

  1. Docker 资源 | 官方文件

    Docker资源 Docker官方英文资源: docker官网:http://www.docker.com Docker windows入门:https://docs.docker.com/windo ...

  2. Project Euler 59: XOR decryption

    计算机上的每个字母都对应一个独特的编号,普遍接受的标准是ASCII(美国信息交换标准代码).例如,大写字母的A的ASCII码是65,星号(*)的ASCII码是42,而小写字母k的代码是107. 一种现 ...

  3. 解决mybatis中 数据库column 和 类的属性名property 不一致的两种方式

    解决方式way1:resultMap (1)studentMapper.xml <!-- 当数据库的字段名 和 类的属性名 不一致的时候的解决方式:2种 way1--> <selec ...

  4. Spring Boot2 系列教程(二十三)理解 Spring Data Jpa

    有很多读者留言希望松哥能好好聊聊 Spring Data Jpa! 其实这个话题松哥以前零零散散的介绍过,在我的书里也有介绍过,但是在公众号中还没和大伙聊过,因此本文就和大家来仔细聊聊 Spring ...

  5. 微信APP支付【签名失败】

    最近在做微信APP支付 遇到一个问题 请求预下单时,接口返回签名错误 由于之前没有成功的交互,刚开始检查程序的错误,经过多次修改,发现依然是签名错误,可能出现的问题如下: 1.该签名密钥不是AppSe ...

  6. go中的数据结构通道-channel

    1. channel的使用 很多文章介绍channel的时候都和并发揉在一起,这里我想把它当做一种数据结构来单独介绍它的实现原理. channel,通道.golang中用于数据传递的一种数据结构.是g ...

  7. 通过javascript 执行环境理解她

    古往今来最难的学的武功(javascript)算其一. 欲练此功必先自宫,愿少侠习的此功,笑傲江湖. 你将了解 执行栈(Execution stack) 执行上下文(Execution Context ...

  8. Python多线程与队列

    Python多线程与Queue队列多线程在感官上类似于同时执行多个程序,虽然由于GIL的存在,在Python中无法实现线程的真正并行,但是对于某些场景,多线程仍不失为一个有效的处理方法: 1,不紧急的 ...

  9. nyoj 169-素数 (打表)

    169-素数 内存限制:64MB 时间限制:3000ms 特判: No 通过数:42 提交数:84 难度:1 题目描述: 走进世博园某信息通信馆,参观者将获得前所未有的尖端互动体验,一场充满创想和喜悦 ...

  10. Spring Bean的生命周期、后置处理器、定义继承

    目录: 了解Spring的基本概念 Spring简单的示例 Spring Bean的定义及作用域 1.Bean的生命周期 Bean的生命周期可以简单的理解为:Bean的定义——Bean的初始化——Be ...