支付宝小程序开发中遇到的问题及解决过程
<h3 id="业务需求">业务需求</h3><pre><code>使用支付宝小程序获取用户手机号
</code></pre>
<h4 id="遇到的问题">遇到的问题</h4>
<pre><code>- 和 js/java 对接接口时,遇到 php 端拿不到 POST 的数据问题
- mcrypt_decrypt() 函数的坑,解决了, 关键词 PHPAES 密钥
- 支付宝小程序:后端解密测试
- 解密成功之后得到的明文是:ISV权限不足,建议在开发者中心检查对应功能是否已经添加,解决办法详见:https://docs.open.alipay.com/common/isverror
</code></pre>
<h4 id="问题解决过程">问题解决过程</h4>
<h5 id="php-端拿不到-post-的数据问题">php 端拿不到 POST 的数据问题</h5>
<pre><code>https://www.cnblogs.com/tugenhua0707/p/8975615.html 关键点在于:HTTP请求中 request payload 和 formData区别
$this->request->input('json_decode', true); 或者 js 端请求时加上:headers:{'content-type':'application/x-www-form-urlencoded'}
</code></pre>
<h5 id="mcrypt_decrypt-函数的坑">mcrypt_decrypt() 函数的坑</h5>
<pre><code>mcrypt_decrypt() 在调用时报出了 warning:mcrypt_decrypt() Encryption mode requires an initialization vector of size 16
</code></pre>
<p>对比alipay_sdk的最新版本 AopEncrypt.php 中的解密方法decrypt($str,$screct_key),发现 $iv 只定义了但是没有用到,不知道是当时开发的人漏掉了还是?<br>
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC),1);<br>
$encrypt_str =mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_CBC);<br>
果断下载新版 alipay_sdk 拿来 AopEncrypt.php 中的解密方法decrypt($str,$screct_key) 用了。<br>
下载新版 alipay_sdk 时发生了一个小插曲,下载后的zip文件不可用,bing.com 查了一下,用 safari 下载成功了。</p>
<h5 id="isv权限不足">ISV权限不足</h5>
<pre><code>分析有可能是:在小程序管理中心没有添加「获取个人手机号」这项,但问题是添加时没有找到这项,难道只有企业账号有「获取个人手机号」这项?
</code></pre>
<p>https://opendocs.alipay.com/mini/introduce/getphonenumber 获取会员手机号,产品介绍,里面说到:目前,获取会员手机号功能仅对企业开发者开放。</p>
<p>在设置应用网关时注意:服务器对支付宝的接口地址,不用写全的,要写 https://xx.xx.cn/api</p>
<h4 id="资料清单">资料清单</h4>
<p>https://opendocs.alipay.com/mini/introduce/getphonenumber 获取会员手机号,产品介绍,里面说到:目前,获取会员手机号功能仅对企业开发者开放。<br>
https://blog.csdn.net/diandianxiyu_geek/article/details/86250490 PHP 获取用户敏感信息手机号 验签解密 RSA解密 AES解密<br>
https://www.jianshu.com/p/54a027ed96f8 这篇把PHP的AES加解密说的很细致</p><br><br>
来源:https://www.cnblogs.com/aworkstory/p/12361576.html
頁:
[1]