UPI Deeplink 使用说明
<h1>DeepLink深度唤起链接使用文档</h1>
<p>商户可通过DeepLink功能实现应用内直接唤起支付应用,提供更流畅的支付体验。</p>
<h4>适用范围</h4>
<ul>
<li>
<p>目前主要适用于UPI支付场景</p>
</li>
<li>支持在移动端App或Web页面中直接唤起用户已安装的UPI支付应用</li>
</ul>
<h4>使用流程</h4>
<ul>
<li>商户通过支付下单接口发起支付收款订单后,在返回结果中获取upiUrl字段值</li>
</ul>
<h4>唤起方式</h4>
<ul>
<li>
<p>移动应用内使用 :通过应用内打开DeepLink链接</p>
</li>
<li>Web页面使用 :在网页中构建支付按钮,点击后跳转至DeepLink链接</li>
</ul>
<h4>开发示例</h4>
<h5>Android应用内实现</h5>
<pre><code class="language-java">// 从支付接口返回结果中获取upiUrl
String upiUrl = ...;
// 创建Intent打开DeepLink
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(&quot;upi://&quot; + upiUrl));
// 检查是否有应用可以处理该intent
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
} else {
// 处理没有安装UPI应用的情况
Toast.makeText(context, &quot;未安装UPI支付应用&quot;, Toast.LENGTH_SHORT).show();
}</code></pre>
<h5>iOS应用内实现</h5>
<pre><code class="language-swift">// 从支付接口返回结果中获取upiUrl
let upiUrl = ...;
// 创建URL并打开
if let url = URL(string: &quot;upi://&quot; + upiUrl) {
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
// 处理没有安装UPI应用的情况
showAlert(message: &quot;未安装UPI支付应用&quot;)
}
}</code></pre>
<h5>Web页面实现</h5>
<pre><code class="language-html">&lt;button onclick=&quot;openUpiApp()&quot;&gt;使用UPI支付&lt;/button&gt;
&lt;script&gt;
function openUpiApp() {
// 从支付接口返回结果中获取upiUrl
const upiUrl = ...;
// 打开DeepLink
window.location.href = &quot;upi://&quot; + upiUrl;
// 设置超时处理,如果无法打开应用则提示用户
setTimeout(function() {
// 可以重定向到应用商店或显示其他支付选项
alert(&quot;未检测到UPI应用,请安装相关支付应用&quot;);
}, 2000);
}
&lt;/script&gt;</code></pre>
<h4>常见唤起协议列表</h4>
<table>
<thead>
<tr>
<th style="text-align: left;">应用名称</th>
<th style="text-align: left;">协议前缀</th>
<th style="text-align: left;">适用场景</th>
<th style="text-align: left;">示例</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">通用UPI</td>
<td style="text-align: left;">upi://</td>
<td style="text-align: left;">通用UPI支付协议</td>
<td style="text-align: left;">upi://pay? + upiUrl</td>
</tr>
<tr>
<td style="text-align: left;">Google Pay</td>
<td style="text-align: left;">tez://</td>
<td style="text-align: left;">Google Pay专用</td>
<td style="text-align: left;">tez://upi/pay? + upiUrl</td>
</tr>
<tr>
<td style="text-align: left;">PhonePe</td>
<td style="text-align: left;">phonepe://</td>
<td style="text-align: left;">PhonePe专用</td>
<td style="text-align: left;">phonepe://pay? + upiUrl</td>
</tr>
<tr>
<td style="text-align: left;">Paytm</td>
<td style="text-align: left;">paytm://</td>
<td style="text-align: left;">Paytm专用</td>
<td style="text-align: left;">paytmmp://pay? + upiUrl</td>
</tr>
</tbody>
</table>