Closed blair319 closed 1 year ago
同样的问题,希望阿里node的同学出来说一下
过来人说一下 我一开始也是这样操作的,也是Http请求错误,直到搜索到了这个issue #21 解决了我的疑问。 但是这个issue有一步没有说到,这里直接贴一下代码,注意是typescript格式
import { sign } from 'alipay-sdk/lib/util'
import AliPaySdk from 'alipay-sdk'
const sdk = new AliPaySdk({
appId,
privateKey,
})
// 不需要向支付宝服务器发起请求
// 而是用sign函数根据传入的参数生成签名后的数据
const data = sign('alipay.trade.app.pay', {
notifyUrl: 'https://...',
bizContent: {
subject: '商品标题',
totalAmount: '0.01',
outTradeNo: 'abc',
productCode: 'QUICK_MSECURITY_PAY',
},
}, sdk.config)
// #21 issue没有说到这一步
// 我从支付宝文档看到【参数组装】得到的启发
// https://opendocs.alipay.com/open/01dcc0#%E8%AF%B7%E6%B1%82%E7%A4%BA%E4%BE%8B
// 再把签名后的数据生成url参数格式字符串就可以用来唤起支付宝了
// 这个字符串的格式类似:a=1&b=2&c=3
const payInfo = new URLSearchParams(data).toString()
console.log('payInfo', payInfo)
// 把payInfo传给你们的App,App再使用payInfo字符串唤起支付宝App就可以了
// 亲测成功唤起支付宝,商品名称和付款金额都符合预设
过来人说一下 我一开始也是这样操作的,也是Http请求错误,直到搜索到了这个issue #21 解决了我的疑问。 但是这个issue有一步没有说到,这里直接贴一下代码,注意是typescript格式
import { sign } from 'alipay-sdk/lib/util' import AliPaySdk from 'alipay-sdk' const sdk = new AliPaySdk({ appId, privateKey, }) const data = sign('alipay.trade.app.pay', { notifyUrl: 'https://...', bizContent: { subject: '商品标题', totalAmount: '0.01', outTradeNo: 'abc', productCode: 'QUICK_MSECURITY_PAY', }, }, sdk.config) // #21 issue没有说到这一步 // 我从支付宝文档看到【参数组装】得到的启发 // https://opendocs.alipay.com/open/01dcc0#%E8%AF%B7%E6%B1%82%E7%A4%BA%E4%BE%8B const payInfo = new URLSearchParams(data).toString() console.log('payInfo', payInfo) // 把payInfo传给你们的App,App再使用payInfo字符串唤起支付宝App就可以了 // 亲测成功唤起支付宝,商品名称正确,付款金额正确
牛批!好使!
过来人说一下 我一开始也是这样操作的,也是Http请求错误,直到搜索到了这个issue #21 解决了我的疑问。 但是这个issue有一步没有说到,这里直接贴一下代码,注意是typescript格式
import { sign } from 'alipay-sdk/lib/util' import AliPaySdk from 'alipay-sdk' const sdk = new AliPaySdk({ appId, privateKey, }) // 不需要向支付宝服务器发起请求 // 而是用sign函数根据传入的参数生成签名后的数据 const data = sign('alipay.trade.app.pay', { notifyUrl: 'https://...', bizContent: { subject: '商品标题', totalAmount: '0.01', outTradeNo: 'abc', productCode: 'QUICK_MSECURITY_PAY', }, }, sdk.config) // #21 issue没有说到这一步 // 我从支付宝文档看到【参数组装】得到的启发 // https://opendocs.alipay.com/open/01dcc0#%E8%AF%B7%E6%B1%82%E7%A4%BA%E4%BE%8B // 再把签名后的数据生成url参数格式字符串�就可以用来唤起支付宝了 // 这个字符串的格式类似:a=1&b=2&c=3 const payInfo = new URLSearchParams(data).toString() console.log('payInfo', payInfo) // 把payInfo传给你们的App,App再使用payInfo字符串唤起支付宝App就可以了 // 亲测成功唤起支付宝,商品名称和付款金额都符合预设
早点加到文档里面,每个人都可以少加半天班
我们也遇到相同的问题,需要从移动网页发起支付,没有native app。所以请求官方务必解决这个问题,否则公司关于nodejs技术路线严重受阻! 求官方提供完整严谨的 移动网页支付 demo!
起步都掉不通,230 个 star 是怎么来的?这个issue 都5 个月了没解决,你们提供 sdk 不是真心想让他跑起来吗?
我是身份核验的接口调不通,裂开了nodesdk和*山一样
过来人说一下 我一开始也是这样操作的,也是Http请求错误,直到搜索到了这个issue #21 解决了我的疑问。 但是这个issue有一步没有说到,这里直接贴一下代码,注意是typescript格式
import { sign } from 'alipay-sdk/lib/util' import AliPaySdk from 'alipay-sdk' const sdk = new AliPaySdk({ appId, privateKey, }) // 不需要向支付宝服务器发起请求 // 而是用sign函数根据传入的参数生成签名后的数据 const data = sign('alipay.trade.app.pay', { notifyUrl: 'https://...', bizContent: { subject: '商品标题', totalAmount: '0.01', outTradeNo: 'abc', productCode: 'QUICK_MSECURITY_PAY', }, }, sdk.config) // #21 issue没有说到这一步 // 我从支付宝文档看到【参数组装】得到的启发 // https://opendocs.alipay.com/open/01dcc0#%E8%AF%B7%E6%B1%82%E7%A4%BA%E4%BE%8B // 再把签名后的数据生成url参数格式字符串�就可以用来唤起支付宝了 // 这个字符串的格式类似:a=1&b=2&c=3 const payInfo = new URLSearchParams(data).toString() console.log('payInfo', payInfo) // 把payInfo传给你们的App,App再使用payInfo字符串唤起支付宝App就可以了 // 亲测成功唤起支付宝,商品名称和付款金额都符合预设
早点加到文档里面,每个人都可以少加半天班
我他妈的加了2天班。。就研究这个请求签名。咋就过不去呢。。。我日日日日日日。 原来就只要服务器产生完参数和签名。就发回客户端就行了。。。。这尼玛坑踩的真踏实。。
过来人说一下 我一开始也是这样操作的,也是Http请求错误,直到搜索到了这个issue #21 解决了我的疑问。 但是这个issue有一步没有说到,这里直接贴一下代码,注意是typescript格式
import { sign } from 'alipay-sdk/lib/util' import AliPaySdk from 'alipay-sdk' const sdk = new AliPaySdk({ appId, privateKey, }) // 不需要向支付宝服务器发起请求 // 而是用sign函数根据传入的参数生成签名后的数据 const data = sign('alipay.trade.app.pay', { notifyUrl: 'https://...', bizContent: { subject: '商品标题', totalAmount: '0.01', outTradeNo: 'abc', productCode: 'QUICK_MSECURITY_PAY', }, }, sdk.config) // #21 issue没有说到这一步 // 我从支付宝文档看到【参数组装】得到的启发 // https://opendocs.alipay.com/open/01dcc0#%E8%AF%B7%E6%B1%82%E7%A4%BA%E4%BE%8B // 再把签名后的数据生成url参数格式字符串�就可以用来唤起支付宝了 // 这个字符串的格式类似:a=1&b=2&c=3 const payInfo = new URLSearchParams(data).toString() console.log('payInfo', payInfo) // 把payInfo传给你们的App,App再使用payInfo字符串唤起支付宝App就可以了 // 亲测成功唤起支付宝,商品名称和付款金额都符合预设
论文档水平的重要性。。。。。。。。官方文档辣眼睛
3.3.0+ 已经修复了这个问题,并做了文档补充。如有疑问可以在开放社区反馈,或者继续留言,感谢。
const orderStr = sdk.sdkExec('alipay.trade.app.pay', {
bizContent: {
out_trade_no: "ALIPfdf1211sdfsd12gfddsgs3",
product_code: "FAST_INSTANT_TRADE_PAY",
subject: "abc",
body: "234",
total_amount: "0.01"
},
returnUrl: 'https://www.taobao.com'
})
但是 返回 302 为什么
serverResult: { data: '', status: 302, headers: { server: 'Tengine/2.1.0', date: 'Mon, 17 Aug 2020 10:23:40 GMT', 'content-length': '0', connection: 'keep-alive', 'set-cookie': [Array], location: 'http://openapi.alipay.com/none?alipay_exterface_invoke_assign_target=invoke_82f74943ca11dcfee78f0f8d380e263b&alipay_exterface_invoke_assign_sign=_fdj_w14_a_gs_x4_t_hu4c_b_z_f_ql6_z0_rt_w_a2t_e9_cb_b_j_pfp_g_ya_mq1c_t_xf5_z_o_ig%3D%3D', via: 'spanner-internet-5403.sa127[302]' }, res: { status: 302, statusCode: 302, statusMessage: 'Found', headers: [Object], size: 0, aborted: false, rt: 393, keepAliveSocket: false, data: '', requestUrls: [Array], timing: null, remoteAddress: '110.75.244.202', remotePort: 443, socketHandledRequests: 1, socketHandledResponses: 1 } }, errorMessage: '[AlipaySdk]HTTP 请求错误' }