如何创建关联订阅计划且携带自定义参数的PayPal subscription button
实现带自定义参数的PayPal订阅按钮的方法
目前有两种常用的实现方案,你可以根据你当前的按钮生成方式选择:
方案1:JS SDK动态渲染按钮(更推荐)
这是灵活性最高的方案,你可以根据当前访问用户的信息动态生成自定义参数:
- 在按钮的
createSubscription回调中添加custom_id字段,传入你需要的自定义内容,示例代码如下:
paypal.Buttons({ createSubscription: function(data, actions) { return actions.subscription.create({ 'plan_id': '你的订阅计划ID', 'custom_id': 'CustomerId=1234' // 此处填写你要透传的自定义参数,最长支持127字符 }); }, onApprove: function(data, actions) { // 订阅支付成功后可以直接拿到该参数,做后续会员开通逻辑 console.log('订阅成功,对应用户标识:', data.custom_id); } }).render('#paypal-button-container');
- 后续PayPal推送的订阅相关webhook通知中,也会携带该
custom_id字段,你解析后即可匹配对应用户完成注册。
方案2:固定嵌入按钮追加参数
如果你使用的是PayPal后台生成的静态嵌入按钮,直接在表单中新增隐藏的custom字段即可:
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top"> <input type="hidden" name="cmd" value="_s-xclick"> <input type="hidden" name="hosted_button_id" value="你后台生成的按钮ID"> <!-- 新增自定义参数字段,value替换为你要传的内容 --> <input type="hidden" name="custom" value="CustomerId=1234"> <input type="image" src="https://www.paypalobjects.com/zh_XC/i/btn/btn_subscribe_LG.gif" border="0" name="submit" alt="PayPal支付"> <img alt="" border="0" src="https://www.paypal.com/zh_XC/i/scr/pixel.gif" width="1" height="1"> </form>
注意事项
- 自定义参数总长度不要超过127字符,超出部分会被自动截断
- 如需传多个参数,你可以自行拼接成字符串(比如用&分隔,或者压缩后的JSON字符串),接收后再解析拆分即可
- 优先选择JS SDK方案,不需要提前生成多个不同参数的固定按钮,可根据登录用户动态赋值,适配性更强
内容的提问来源于stack exchange,提问作者user1343837
相关产品推荐
相关产品推荐

