🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 支付宝原函数 在`AlipaySubmit.class.php` 这个文件中有一个`buildRequestForm` 方法 ![mark](http://qiniu.newthink.cc/blog/20171108-095048457.png) ## 变换函数查看源文件 >1、我们只要将 `type="hidden"` 改为 `type="text"` 2、再将`echo $sHtml;die;` 取消注释 3、或将 最后一行的 `$sHtml` 的 `dodument.forms` 注释(可选) 变换后的表单如下: 我们再次访问就得到一个表单 ![mark](http://qiniu.newthink.cc/blog/20171108-095417606.png) ## 得到的结果 ![mark](http://qiniu.newthink.cc/blog/20171108-110524227.png) ## 格式化源代码 源代码如下: ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form id='alipaysubmit' name='alipaysubmit' action='https://mapi.alipay.com/gateway.do?_input_charset='utf-8' method='get'> <input type='text' name='out_trade_no' value='1510110173'/> <input type='text' name='partner' value='2088821002087646'/> <input type='text' name='price' value='2'/> <input type='text' name='seller_email' value='sxqiboxx@163.com'/> <input type='text' name='service' value='create_direct_pay_by_user'/> <input type='text' name='subject' value='测试'/> <input type='text' name='sign' value='5792d2030d44b9f785457e7b70f3c9ec'/> <input type='text' name='sign_type' value='MD5'/> </form> <script> document.forms['alipaysubmit'].submit(); </script> </body> </html> ``` ## 新建文本并访问 注意:这个`sign`值每一次都是变化的,因此不能上述的`html`表单仅用于测试一次,不能多次。如果要调试话,还得需要在`PHP`中调试! 直接访问 ![mark](http://qiniu.newthink.cc/blog/20171108-100249336.png) 很奇怪吧,支付就这么搞定了!静态页面支付!哈哈…… ## 参数分析 ### 每一次的值都是变化的 这个`sign`值每一次都是变化的,因此不能上述的`html`表单仅用于测试一次,不能多次。如果要调试话,还得需要在`PHP`中调试! ``` <input type='text' name='sign' value='e125938b1ab8eb1844a4f247eca6d45a' /> ``` ### 分析必须元素 #### 总结 >1、提交类配置4个 2、参数数组6个 3、其中两个参数都有(parenter,seller_email) 4、提交时一共有8个参数 #### 1、支付宝各接口请求提交类 (简称:提交类配置) > 这4个是必须元素 ``` $config = [ 'partner' => '2088821002087646', // partner 从支付宝商户版个人中心获取 'seller_email' => 'sxqiboxx@163.com', // email 从支付宝商户版个人中心获取 'key' => 'n39lhfdyynkyjdifkkudzuhv8d8ljv34', // key 从支付宝商户版个人中心获取 'sign_type' => strtoupper(trim('MD5')), // 可选md5 和 RSA ]; $alipay=new \AlipaySubmit($config); ``` #### 2、生成要请求给支付宝的参数数组(简称:参数数组) > 这6个元素是必备的 ``` $data=[ //配置中的 "partner" => $config['partner'], // partner 从支付宝商户版个人中心获取 "seller_email" => $config['seller_email'], //接口名称 "service" => "create_direct_pay_by_user", // 接口名称 固定设置为create_direct_pay_by_user //自己传参的 "out_trade_no" => $order['out_trade_no'], // 订单号 "price" => $order['price'], // 订单价格单位为元 "subject" => $order['subject'] // 商品名称商品的标题/交易标题/订单标 题/订单关键字等 ]; $new=$alipay->buildRequestPara($data); ``` 注:这里的 `price` 也可以用 `total_fee` 来代替! ## 生成必须的表单 > 一共 8 个参数!必须 ! ``` <form id='alipaysubmit' name='alipaysubmit' action='https://mapi.alipay.com/gateway.do?_input_charset='utf-8' method='get'> <input type='text' name='out_trade_no' value='1510110173'/> <input type='text' name='partner' value='2088821002087646'/> <input type='text' name='price' value='2'/> <input type='text' name='seller_email' value='sxqiboxx@163.com'/> <input type='text' name='service' value='create_direct_pay_by_user'/> <input type='text' name='subject' value='测试'/> <input type='text' name='sign' value='5792d2030d44b9f785457e7b70f3c9ec'/> <input type='text' name='sign_type' value='MD5'/> </form> <script> //document.forms['alipaysubmit'].submit(); </script> ``` ## 没有哪些参数会报什么错