如何在PayPal JavaScript结账集成沙箱环境中设置买家可见的商品标题
你只需要在createOrder方法的purchase_units配置项中补充商品相关字段,买家点击支付按钮跳转的PayPal收银台就会直接显示对应商品信息,修改后的代码示例如下:
<!--HTML 部分放置PayPal按钮容器--> <div id="paypal-button-container"></div> <script src="https://www.paypal.com/sdk/js?&client-id=[MY-CLIENT-ID-GOES-HERE]&merchant-id=[MY-MERCHANT-EMAIL-ADDRESS-GOES-HERE]¤cy=USD"></script> <script> paypal.Buttons({ style: { layout: 'vertical', color: 'gold', shape: 'pill', label: 'buynow' }, // 点击支付按钮时创建交易 createOrder: function(data, actions) { return actions.order.create({ purchase_units: [{ // 新增:订单总商品标题,买家在收银台第一眼就能看到 description: 'XX平台年度高级会员', amount: { value: 50, currency: 'USD', // 如果需要展示多商品明细,需要新增金额拆分配置,和下面的items总金额对应 breakdown: { item_total: { currency_code: 'USD', value: 50 } } }, // 新增:商品明细列表,需要展示多个商品或者更详细商品信息时加这个 items: [{ name: '高级会员年卡', description: '解锁全部高级功能,有效期12个月', unit_amount: { currency_code: 'USD', value: 50 }, quantity: 1 }] }] }); }, // 付款人批准后完成交易 onApprove: function(data, actions) { return actions.order.capture().then(function(orderData) { // 捕获成功的处理逻辑 console.log('Capture result', orderData, JSON.stringify(orderData, null, 2)); var transaction = orderData.purchase_units[0].payments.captures[0]; alert('Transaction '+ transaction.status + ': ' + transaction.id + '\n\nSee console for all available details'); // 正式环境可以替换为成功提示 // var element = document.getElementById('paypal-button-container'); // element.innerHTML = ''; // element.innerHTML = '<h3>Thank you for your payment!</h3>'; actions.redirect('https://SomeWebsiteURLiWillForwardThemTo.com'); }); } }).render('#paypal-button-container'); </script>
配置说明
- 如果只需要展示简单的总商品标题,不需要明细,只保留
purchase_units下的description字段即可,无需加items和amount.breakdown配置,代码更精简。 - 如果加了
items数组,必须同步配置amount.breakdown.item_total,且所有商品的单价×数量之和必须等于amount.value,否则PayPal接口会校验报错。
内容的提问来源于stack exchange,提问作者Aaron Esteban
相关产品推荐
相关产品推荐

