# nodeTTPay **Repository Path**: Alan_95/nodeTTPay ## Basic Information - **Project Name**: nodeTTPay - **Description**: node签名前端调用接口调用 服务器配合pm2 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-05-15 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 商户接入SDK ## 小程序支付收银台 目录结构说明 ``` ├── server // 服务器 │ ├── ttpay // 小程序收银台接入Server SDK │ └── applets-server // 小程序收银台服务端DEMO |—— 小程序端 // 小程序 |── applets-client // 小程序收银台demo ``` ### Server SDK 使用说明 * 引入`ttpay` 将ttpay目录拷贝到商户node端代码目录中,安装依赖 `npm install`,然后在下单接口中引入`ttpay`。 ``` // ttpay引入路径依据商户代码目录做相应调整 const { ttPay } = require("../../ttpay"); ``` * 调用`ttpay`方法,传入以下必要参数 ``` const cashdeskParams = await ttPay({ // 头条小程序平台申请的app_id appId: "800000040005", // 头条小程序平台申请的merchant_id merchantId: "1300000004", // 头条小程序平台申请的支付秘钥secret appSecret: "CaiJingQianBaoTongYiCeShi", // 调起支付宝app支付的参数,生成方法详见:https://docs.open.alipay.com/204/105465/ // 如果头条内部商户,不需要传该参数 alipayUrl: "alipay_sdk=alipay-sdk-java-3.4.27.ALL&app_id=2018061460417275&biz_content=%7B%22body%22%3A%22%E6%B5%8B%E8%AF%95%E8%AE%A2%E5%8D%95%22%2C%22extend_params%22%3A%7B%7D%2C%22out_trade_no%22%3A%2211907190002688456134%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22seller_id%22%3A%222088721387102560%22%2C%22subject%22%3A%22%E6%B5%8B%E8%AF%95%E8%AE%A2%E5%8D%95%22%2C%22timeout_express%22%3A%22599m%22%2C%22total_amount%22%3A%220.01%22%7D&charset=utf-8&format=json&method=alipay.trade.app.pay¬ify_url=https%3A%2F%2Fapi-cpc.snssdk.com%2Fgateway%2Fpayment%2Fcallback%2Falipay%2Fnotify%2Fpay&sign=sN0TBnsOg5mXAwPGjvxw6lV7v3Upl1BAwj6CydgzmJUZUglqI7luKMbrG0QW5TQUbE6LrstEfmFjdllXzj17JIS3YsaQk0z1WwILipHybR2siP7fQY8qpTUt9vI3IuNb2nYf7TtUg7NBQSMUfbNKcL2mwYEZRxY0HypDHxhk7wJnNkollu5hUXTTgwmdZmy60r2%2BNRJLIQ6QOW737Syq2WVR1x7XUP10PVw%2B2Pn0oWex20tQVnBbroNtX%2BgvPSetFWjZNPSY7AroueVMmXkcNCoawGg5rSxiEW9%2Fpflsd9dHklvSLeYmbzkrk%2FRgcENcjU29ne4%2FMqHIxAaMT9Esjg%3D%3D&sign_type=RSA2×tamp=2019-07-19+12%3A43%3A44&version=1.0", // 调起微信H5支付的URL参数。即:调用微信H5支付统一下单接口返回的mweb_url字段值,详见:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_20&index=1 // 如果头条内部商户,不需要传该参数 wxUrl: "https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx19124344335292c0c886edc01971959000&package=2612935109", // 商户订单号 outOrderNo: "123456", // 时间戳,单位:秒 timestamp: 1559480861996, // 订单金额,单位:分 totalAmount: 1, // 用户唯一标识 uid: "2019012211", // 商户订单名称 subject: "microapp test", // 商户订单详情 body: "microapp test", // 订单生成时间戳,单位:秒 tradeTime: "1559480861", // 订单有效时间,单位:秒 validTime: 36000000, // 异步接收支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。 // 头条外部商户:如果开发者不开通银行卡支付,则传个非空的URL即可,如:开发者网站地址 // 头条内部商户:必须传真实的回调地址 notifyUrl: `http://tp-pay.snssdk.com/paycallback`, // 小程序需要兼容的版本 // 1.0: 只支持支付宝支付tt.requestPayment。该SDK只会生成拉起支付宝支付的参数 // 2.0: 只支持小程序收银台tt.pay。该SDK只会生成拉起小程序收银台的参数 // 2.0+: 头条App<727时,支持支付宝支付tt.requestPayment,头条App>=727时,支持小程序收银台tt.pay。该SDK会生成1.0(做为tt.requestPayment的入参),2.0(做为tt.pay的入参)两份参数 appletVersion: "2.0+" }) ``` * 将`ttPay()`方法返回的参数,透传给前端,用于调起小程序收银台(头条App>=727版本),或者支付宝支付(头条App<727版本) #### 启动服务端DEMO * 进入`ttpay`目录,安装依赖 ``` $ npm install ``` * 进入`applets-server`目录,安装依赖 ``` $ npm install ``` * 启动服务 ``` $ node index.js ``` 此时,即可通过POST方式请求下单接口:`http://[本机ip地址]:3000/createOrder`,获取调起小程序收银台(支付宝支付)的参数 #### 启动前端小程序DEMO 在 `字节跳动开发者工具`中,导入`/demo/applets-client`。 将`project.config.json`中的 `appid` 替换为商户小程序自己的appid。 将`pages/index/index.js` 中的下单接口地址 `http://[本机ip地址]:3000/createOrder` 替换为服务端DEMO启动的下单接口地址(或商户真实下单接口的地址)。 在开发者工具中 `编译&预览` 该小程序支付收银台DEMO,然后用头条App的 `扫一扫` 功能,扫描生成的二维码,开始体验小程序支付收银台功能。