【笔记】特约商户微信 JSSDK 支付点金计划开发

wechat tytrock ⋅ 于 2022-02-16 16:24:52 ⋅ 1467 阅读

根据微信支付的公告,微信支付特约商户下的JSSDK支付,在支付完成后自动关闭页面,无法根据业务需要在页面里设置跳转到页面,微信的公告地址:https://pay.weixin.qq.com/index.php/public/cms/content_detail?platformType=1&lang=zh&id=121505


由此可见,需要使用微信的“点金计划”进行开发。


开发指引文档:https://wx.gtimg.com/pay/download/goldplan/goldplan_developer_guideline_v1.pdf


实例:

后端验证校验码(Laravel):

//根据微信传过来的商户订单号,获取微信支付的订单号(需要在支付后的回调讲微信支付订单号记录下来)
$transaction = Transaction::whereNo($request->out_trade_no)->first();
//设置默认验证状态不通过
$success = 0;
if(!empty($transaction)){
        //组合字符串
	$str = 'https://test.domain.com/jgoldplan?sub_mch_id='.config('wechat.payment.sub.sub_mch_id').'&out_trade_no='.$request->out_trade_no.'&transaction_id='.$transaction->wx_transaction_id;
	//对字符串进行md5加密
	$key = md5($str);
	//当md5后的字符串跟微信支付传过来的校验码一致时,验证通过
	if($key == $request->check_code){
		$success = 1;
	}
}
return view('wap.jgoldplan',compact('success','transaction'));

前端展示

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>点金计划</title>
    <meta name="author" content="http://www.doxincn.com" />
    <script type="text/javascript" charset="UTF-8" src="https://wx.gtimg.com/pay_h5/goldplan/js/jgoldplan-1.0.0.js"></script>

</head>
<body>
    @if($success == 1)
    <div style="margin: 40px auto;">
        <p><img src="{{ asset('images/suc.png') }}" style="width: 80px;" /></p>
        <h3>支付完成</h3>
        <div style="display: flex;justify-content: space-between;">
            <div id="back3" style="font-size: 20px;border:#4582fd 1px solid;color: #4582fd;height: 50px;line-height:50px;width: 100px;margin:20px auto;text-align: center;border-radius: 25px;margin-right: 20px;">返回</div>
            <div id="back2" style="font-size: 20px;background:#4582fd;color: #fff;height: 50px;line-height:50px;width: 250px;margin:20px auto;text-align: center;border-radius: 25px;">其他地址</div>
        </div>
    </div>
    @else
    <h4>请求非法</h1>
    @endif
    <script src="{{asset('js/jquery.min.js')}}"></script>
    <script type="text/javascript">
    $(document).ready(function(){
        let mchData ={action:'onIframeReady',displayStyle:'SHOW_CUSTOM_PAGE'}
        let postData = JSON. stringify(mchData)
        parent.postMessage(postData,'https://payapp.weixin.qq.com')
        
        $("#back2").click(function(){
            let mchData2 ={action:'jumpOut', jumpOutUrl:'https://test.com/url1'}
            let postData2 = JSON. stringify(mchData2)
            parent.postMessage(postData2,'https://payapp.weixin.qq.com')
        })
        
        $("#back3").click(function(){
            let mchData3 ={action:'jumpOut', jumpOutUrl:'https://test.com/url2'}
            let postData3 = JSON. stringify(mchData3)
            parent.postMessage(postData3,'https://payapp.weixin.qq.com')
        })
    });
    </script>
</body>
</html>


回复数量: 0
    暂无评论~~
    • 请注意单词拼写,以及中英文排版,参考此页
    • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
    • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
    • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
    • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
    Ctrl+Enter