首页
学习
活动
专区
圈层
工具
发布

使用REST API集成Payumoney支付网关

Payumoney支付网关REST API集成指南

基础概念

Payumoney是印度流行的支付网关,提供REST API接口供开发者集成到网站或应用中,实现安全的在线支付功能。

优势

  1. 多支付方式支持:支持信用卡、借记卡、网上银行、UPI和钱包支付
  2. 高安全性:符合PCI DSS标准,提供安全的支付环境
  3. 简单集成:清晰的API文档和多种SDK选择
  4. 分期付款:支持EMI选项
  5. 国际支付:支持多种货币结算

集成步骤

1. 注册商户账户

首先需要在Payumoney官网注册商户账户,获取以下关键信息:

  • Merchant Key
  • Merchant Salt
  • 商户ID

2. 选择集成方式

Payumoney提供两种主要集成方式:

  • 直接API集成:完全自定义前端和后端
  • 托管支付页面:使用Payumoney提供的支付页面

3. API工作流程

典型的工作流程包括:

  1. 生成支付哈希
  2. 发起支付请求
  3. 处理支付回调
  4. 验证支付响应

代码示例

生成支付哈希 (PHP示例)

代码语言:txt
复制
<?php
$MERCHANT_KEY = "YOUR_MERCHANT_KEY";
$SALT = "YOUR_MERCHANT_SALT";

$txnid = substr(hash('sha256', mt_rand() . microtime()), 0, 20);
$amount = "10.00";
$productinfo = "Test Product";
$firstname = "Test";
$email = "test@example.com";
$phone = "9876543210";

$hashSequence = "$MERCHANT_KEY|$txnid|$amount|$productinfo|$firstname|$email|||||||||||$SALT";
$hash = hash("sha512", $hashSequence);

$data = array(
    'key' => $MERCHANT_KEY,
    'txnid' => $txnid,
    'amount' => $amount,
    'productinfo' => $productinfo,
    'firstname' => $firstname,
    'email' => $email,
    'phone' => $phone,
    'surl' => 'https://yourdomain.com/success',
    'furl' => 'https://yourdomain.com/failure',
    'hash' => $hash,
    'service_provider' => 'payu_paisa'
);
?>

前端支付表单 (HTML示例)

代码语言:txt
复制
<form action="https://secure.payu.in/_payment" method="post">
    <input type="hidden" name="key" value="<?php echo $data['key']; ?>" />
    <input type="hidden" name="txnid" value="<?php echo $data['txnid']; ?>" />
    <input type="hidden" name="amount" value="<?php echo $data['amount']; ?>" />
    <input type="hidden" name="productinfo" value="<?php echo $data['productinfo']; ?>" />
    <input type="hidden" name="firstname" value="<?php echo $data['firstname']; ?>" />
    <input type="hidden" name="email" value="<?php echo $data['email']; ?>" />
    <input type="hidden" name="phone" value="<?php echo $data['phone']; ?>" />
    <input type="hidden" name="surl" value="<?php echo $data['surl']; ?>" />
    <input type="hidden" name="furl" value="<?php echo $data['furl']; ?>" />
    <input type="hidden" name="hash" value="<?php echo $data['hash']; ?>" />
    <input type="hidden" name="service_provider" value="payu_paisa" />
    <input type="submit" value="Pay Now" />
</form>

验证支付响应 (PHP示例)

代码语言:txt
复制
<?php
$status = $_POST["status"];
$firstname = $_POST["firstname"];
$amount = $_POST["amount"];
$txnid = $_POST["txnid"];
$posted_hash = $_POST["hash"];
$key = $_POST["key"];
$productinfo = $_POST["productinfo"];
$email = $_POST["email"];
$SALT = "YOUR_MERCHANT_SALT";

if(isset($_POST["additionalCharges"])) {
    $additionalCharges = $_POST["additionalCharges"];
    $retHashSeq = $additionalCharges.'|'.$SALT.'|'.$status.'|||||||||||'.$email.'|'.$firstname.'|'.$productinfo.'|'.$amount.'|'.$txnid.'|'.$key;
} else {
    $retHashSeq = $SALT.'|'.$status.'|||||||||||'.$email.'|'.$firstname.'|'.$productinfo.'|'.$amount.'|'.$txnid.'|'.$key;
}

$hash = hash("sha512", $retHashSeq);

if ($hash != $posted_hash) {
    echo "Invalid Transaction. Please try again";
} else {
    echo "<h3>Payment Details</h3>";
    echo "<p><b>Status:</b> ".$status."</p>";
    echo "<p><b>Transaction ID:</b> ".$txnid."</p>";
    echo "<p><b>Amount:</b> ".$amount."</p>";
    echo "<p><b>Name:</b> ".$firstname."</p>";
    echo "<p><b>Email:</b> ".$email."</p>";
    
    if($status == "success") {
        // 更新数据库,标记支付成功
        // 发送确认邮件等后续操作
    }
}
?>

常见问题及解决方案

1. 哈希验证失败

原因

  • 商户密钥或盐值不正确
  • 参数顺序与哈希生成顺序不匹配
  • 缺少必填参数

解决方案

  • 检查商户密钥和盐值是否正确
  • 确保哈希生成时的参数顺序与文档一致
  • 验证所有必填参数是否已包含

2. 支付成功但未收到回调

原因

  • 服务器网络问题导致回调无法到达
  • 回调URL配置错误
  • 服务器防火墙阻止了Payumoney的IP

解决方案

  • 检查surl和furl是否正确配置
  • 检查服务器日志确认是否收到请求
  • 将Payumoney的IP加入白名单

3. 交易状态不一致

原因

  • 银行或支付网络延迟
  • 用户关闭了支付页面
  • 支付过程中出现错误

解决方案

  • 实现交易状态查询API定期检查
  • 设置合理的超时机制
  • 提供客户支持渠道处理争议

最佳实践

  1. 使用HTTPS:确保所有通信都通过HTTPS进行
  2. 参数验证:服务器端验证所有传入参数
  3. 日志记录:记录所有交易请求和响应
  4. 定期对账:定期与Payumoney对账确保数据一致
  5. 错误处理:实现全面的错误处理机制
  6. 测试环境:先在沙箱环境测试所有功能

应用场景

  1. 电子商务网站:集成到购物车结账流程
  2. 订阅服务:定期自动扣款
  3. 捐赠平台:接受在线捐赠
  4. 活动注册:活动门票支付
  5. 数字内容:电子书、软件等数字产品购买

通过以上步骤和示例,您可以成功集成Payumoney支付网关到您的应用中。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的文章

领券