实现微信 委托代扣/包月服务

首先需要开通委托代扣服务 这个需要与腾讯口中的BD (类似于商务拓展服务商) 委托代扣服务 属于内测 只能通过Bd开通 (这一步不需要来考虑)
看开通后 在微信商户平台->产品中心->支付扩展工具
如图:
在这里插入图片描述
微信商户平台->交易中心->高级业务
需要在这里 新增模板 模板需要腾讯审核 大约 1-3个工作日
在这里插入图片描述
申请完模板 基本准备工作就做好了 下面就要开始对接了 (对接过程中 坑 特别多 需要自己慢慢排雷 看完这篇 应该会避免很多雷)
///
我接入的小程序 所以我以小程序为例 其他的换汤不换药 只有思路就能冲
微信官方文档链接 ------------》 传送门

特别注意几个参数 固定值 固定值 固定值 一定要看清 这是固定值 也就是不用修改的参数
微信签约小程序appid:wxbd687630cd02ce1d
打开小程序的页面路径:pages/index/index
在这里插入图片描述
然后就是组成 extraData 里的参数
在这里插入图片描述
这里坑比较多 需要特别注意
签名生成方法

		//appid  小程序id
		$data['appid'] = '';
		//商户号
		$data['mch_id'] = '';
		//模板id  就是在 微信商户中申请的id 
		$data['plan_id'] = '144444';
	    //$data['total_fee'] = 1;
		$data['contract_code'] = date('Ymd') . str_pad(mt_rand(9999999999, 9999999999999999), 5, '0', STR_PAD_LEFT);
		$data['request_serial'] = time();
		$data['contract_display_account'] = '开通会员连续包月';
		//接受成功的回调 url
	    $data['notify_url'] = '';
		$data['timestamp'] = time();
		ksort($data);
		//生成sign
		$str 	= urldecode(http_build_query($data).'&key='.$config['wechat']['key']);
		$sign 	= strtoupper(md5($str));
		$post['sign'] = $sign;
		$data['sign'] =  $post['sign'];
		//这里是 打印出xml 用于 校验是否 生成签名有问题 
	    //$xml = $this->buildXml($data);
		$data['notify_url'] = urlencode($data['notify_url']);
		//把data 返回到小程序端  对号入座就可以

小程序端代码

 	wx.navigateToMiniProgram({
          appId:'wxbd687630cd02ce1d',
          path:'pages/index/index',
          extraData:{
              appid:result.data.appid,
              contract_code:result.data.contract_code,
              contract_display_account:result.data.contract_display_account,
              mch_id:result.data.mch_id,
              notify_url:result.data.notify_url,
              plan_id:result.data.plan_id,
              request_serial:result.data.request_serial,
              timestamp:result.data.timestamp,
              sign:result.data.sign
          },
      success(res) {
          // 成功跳转到签约小程序 ]
          wx.showLoading({
            title: '拉起来',
          })
          setTimeout(function () {
            wx.hideLoading()
          }, 2000)
      },
      fail(res) {
          // 未成功跳转到签约小程序 
          wx.showLoading({
            title: '失败了',
          })
          setTimeout(function () {
            wx.hideLoading()
          }, 2000)
      },
      complete(res){
        console.log(res)
        console.log('-------------华丽的分割线--------------');
      }
      })

如果成功拉起 需要在 app.js中写回调 也就是 用户签约成功之后 要返回到当前小程序 在文档中也有
在这里插入图片描述
直接拿来用就行 如果成功 直接下单就可以
下单文档 -----》 传送门
这一步比较简单 就正常的下单 就可以 下完单 会马上扣款 不用要程序在拉起
只需要处理好 签约解约 等这些操作就行

有什么问题随时留言联系 ooooooooooooooooooooo
想到什么 我在补充吧

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wise man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值