aplipay支付-app支付之前后端实现
前言
一 前台aplipay实现
1.1 安装0x5e/react-native-alipay
npm i @0x5e/react-native-alipay
1.2. 配置
1.3. Alipay.pay(orderStr)
orderStr{String} Order info in query string format. Must be signed before use. See App payment request params description.
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×tamp=2014-07-24 03:07:50&version=1.0¬ify_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下载
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支付之前后端实现的更多相关文章
- 支付宝支付-APP支付服务端详解
支付宝APP支付服务端详解 前面接了微信支付,相比微信支付,支付宝APP支付提供了支付分装类,下面将实现支付宝APP支付.订单查询.支付结果异步通知.APP支付申请参数说明,以及服务端返回APP端发起 ...
- 支付宝集成+网站支付+APP支付+手机网站支付
网站支付宝 1.申请签约后获得相应的pid:208***开头和key 这里说明下pc网站支付采用md5加密所以这里只需要提供pid和key不需要上传公钥. 2.下载即时到账demo http://do ...
- 微信支付(APP支付)-服务端开发(一)
微信支付,首先需要注册一个商户平台公众账号,(网址:https://pay.weixin.qq.com/index.php/home/d_login) 目前微信支付的接入方式有四种方式:公众号支付,A ...
- uni-app - 支付(app支付、小程序支付、h5(微信端)支付)
App支付.小程序支付.h5(微信端)支付 APP支付(内置) appPay.js /** * 5+App支付,仅支持支付宝以及微信支付 * * 支付宝Sdk集成,微信sdk未集成 * * @para ...
- php支付走过的坑(微信篇 包含h5支付和app支付 注册 秘钥 环境等等配置)
支付这东西,说容易也容易,说难也难 代码这玩意还比较好说 但是 如果没有demo 直接去看官方文档 十有八九一脸懵逼 今天就整理一下 支付这块走过的坑 涉及 微信h5支付 支付宝h5支付 (api文档 ...
- 微信App支付接入步骤&支付中前后端交互流程
最近对微信App支付(App端集成微信支付SDK)申请步骤,以及终端在进行微信支付时商户App.商户Server.微信App.微信支付Server的交互流程进行了简单了解.这篇文章应该算是学习笔记,分 ...
- nodejs 支付宝app支付
[链接]单笔转账到支付宝账户产品介绍更新时间:https://docs.open.alipay.com/309 const crypto = require('crypto') const momen ...
- 微信支付(公众号支付APIJS、app支付)服务端统一下单接口java版
一.微信公众号支付APIJS: 要完整的实现微信支付功能,需要前后端一起实现,还需要微信商户平台的配置.这里只是涉及服务端的代码. jar包:pom.xml <!-- ↓↓↓↓↓↓↓↓ 支付相关 ...
- 支付宝H5、APP支付服务端的区别(php)
php支付宝H5和APP支付1.准备工作需要前往 蚂蚁金服开放平台申请https://openhome.alipay.com/developmentDocument.htm 2.大致流程1.用户添加商 ...
随机推荐
- 转载]OK6410之tftp下载内核,nfs挂载文件系统全过程详解[转]
原文地址:OK6410之tftp下载内核,nfs挂载文件系统全过程详解[转]作者:千山我独行 由于工作的平台也是嵌入式,差不多的平台,所以一直就没有把自己买过来的ok6410板子好好玩玩.以前一直都是 ...
- mysql双主互为主从配置
在使用双主互为主从的模式前提是互为主从的两个数据库,表的主键必须是自增的. 环境不多说了 ,多台mysql单实例或单台多实例都可以.多实例的配置请参考:https://www.cnblogs.com/ ...
- [springboot 开发单体web shop] 6. 商品分类和轮播广告展示
商品分类&轮播广告 因最近又被困在了OSGI技术POC,更新进度有点慢,希望大家不要怪罪哦. 上节 我们实现了登录之后前端的展示,如: 接着,我们来实现左侧分类栏目的功能. ## 商品分类|P ...
- 正则表达式 第五篇:C# 正则元字符
本文整理C#正则表达式的元字符,正则表达式是由字符构成的表达式,每个字符代表一个规则,表达式中的字符分为两种类型:普通字符和元字符.普通字符是指字面含义不变的字符,按照完全匹配的方式匹配文本,而元字符 ...
- Linux内核版本 uname命令 GNU项目 Linux发行版
1.内核版本由linux内核社区统一编码和发布,格式如下图: major.minor.patch-build.desc 主版本号.次版本号.对次版本号的修订次数-编译次数.当前版本的特殊信息 次版本号 ...
- react-router-dom路由
- ubuntu server 1604 关机和重启
命令有很多,记住以下两三个就够了 重启: sudo reboot (这个短,易记) sudo shutdown -r now 统一的shutdown形式 关机:sudo shutdown -P no ...
- 理解Redis单线程运行模式
本文首发于:https://mp.weixin.qq.com/s/je4nqCIq6ARhSV2V5Ymmtg 微信公众号:后端技术指南针 0.概述 通过本文将了解到以下内容: Redis服务器采用单 ...
- Python装饰器的使用
对于python编程人员,装饰器的使用肯定是必不可少的. 装饰器分为系统定义装饰器和自定义装饰器:系统定义装饰器:@classmethod:类方法装饰器 @staticmethod: 静态方法装 ...
- Java 数据持久化系列之JDBC
前段时间小冰在工作中遇到了一系列关于数据持久化的问题,在排查问题时发现自己对 Java 后端的数据持久化框架的原理都不太了解,只有不断试错,因此走了很多弯路.于是下定决心,集中精力学习了持久化相关框架 ...